| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- package com.sduduzog.slimlauncher.data
- 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 = [App::class, HomeApp::class, Note::class], version = 3, exportSchema = false)
- abstract class DataRoomDatabase : RoomDatabase() {
- abstract fun appDao(): AppDao
- abstract fun noteDao(): NoteDao
- companion object {
- @Volatile
- @JvmStatic
- private var INSTANCE: DataRoomDatabase? = null
- fun getDatabase(context: Context): DataRoomDatabase? {
- synchronized(DataRoomDatabase::class.java) {
- if (INSTANCE == null) {
- INSTANCE = Room.databaseBuilder(context.applicationContext,
- DataRoomDatabase::class.java, "app_database")
- .addCallback(object : Callback(){
- override fun onCreate(db: SupportSQLiteDatabase) {
- super.onCreate(db)
- val _db = DataRoomDatabase.getDatabase(context)!!
- val dao = _db.noteDao()
- PopulateDatabaseTask(dao).execute()
- }
- })
- .addMigrations(MIGRATION_1_2, MIGRATION_2_3)
- .build()
- }
- return INSTANCE
- }
- }
- private val MIGRATION_1_2 = object : Migration(1, 2) {
- override fun migrate(database: SupportSQLiteDatabase) {
- database.execSQL("ALTER TABLE home_apps ADD COLUMN sorting_index INTEGER NOT NULL DEFAULT 0")
- val cursor = database.query("SELECT package_name FROM home_apps")
- cursor.moveToFirst()
- var index = 0
- while (!cursor.isAfterLast) {
- val column = cursor.getString(cursor.getColumnIndex("package_name"))
- database.execSQL("UPDATE home_apps SET sorting_index=$index WHERE package_name='$column'")
- cursor.moveToNext()
- index++
- }
- }
- }
- private val MIGRATION_2_3 = object : Migration(2, 3) {
- override fun migrate(database: SupportSQLiteDatabase) {
- database.execSQL("CREATE TABLE IF NOT EXISTS `notes` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `title` TEXT, `body` TEXT NOT NULL, `edited` INTEGER NOT NULL)")
- }
- }
- }
- }
|