From db2edda3645d5f795efaf52fc74b1eefd70b77b5 Mon Sep 17 00:00:00 2001 From: JaniruTEC <52893617+JaniruTEC@users.noreply.github.com> Date: Thu, 14 Mar 2024 16:54:45 +0100 Subject: [PATCH] Reorganized cache-control to improve abstraction Moved "RandomUUIDSQLMappingFunction" from "MappingSupportSQLiteDatabase.kt" to new file "SQLiteCacheControl.kt" Added extension function "SupportSQLiteOpenHelper.Factory.asCacheControlled" in "SQLiteCacheControl.kt" as wrapper for "asMapped" with "RandomUUIDSQLMappingFunction" as mapping function Removed "RandomUUIDSQLMappingFunction" as default mapping function from extension function "SupportSQLiteOpenHelper.Factory.asMapped" in "MappingSupportSQLiteDatabase.kt" Replaced call to "asMapped" with call to "asCacheControlled" in "DatabaseModule" *This commit is related to issue #529 [1]* [1] https://github.com/cryptomator/android/issues/529 --- .../org/cryptomator/data/db/DatabaseModule.kt | 4 ++-- .../cryptomator/data/db/SQLiteCacheControl.kt | 21 +++++++++++++++++++ .../MappingSupportSQLiteDatabase.kt | 15 ++----------- 3 files changed, 25 insertions(+), 15 deletions(-) create mode 100644 data/src/main/java/org/cryptomator/data/db/SQLiteCacheControl.kt 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