package com.example.shiftalarm import android.content.Context import androidx.room.Database import androidx.room.Room import androidx.room.RoomDatabase import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase @Database(entities = [ShiftOverride::class, DailyMemo::class, CustomAlarm::class, AnnualLeave::class], version = 4, exportSchema = false) abstract class AppDatabase : RoomDatabase() { abstract fun shiftDao(): ShiftDao companion object { @Volatile private var INSTANCE: AppDatabase? = null // Migration from version 3 to 4: Add AnnualLeave table private val MIGRATION_3_4 = object : Migration(3, 4) { override fun migrate(database: SupportSQLiteDatabase) { // Create AnnualLeave table database.execSQL( """ CREATE TABLE IF NOT EXISTS annual_leave ( id INTEGER PRIMARY KEY NOT NULL, totalDays REAL NOT NULL, remainingDays REAL NOT NULL, updatedAt INTEGER NOT NULL ) """.trimIndent() ) } } fun getDatabase(context: Context): AppDatabase { return INSTANCE ?: synchronized(this) { val instance = Room.databaseBuilder( context.applicationContext, AppDatabase::class.java, "shift_database" ) .addMigrations(MIGRATION_3_4) .build() INSTANCE = instance instance } } } }