med-det-samme/app/src/main/java/no/naiv/meddetsamme/data/MedDatabase.kt

45 lines
1.4 KiB
Kotlin
Raw Normal View History

package no.naiv.meddetsamme.data
import android.content.Context
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
/**
* exportSchema=true with schemas/ committed: this DB holds a medical record,
* so every future schema change ships as a tested Migration against the
* exported baseline never destructive fallback.
*
* Enums are stored as TEXT (Room's built-in enum converter); all other columns
* are primitives, so no TypeConverters are needed yet.
*/
@Database(
entities = [Medication::class, DoseTime::class, DoseLog::class],
version = 1,
exportSchema = true,
)
abstract class MedDatabase : RoomDatabase() {
abstract fun medicationDao(): MedicationDao
abstract fun doseTimeDao(): DoseTimeDao
abstract fun doseLogDao(): DoseLogDao
abstract fun backupDao(): BackupDao
suspend fun restoreAll(
meds: List<Medication>,
doseTimes: List<DoseTime>,
logs: List<DoseLog>,
) = backupDao().replaceAll(meds, doseTimes, logs)
companion object {
@Volatile private var instance: MedDatabase? = null
fun get(context: Context): MedDatabase =
instance ?: synchronized(this) {
instance ?: Room.databaseBuilder(
context.applicationContext,
MedDatabase::class.java,
"med-det-samme.db",
).build().also { instance = it }
}
}
}