@@ -2,19 +2,12 @@ package yokai.core.di
2
2
3
3
import android.app.Application
4
4
import 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
8
6
import app.cash.sqldelight.db.SqlDriver
7
+ import app.cash.sqldelight.driver.android.AndroidSqliteDriver
9
8
import co.touchlab.kermit.Logger
10
9
import com.chuckerteam.chucker.api.ChuckerCollector
11
10
import 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
18
11
import eu.kanade.tachiyomi.BuildConfig
19
12
import eu.kanade.tachiyomi.core.storage.AndroidStorageFolderProvider
20
13
import eu.kanade.tachiyomi.data.cache.ChapterCache
@@ -30,6 +23,7 @@ import eu.kanade.tachiyomi.network.NetworkHelper
30
23
import eu.kanade.tachiyomi.source.SourceManager
31
24
import eu.kanade.tachiyomi.util.chapter.ChapterFilter
32
25
import eu.kanade.tachiyomi.util.manga.MangaShortcutManager
26
+ import io.requery.android.database.sqlite.RequerySQLiteOpenHelperFactory
33
27
import kotlinx.serialization.json.Json
34
28
import kotlinx.serialization.protobuf.ProtoBuf
35
29
import nl.adaptivity.xmlutil.XmlDeclMode
@@ -48,23 +42,46 @@ fun appModule(app: Application) = module {
48
42
single { app }
49
43
50
44
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 (
61
46
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
+ }
68
85
}
69
86
},
70
87
)
0 commit comments