ytdlnis/app/src/main/java/com/deniscerri/ytdl/database/DBManager.kt
2025-02-15 20:09:05 +01:00

106 lines
No EOL
3.9 KiB
Kotlin

package com.deniscerri.ytdl.database
import android.content.Context
import androidx.room.AutoMigration
import androidx.room.Database
import androidx.room.DeleteTable
import androidx.room.Room
import androidx.room.RoomDatabase
import androidx.room.TypeConverters
import com.deniscerri.ytdl.database.dao.CommandTemplateDao
import com.deniscerri.ytdl.database.dao.CookieDao
import com.deniscerri.ytdl.database.dao.DownloadDao
import com.deniscerri.ytdl.database.dao.HistoryDao
import com.deniscerri.ytdl.database.dao.LogDao
import com.deniscerri.ytdl.database.dao.ObserveSourcesDao
import com.deniscerri.ytdl.database.dao.ResultDao
import com.deniscerri.ytdl.database.dao.SearchHistoryDao
import com.deniscerri.ytdl.database.dao.TerminalDao
import com.deniscerri.ytdl.database.models.CommandTemplate
import com.deniscerri.ytdl.database.models.CookieItem
import com.deniscerri.ytdl.database.models.DownloadItem
import com.deniscerri.ytdl.database.models.HistoryItem
import com.deniscerri.ytdl.database.models.LogItem
import com.deniscerri.ytdl.database.models.observeSources.ObserveSourcesItem
import com.deniscerri.ytdl.database.models.ResultItem
import com.deniscerri.ytdl.database.models.SearchHistoryItem
import com.deniscerri.ytdl.database.models.TemplateShortcut
import com.deniscerri.ytdl.database.models.TerminalItem
@TypeConverters(Converters::class)
@Database(
entities = [
ResultItem::class,
HistoryItem::class,
DownloadItem::class,
CommandTemplate::class,
SearchHistoryItem::class,
TemplateShortcut::class,
CookieItem::class,
LogItem::class,
TerminalItem::class,
ObserveSourcesItem::class
],
version = 22,
autoMigrations = [
AutoMigration (from = 1, to = 2),
AutoMigration (from = 2, to = 3),
AutoMigration (from = 3, to = 4),
AutoMigration (from = 4, to = 5),
AutoMigration (from = 5, to = 6),
AutoMigration (from = 6, to = 7),
AutoMigration (from = 7, to = 8),
AutoMigration (from = 8, to = 9),
AutoMigration (from = 9, to = 10),
AutoMigration (from = 10, to = 11),
AutoMigration (from = 11, to = 12),
AutoMigration (from = 12, to = 13),
// AutoMigration (from = 13, to = 14) MANUALLY HANDLED
AutoMigration (from = 14, to = 15),
AutoMigration (from = 15, to = 16, spec = Migrations.resetObserveSources::class),
AutoMigration (from = 16, to = 17),
AutoMigration (from = 17, to = 18),
AutoMigration (from = 18, to = 19),
AutoMigration (from = 19, to = 20),
//AutoMigration (from = 20, to = 21) MANUALLY HANDLED
//AutoMigration(from = 21, to = 22) MANUALLY HANDLED
]
)
abstract class DBManager : RoomDatabase(){
abstract val resultDao : ResultDao
abstract val historyDao : HistoryDao
abstract val downloadDao : DownloadDao
abstract val commandTemplateDao : CommandTemplateDao
abstract val searchHistoryDao: SearchHistoryDao
abstract val cookieDao: CookieDao
abstract val logDao: LogDao
abstract val terminalDao: TerminalDao
abstract val observeSourcesDao: ObserveSourcesDao
enum class SORTING{
DESC, ASC
}
companion object {
//prevents multiple instances of db getting created at the same time
@Volatile
private var instance : DBManager? = null
//if its not null return it, otherwise create db
fun getInstance(context: Context) : DBManager {
return instance ?: synchronized(this){
val dbInstance = Room.databaseBuilder(
context.applicationContext,
DBManager::class.java,
"YTDLnisDatabase"
)
.addMigrations(*Migrations.migrationList)
.build()
instance = dbInstance
dbInstance
}
}
}
}