mirror of
https://github.com/SimpleMobileTools/Simple-Clock.git
synced 2025-04-13 01:42:06 +02:00
72 lines
2.7 KiB
Kotlin
72 lines
2.7 KiB
Kotlin
package com.simplemobiletools.clock.databases
|
|
|
|
import android.content.Context
|
|
import androidx.room.Database
|
|
import androidx.room.Room
|
|
import androidx.room.RoomDatabase
|
|
import androidx.room.TypeConverters
|
|
import androidx.room.migration.Migration
|
|
import androidx.sqlite.db.SupportSQLiteDatabase
|
|
import com.simplemobiletools.clock.extensions.config
|
|
import com.simplemobiletools.clock.helpers.Converters
|
|
import com.simplemobiletools.clock.interfaces.TimerDao
|
|
import com.simplemobiletools.clock.models.Timer
|
|
import com.simplemobiletools.clock.models.TimerState
|
|
import java.util.concurrent.Executors
|
|
|
|
@Database(entities = [Timer::class], version = 2)
|
|
@TypeConverters(Converters::class)
|
|
abstract class AppDatabase : RoomDatabase() {
|
|
|
|
abstract fun TimerDao(): TimerDao
|
|
|
|
companion object {
|
|
private var db: AppDatabase? = null
|
|
|
|
fun getInstance(context: Context): AppDatabase {
|
|
if (db == null) {
|
|
synchronized(AppDatabase::class) {
|
|
if (db == null) {
|
|
db = Room.databaseBuilder(context.applicationContext, AppDatabase::class.java, "app.db")
|
|
.fallbackToDestructiveMigration()
|
|
.addMigrations(MIGRATION_1_2)
|
|
.addCallback(object : Callback() {
|
|
override fun onCreate(db: SupportSQLiteDatabase) {
|
|
super.onCreate(db)
|
|
insertDefaultTimer(context)
|
|
}
|
|
})
|
|
.build()
|
|
}
|
|
}
|
|
}
|
|
return db!!
|
|
}
|
|
|
|
private fun insertDefaultTimer(context: Context) {
|
|
Executors.newSingleThreadScheduledExecutor().execute {
|
|
val config = context.config
|
|
db!!.TimerDao().insertOrUpdateTimer(
|
|
Timer(
|
|
id = null,
|
|
seconds = config.timerSeconds,
|
|
state = TimerState.Idle,
|
|
vibrate = config.timerVibrate,
|
|
soundUri = config.timerSoundUri,
|
|
soundTitle = config.timerSoundTitle,
|
|
label = config.timerLabel ?: "",
|
|
createdAt = System.currentTimeMillis(),
|
|
channelId = config.timerChannelId,
|
|
)
|
|
)
|
|
}
|
|
}
|
|
|
|
private val MIGRATION_1_2 = object : Migration(1, 2) {
|
|
override fun migrate(db: SupportSQLiteDatabase) {
|
|
db.execSQL("ALTER TABLE `timers` ADD COLUMN `oneShot` INTEGER NOT NULL DEFAULT 0")
|
|
}
|
|
}
|
|
}
|
|
}
|