@@ -2,19 +2,12 @@ package yokai.core.di
22
33import android.app.Application
44import androidx.core.content.ContextCompat
5- import androidx.sqlite.driver.bundled.BundledSQLiteDriver
6- import androidx.sqlite.driver.bundled.SQLITE_OPEN_CREATE
7- import androidx.sqlite.driver.bundled.SQLITE_OPEN_READWRITE
5+ import androidx.sqlite.db.SupportSQLiteDatabase
86import app.cash.sqldelight.db.SqlDriver
7+ import app.cash.sqldelight.driver.android.AndroidSqliteDriver
98import co.touchlab.kermit.Logger
109import com.chuckerteam.chucker.api.ChuckerCollector
1110import com.chuckerteam.chucker.api.ChuckerInterceptor
12- import com.eygraber.sqldelight.androidx.driver.AndroidxSqliteConfiguration
13- import com.eygraber.sqldelight.androidx.driver.AndroidxSqliteDatabaseType
14- import com.eygraber.sqldelight.androidx.driver.AndroidxSqliteDriver
15- import com.eygraber.sqldelight.androidx.driver.File
16- import com.eygraber.sqldelight.androidx.driver.SqliteJournalMode
17- import com.eygraber.sqldelight.androidx.driver.SqliteSync
1811import eu.kanade.tachiyomi.BuildConfig
1912import eu.kanade.tachiyomi.core.storage.AndroidStorageFolderProvider
2013import eu.kanade.tachiyomi.data.cache.ChapterCache
@@ -30,6 +23,7 @@ import eu.kanade.tachiyomi.network.NetworkHelper
3023import eu.kanade.tachiyomi.source.SourceManager
3124import eu.kanade.tachiyomi.util.chapter.ChapterFilter
3225import eu.kanade.tachiyomi.util.manga.MangaShortcutManager
26+ import io.requery.android.database.sqlite.RequerySQLiteOpenHelperFactory
3327import kotlinx.serialization.json.Json
3428import kotlinx.serialization.protobuf.ProtoBuf
3529import nl.adaptivity.xmlutil.XmlDeclMode
@@ -48,23 +42,46 @@ fun appModule(app: Application) = module {
4842 single { app }
4943
5044 single<SqlDriver > {
51- AndroidxSqliteDriver (
52- createConnection = { name ->
53- BundledSQLiteDriver ().open(name, SQLITE_OPEN_READWRITE or SQLITE_OPEN_CREATE )
54- },
55- databaseType = AndroidxSqliteDatabaseType .File (app, " tachiyomi.db" ),
56- configuration = AndroidxSqliteConfiguration ().apply {
57- isForeignKeyConstraintsEnabled = true
58- journalMode = SqliteJournalMode .WAL
59- sync = SqliteSync .Normal
60- },
45+ AndroidSqliteDriver (
6146 schema = Database .Schema ,
62- onCreate = {
63- Logger .d { " Creating new database..." }
64- },
65- onUpdate = { oldVersion, newVersion ->
66- if (oldVersion < newVersion) {
67- Logger .d { " Upgrading database from $oldVersion to $newVersion " }
47+ context = app,
48+ name = " tachiyomi.db" ,
49+ // factory = if (BuildConfig.DEBUG && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
50+ // // Support database inspector in Android Studio
51+ // FrameworkSQLiteOpenHelperFactory()
52+ // } else {
53+ // RequerySQLiteOpenHelperFactory()
54+ // },
55+ factory = RequerySQLiteOpenHelperFactory (),
56+ callback = object : AndroidSqliteDriver .Callback (Database .Schema ) {
57+ override fun onOpen (db : SupportSQLiteDatabase ) {
58+ super .onOpen(db)
59+ setPragma(db, " foreign_keys = ON" )
60+ setPragma(db, " journal_mode = WAL" )
61+ setPragma(db, " synchronous = NORMAL" )
62+ }
63+
64+ private fun setPragma (db : SupportSQLiteDatabase , pragma : String ) {
65+ val cursor = db.query(" PRAGMA $pragma " )
66+ cursor.moveToFirst()
67+ cursor.close()
68+ }
69+
70+ // Not sure if this is still needed, but just in case
71+ override fun onConfigure (db : SupportSQLiteDatabase ) {
72+ db.setForeignKeyConstraintsEnabled(true )
73+ }
74+
75+ override fun onCreate (db : SupportSQLiteDatabase ) {
76+ Logger .d { " Creating new database..." }
77+ super .onCreate(db)
78+ }
79+
80+ override fun onUpgrade (db : SupportSQLiteDatabase , oldVersion : Int , newVersion : Int ) {
81+ if (oldVersion < newVersion) {
82+ Logger .d { " Upgrading database from $oldVersion to $newVersion " }
83+ super .onUpgrade(db, oldVersion, newVersion)
84+ }
6885 }
6986 },
7087 )
0 commit comments