This repository has been archived on 2026-05-26. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
avh-plan-android/app/src/main/java/com/denizd/substitutionplan/database/SubstDatabase.kt
T

66 lines
2.6 KiB
Kotlin
Raw Normal View History

package com.denizd.substitutionplan.database
2019-05-26 18:40:02 +02:00
import android.content.Context
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
2019-09-04 18:46:25 +02:00
import androidx.room.migration.Migration
import androidx.sqlite.db.SupportSQLiteDatabase
import com.denizd.substitutionplan.models.Food
import com.denizd.substitutionplan.models.Substitution
2019-05-26 18:40:02 +02:00
@Database(entities = [Substitution::class, Food::class], version = 8, exportSchema = false)
internal abstract class SubstDatabase : RoomDatabase() {
2019-05-26 18:40:02 +02:00
abstract fun substDao(): SubstDao
companion object {
private var instance: SubstDatabase? = null
2019-09-04 18:46:25 +02:00
private val addTeacherColumn = object : Migration(5, 6) {
override fun migrate(database: SupportSQLiteDatabase) {
database.execSQL("ALTER TABLE subst_table ADD COLUMN teacher TEXT NOT NULL DEFAULT ''")
2019-09-04 18:46:25 +02:00
}
}
private val addTypeColumn = object : Migration(6, 7) {
override fun migrate(database: SupportSQLiteDatabase) {
database.execSQL("ALTER TABLE subst_table ADD COLUMN type TEXT NOT NULL DEFAULT ''")
}
}
private val addDatePriorityColumn = object : Migration(7, 8) {
override fun migrate(database: SupportSQLiteDatabase) {
database.execSQL("ALTER TABLE subst_table ADD COLUMN date_priority INTEGER NOT NULL DEFAULT 0")
}
}
2019-05-26 18:40:02 +02:00
fun getInstance(context: Context): SubstDatabase? {
if (instance == null) {
synchronized (SubstDatabase::class) {
instance = Room.databaseBuilder(context.applicationContext,
SubstDatabase::class.java,
"subst_database")
.addMigrations(addTeacherColumn, addTypeColumn, addDatePriorityColumn)
.fallbackToDestructiveMigration()
.build()
2019-05-26 18:40:02 +02:00
}
}
return instance
}
private var foodInstance: SubstDatabase? = null
fun getFoodInstance(context: Context): SubstDatabase? {
if (foodInstance == null) {
synchronized (SubstDatabase::class) {
foodInstance = Room.databaseBuilder(context.applicationContext,
SubstDatabase::class.java,
"food_database")
.fallbackToDestructiveMigrationFrom(5, 6)
.fallbackToDestructiveMigration()
.build()
}
}
return foodInstance
}
2019-05-26 18:40:02 +02:00
}
}