38 lines
1.2 KiB
Kotlin
38 lines
1.2 KiB
Kotlin
|
|
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
|
||
|
|
|
||
|
|
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 }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|