package com.syncflow.data.db import androidx.room.Database import androidx.room.RoomDatabase import androidx.room.TypeConverters import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase import com.syncflow.data.db.entities.* @Database( entities = [ CloudAccountEntity::class, SyncPairEntity::class, SyncFileStateEntity::class, SyncConflictEntity::class, SyncEventEntity::class, ], version = 3, exportSchema = true, ) @TypeConverters(DbConverters::class) abstract class SyncDatabase : RoomDatabase() { companion object { // Wipe file states: timestamps were stored as epoch-seconds, now epoch-millis. // All previously saved states are wrong so we drop and re-learn on next sync. val MIGRATION_2_3 = object : Migration(2, 3) { override fun migrate(db: SupportSQLiteDatabase) { db.execSQL("DELETE FROM sync_file_states") } } } abstract fun cloudAccountDao(): CloudAccountDao abstract fun syncPairDao(): SyncPairDao abstract fun syncFileStateDao(): SyncFileStateDao abstract fun syncConflictDao(): SyncConflictDao abstract fun syncEventDao(): SyncEventDao }