package com.example.data.local import android.content.Context import androidx.room.Database import androidx.room.Room import androidx.room.RoomDatabase import com.example.data.local.dao.AuditLogDao import com.example.data.local.dao.CampaignDao import com.example.data.local.dao.CampaignRecipientDao import com.example.data.local.dao.ConsumerAccountDao import com.example.data.local.dao.ContactCategoryDao import com.example.data.local.dao.ContactDao import com.example.data.local.dao.ConversationDao import com.example.data.local.dao.LeadDao import com.example.data.local.dao.PartnerDao import com.example.data.local.dao.ProductDao import com.example.data.local.dao.SubscriptionPlanDao import com.example.data.local.dao.WhatsAppTemplateDao import com.example.data.local.entity.AuditLogEntity import com.example.data.local.entity.CampaignEntity import com.example.data.local.entity.CampaignRecipientEntity import com.example.data.local.entity.ConsumerAccountEntity import com.example.data.local.entity.ContactCategoryEntity import com.example.data.local.entity.ContactEntity import com.example.data.local.entity.ConversationMessageEntity import com.example.data.local.entity.LeadEntity import com.example.data.local.entity.PartnerEntity import com.example.data.local.entity.ProductEntity import com.example.data.local.entity.SubscriptionPlanEntity import com.example.data.local.entity.WhatsAppTemplateEntity @Database( entities = [ ConsumerAccountEntity::class, ContactCategoryEntity::class, ContactEntity::class, WhatsAppTemplateEntity::class, CampaignEntity::class, CampaignRecipientEntity::class, ProductEntity::class, LeadEntity::class, ConversationMessageEntity::class, AuditLogEntity::class, SubscriptionPlanEntity::class, PartnerEntity::class ], version = 2, exportSchema = false ) abstract class AppDatabase : RoomDatabase() { abstract fun consumerAccountDao(): ConsumerAccountDao abstract fun contactCategoryDao(): ContactCategoryDao abstract fun contactDao(): ContactDao abstract fun whatsAppTemplateDao(): WhatsAppTemplateDao abstract fun campaignDao(): CampaignDao abstract fun campaignRecipientDao(): CampaignRecipientDao abstract fun productDao(): ProductDao abstract fun leadDao(): LeadDao abstract fun conversationDao(): ConversationDao abstract fun auditLogDao(): AuditLogDao abstract fun subscriptionPlanDao(): SubscriptionPlanDao abstract fun partnerDao(): PartnerDao companion object { @Volatile private var INSTANCE: AppDatabase? = null fun getDatabase(context: Context): AppDatabase { return INSTANCE ?: synchronized(this) { val instance = Room.databaseBuilder( context.applicationContext, AppDatabase::class.java, "whatsbulk_marketing_db" ).fallbackToDestructiveMigration().build() INSTANCE = instance instance } } } }