diff --git a/data/src/main/java/mihon/data/extension/repository/ExtensionStoreRepositoryImpl.kt b/data/src/main/java/mihon/data/extension/repository/ExtensionStoreRepositoryImpl.kt index 4f63f4132..4a7bb4712 100644 --- a/data/src/main/java/mihon/data/extension/repository/ExtensionStoreRepositoryImpl.kt +++ b/data/src/main/java/mihon/data/extension/repository/ExtensionStoreRepositoryImpl.kt @@ -1,6 +1,7 @@ package mihon.data.extension.repository import app.cash.sqldelight.async.coroutines.awaitAsList +import app.cash.sqldelight.async.coroutines.awaitAsOne import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import dev.zacsweers.metro.Inject @@ -49,6 +50,9 @@ class ExtensionStoreRepositoryImpl( service.fetch(store.index_url) .mapCatching { database.transaction { + if (!database.extension_storeQueries.contains(store.index_url).awaitAsOne()) { + return@transaction + } upsert(it) if (store.index_url != it.indexUrl) { database.extension_storeQueries.delete(store.index_url) diff --git a/data/src/main/sqldelight/tachiyomi/data/extension_store.sq b/data/src/main/sqldelight/tachiyomi/data/extension_store.sq index 8f98bcf6d..b30583262 100644 --- a/data/src/main/sqldelight/tachiyomi/data/extension_store.sq +++ b/data/src/main/sqldelight/tachiyomi/data/extension_store.sq @@ -11,10 +11,8 @@ CREATE TABLE extension_store( extension_list_url TEXT ); -get: -SELECT * -FROM extension_store -WHERE index_url = :indexUrl; +contains: +SELECT EXISTS(SELECT 0 FROM extension_store WHERE index_url = :indexUrl); getAll: SELECT *