diff --git a/data/src/main/java/org/cryptomator/data/db/DatabaseModule.kt b/data/src/main/java/org/cryptomator/data/db/DatabaseModule.kt index 261611cab..06a7bb2fd 100644 --- a/data/src/main/java/org/cryptomator/data/db/DatabaseModule.kt +++ b/data/src/main/java/org/cryptomator/data/db/DatabaseModule.kt @@ -8,7 +8,7 @@ import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase import androidx.sqlite.db.SupportSQLiteOpenHelper import androidx.sqlite.db.framework.FrameworkSQLiteOpenHelperFactory -import org.cryptomator.data.db.sqlmapping.asMapped +import org.cryptomator.data.db.SQLiteCacheControl.asCacheControlled import org.cryptomator.data.db.migrations.legacy.Upgrade0To1 import org.cryptomator.data.db.migrations.legacy.Upgrade10To11 import org.cryptomator.data.db.migrations.legacy.Upgrade11To12 @@ -51,7 +51,7 @@ class DatabaseModule { .createFromInputStream(dbTemplateStreamCallable) // .addMigrations(*migrations) // .addCallback(DatabaseCallback) // - .openHelperFactory(DatabaseOpenHelperFactory().asMapped()) // + .openHelperFactory(DatabaseOpenHelperFactory().asCacheControlled()) // .setJournalMode(RoomDatabase.JournalMode.TRUNCATE) // .build() //Fails if no migration is found (especially when downgrading) .also { // diff --git a/data/src/main/java/org/cryptomator/data/db/SQLiteCacheControl.kt b/data/src/main/java/org/cryptomator/data/db/SQLiteCacheControl.kt new file mode 100644 index 000000000..02f48da2f --- /dev/null +++ b/data/src/main/java/org/cryptomator/data/db/SQLiteCacheControl.kt @@ -0,0 +1,21 @@ +package org.cryptomator.data.db + +import androidx.sqlite.db.SupportSQLiteOpenHelper +import org.cryptomator.data.db.sqlmapping.SQLMappingFunction +import org.cryptomator.data.db.sqlmapping.asMapped +import java.util.UUID + +object SQLiteCacheControl { + + object RandomUUIDSQLMappingFunction : SQLMappingFunction { + + private val newIdentifier: String + get() = UUID.randomUUID().toString() + + override fun invoke(sql: String): String { + return "$sql -- $newIdentifier" + } + } + + fun SupportSQLiteOpenHelper.Factory.asCacheControlled(): SupportSQLiteOpenHelper.Factory = asMapped(RandomUUIDSQLMappingFunction) +} \ No newline at end of file diff --git a/data/src/main/java/org/cryptomator/data/db/sqlmapping/MappingSupportSQLiteDatabase.kt b/data/src/main/java/org/cryptomator/data/db/sqlmapping/MappingSupportSQLiteDatabase.kt index e44e67464..0eba2530c 100644 --- a/data/src/main/java/org/cryptomator/data/db/sqlmapping/MappingSupportSQLiteDatabase.kt +++ b/data/src/main/java/org/cryptomator/data/db/sqlmapping/MappingSupportSQLiteDatabase.kt @@ -9,7 +9,6 @@ import androidx.sqlite.db.SupportSQLiteOpenHelper import androidx.sqlite.db.SupportSQLiteQuery import androidx.sqlite.db.SupportSQLiteStatement import java.util.Collections -import java.util.UUID internal class MappingSupportSQLiteDatabase( private val delegate: SupportSQLiteDatabase, @@ -185,18 +184,8 @@ private class MappingSupportSQLiteOpenHelperFactory( } } -fun SupportSQLiteOpenHelper.Factory.asMapped(mappingFunction: SQLMappingFunction = RandomUUIDSQLMappingFunction): SupportSQLiteOpenHelper.Factory { +fun SupportSQLiteOpenHelper.Factory.asMapped(mappingFunction: SQLMappingFunction): SupportSQLiteOpenHelper.Factory { return MappingSupportSQLiteOpenHelperFactory(this, mappingFunction) } -interface SQLMappingFunction : (String) -> String - -object RandomUUIDSQLMappingFunction : SQLMappingFunction { - - private val newIdentifier: String - get() = UUID.randomUUID().toString() - - override fun invoke(sql: String): String { - return "$sql -- $newIdentifier" - } -} \ No newline at end of file +interface SQLMappingFunction : (String) -> String \ No newline at end of file