mirror of
https://github.com/mihonapp/mihon.git
synced 2026-10-16 13:48:09 -07:00
Use WAL on every device
This commit is contained in:
@@ -14,7 +14,6 @@ import com.eygraber.sqldelight.androidx.driver.AndroidxSqliteConnectionFactory
|
||||
import com.eygraber.sqldelight.androidx.driver.AndroidxSqliteDatabaseType
|
||||
import com.eygraber.sqldelight.androidx.driver.AndroidxSqliteDriver
|
||||
import com.eygraber.sqldelight.androidx.driver.FileProvider
|
||||
import com.eygraber.sqldelight.androidx.driver.SqliteJournalMode
|
||||
import dev.zacsweers.metro.AppScope
|
||||
import dev.zacsweers.metro.BindingContainer
|
||||
import dev.zacsweers.metro.ContributesTo
|
||||
@@ -26,13 +25,13 @@ import dev.zacsweers.metro.SingleIn
|
||||
object DatabaseBindings {
|
||||
|
||||
/**
|
||||
* Configured like Room's connection manager: WAL unless the device is low on RAM, one writer with four
|
||||
* readers (one in TRUNCATE mode), and a busy timeout on every connection.
|
||||
* WAL on every device, so a write never blocks reads. Low-RAM devices get one reader instead of four, since each
|
||||
* connection keeps its own page cache.
|
||||
*/
|
||||
@Provides
|
||||
@SingleIn(AppScope::class)
|
||||
fun providesSqlDriver(context: Context): SqlDriver {
|
||||
val isWal = context.getSystemService<ActivityManager>()?.isLowRamDevice ?: true
|
||||
val isLowRam = context.getSystemService<ActivityManager>()?.isLowRamDevice == true
|
||||
return AndroidxSqliteDriver(
|
||||
connectionFactory = object : AndroidxSqliteConnectionFactory {
|
||||
override val driver: SQLiteDriver = BundledSQLiteDriver()
|
||||
@@ -47,8 +46,7 @@ object DatabaseBindings {
|
||||
schema = Database.Schema,
|
||||
configuration = AndroidxSqliteConfiguration(
|
||||
isForeignKeyConstraintsEnabled = true,
|
||||
journalMode = if (isWal) SqliteJournalMode.WAL else SqliteJournalMode.Truncate,
|
||||
concurrencyModel = MultipleReadersSingleWriter(isWal = isWal, nonWalCount = 1, walCount = 4),
|
||||
concurrencyModel = MultipleReadersSingleWriter(isWal = true, walCount = if (isLowRam) 1 else 4),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user