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