106 lines
No EOL
3.9 KiB
Kotlin
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
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
} |