From 52deb7ca5f43127928f4121a74d43411f53482db Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Fri, 4 Aug 2023 00:39:53 +0530 Subject: [PATCH] Revert "feat: init store module" Store doesn't seem particularly useful for my needs. This reverts commits 14007c6e8f0a70d7e22797b1075b4792749e6a6b and 45701f414b0f309f8e88ea336301f57314d06386. --- .../claw/database/injection/DatabaseModule.kt | 7 +- .../claw/database/model/CSVAdapter.kt | 8 ++- .../claw/database/local/CachedNewestPost.sq | 31 --------- database/src/main/sqldelight/migrations/5.sqm | 14 ---- .../database/local/PostCommentsQueriesTest.kt | 5 +- .../database/local/SavedPostQueriesTest.kt | 5 +- gradle/libs.versions.toml | 2 - settings.gradle.kts | 1 - store/build.gradle.kts | 31 --------- store/lint-baseline.xml | 4 -- store/src/main/AndroidManifest.xml | 10 --- .../msfjarvis/claw/store/NewestPostsStore.kt | 68 ------------------- .../dev/msfjarvis/claw/store/utils/ext.kt | 23 ------- 13 files changed, 11 insertions(+), 198 deletions(-) delete mode 100644 database/src/main/sqldelight/dev/msfjarvis/claw/database/local/CachedNewestPost.sq delete mode 100644 database/src/main/sqldelight/migrations/5.sqm delete mode 100644 store/build.gradle.kts delete mode 100644 store/lint-baseline.xml delete mode 100644 store/src/main/AndroidManifest.xml delete mode 100644 store/src/main/kotlin/dev/msfjarvis/claw/store/NewestPostsStore.kt delete mode 100644 store/src/main/kotlin/dev/msfjarvis/claw/store/utils/ext.kt diff --git a/database/src/main/kotlin/dev/msfjarvis/claw/database/injection/DatabaseModule.kt b/database/src/main/kotlin/dev/msfjarvis/claw/database/injection/DatabaseModule.kt index 67202826..17ceb416 100644 --- a/database/src/main/kotlin/dev/msfjarvis/claw/database/injection/DatabaseModule.kt +++ b/database/src/main/kotlin/dev/msfjarvis/claw/database/injection/DatabaseModule.kt @@ -15,7 +15,6 @@ import com.squareup.anvil.annotations.ContributesTo import dagger.Module import dagger.Provides import dev.msfjarvis.claw.database.LobstersDatabase -import dev.msfjarvis.claw.database.local.CachedNewestPost import dev.msfjarvis.claw.database.local.PostComments import dev.msfjarvis.claw.database.local.SavedPost import dev.msfjarvis.claw.database.model.CSVAdapter @@ -38,10 +37,8 @@ object DatabaseModule { ) return LobstersDatabase( driver = driver, - PostCommentsAdapter = PostComments.Adapter(CSVAdapter), - SavedPostAdapter = SavedPost.Adapter(IntColumnAdapter, CSVAdapter), - CachedNewestPostAdapter = - CachedNewestPost.Adapter(IntColumnAdapter, IntColumnAdapter, CSVAdapter), + PostCommentsAdapter = PostComments.Adapter(CSVAdapter()), + SavedPostAdapter = SavedPost.Adapter(IntColumnAdapter, CSVAdapter()), ) } } diff --git a/database/src/main/kotlin/dev/msfjarvis/claw/database/model/CSVAdapter.kt b/database/src/main/kotlin/dev/msfjarvis/claw/database/model/CSVAdapter.kt index 747fe490..0488d658 100644 --- a/database/src/main/kotlin/dev/msfjarvis/claw/database/model/CSVAdapter.kt +++ b/database/src/main/kotlin/dev/msfjarvis/claw/database/model/CSVAdapter.kt @@ -8,9 +8,7 @@ package dev.msfjarvis.claw.database.model import app.cash.sqldelight.ColumnAdapter -object CSVAdapter : ColumnAdapter, String> { - private const val SEPARATOR = "," - +class CSVAdapter : ColumnAdapter, String> { override fun decode(databaseValue: String): List { return databaseValue.split(SEPARATOR) } @@ -18,4 +16,8 @@ object CSVAdapter : ColumnAdapter, String> { override fun encode(value: List): String { return value.joinToString(SEPARATOR) } + + private companion object { + private const val SEPARATOR = "," + } } diff --git a/database/src/main/sqldelight/dev/msfjarvis/claw/database/local/CachedNewestPost.sq b/database/src/main/sqldelight/dev/msfjarvis/claw/database/local/CachedNewestPost.sq deleted file mode 100644 index 7f760e2b..00000000 --- a/database/src/main/sqldelight/dev/msfjarvis/claw/database/local/CachedNewestPost.sq +++ /dev/null @@ -1,31 +0,0 @@ -import kotlin.Int; -import kotlin.String; -import kotlin.collections.List; - -CREATE TABLE IF NOT EXISTS CachedNewestPost( - pageNumber INTEGER AS Int, - shortId TEXT NOT NULL PRIMARY KEY, - title TEXT NOT NULL, - url TEXT NOT NULL, - description TEXT NOT NULL, - commentCount INTEGER AS Int, - commentsUrl TEXT NOT NULL, - tags TEXT AS List NOT NULL -); - -insertPost: -INSERT OR REPLACE -INTO CachedNewestPost -VALUES ?; - -getPage: -SELECT * -FROM CachedNewestPost -WHERE pageNumber = ?; - -clearPage: -DELETE FROM CachedNewestPost -WHERE pageNumber = ?; - -deleteAll: -DELETE FROM CachedNewestPost; diff --git a/database/src/main/sqldelight/migrations/5.sqm b/database/src/main/sqldelight/migrations/5.sqm deleted file mode 100644 index 1bef9181..00000000 --- a/database/src/main/sqldelight/migrations/5.sqm +++ /dev/null @@ -1,14 +0,0 @@ -import kotlin.Int; -import kotlin.String; -import kotlin.collections.List; - -CREATE TABLE IF NOT EXISTS CachedNewestPost( - pageNumber INTEGER AS Int, - shortId TEXT NOT NULL PRIMARY KEY, - title TEXT NOT NULL, - url TEXT NOT NULL, - description TEXT NOT NULL, - commentCount INTEGER AS Int, - commentsUrl TEXT NOT NULL, - tags TEXT AS List NOT NULL -); diff --git a/database/src/test/kotlin/dev/msfjarvis/claw/database/local/PostCommentsQueriesTest.kt b/database/src/test/kotlin/dev/msfjarvis/claw/database/local/PostCommentsQueriesTest.kt index 42a05f40..0e5a2ad3 100644 --- a/database/src/test/kotlin/dev/msfjarvis/claw/database/local/PostCommentsQueriesTest.kt +++ b/database/src/test/kotlin/dev/msfjarvis/claw/database/local/PostCommentsQueriesTest.kt @@ -25,9 +25,8 @@ class PostCommentsQueriesTest { val database = LobstersDatabase( driver, - CachedNewestPost.Adapter(IntColumnAdapter, IntColumnAdapter, CSVAdapter), - PostComments.Adapter(CSVAdapter), - SavedPost.Adapter(IntColumnAdapter, CSVAdapter), + PostComments.Adapter(CSVAdapter()), + SavedPost.Adapter(IntColumnAdapter, CSVAdapter()), ) postQueries = database.postCommentsQueries } diff --git a/database/src/test/kotlin/dev/msfjarvis/claw/database/local/SavedPostQueriesTest.kt b/database/src/test/kotlin/dev/msfjarvis/claw/database/local/SavedPostQueriesTest.kt index 5220f0aa..c0371f77 100644 --- a/database/src/test/kotlin/dev/msfjarvis/claw/database/local/SavedPostQueriesTest.kt +++ b/database/src/test/kotlin/dev/msfjarvis/claw/database/local/SavedPostQueriesTest.kt @@ -24,9 +24,8 @@ class SavedPostQueriesTest { val database = LobstersDatabase( driver, - CachedNewestPost.Adapter(IntColumnAdapter, IntColumnAdapter, CSVAdapter), - PostComments.Adapter(CSVAdapter), - SavedPost.Adapter(IntColumnAdapter, CSVAdapter), + PostComments.Adapter(CSVAdapter()), + SavedPost.Adapter(IntColumnAdapter, CSVAdapter()), ) postQueries = database.savedPostQueries } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e5511559..b0587c36 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -70,7 +70,6 @@ jsoup = "org.jsoup:jsoup:1.16.1" junit-jupiter-api = { module = "org.junit.jupiter:junit-jupiter-api", version.ref = "junit" } junit-jupiter-engine = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = "junit" } junit-legacy = "junit:junit:4.13.2" -kotlinx-atomicfu = "org.jetbrains.kotlinx:atomicfu:0.21.0" kotlinx-collections-immutable = "org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.5" kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "coroutines" } kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "coroutines" } @@ -86,7 +85,6 @@ retrofit-kotlinxSerializationConverter = "com.jakewharton.retrofit:retrofit2-kot sentry-bom = { module = "io.sentry:sentry-bom", version.ref = "sentry-sdk" } sentry-okhttp = { module = "io.sentry:sentry-android-okhttp", version.ref = "sentry-sdk" } slack-compose-lints = "com.slack.lint.compose:compose-lint-checks:1.2.0" -store5 = "org.mobilenativefoundation.store:store5:5.0.0-beta02" sqldelight-androidDriver = { module = "app.cash.sqldelight:android-driver", version.ref = "sqldelight" } sqldelight-extensions-coroutines = { module = "app.cash.sqldelight:coroutines-extensions-jvm", version.ref = "sqldelight" } sqldelight-jvmDriver = { module = "app.cash.sqldelight:sqlite-driver", version.ref = "sqldelight" } diff --git a/settings.gradle.kts b/settings.gradle.kts index 0a34988e..98c8caf5 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -153,5 +153,4 @@ include( "core", "database", "model", - "store", ) diff --git a/store/build.gradle.kts b/store/build.gradle.kts deleted file mode 100644 index 322c8c03..00000000 --- a/store/build.gradle.kts +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright © 2021-2023 Harsh Shandilya. - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - */ -@file:Suppress("UnstableApiUsage") - -plugins { - id("dev.msfjarvis.claw.android-library") - id("dev.msfjarvis.claw.kotlin-android") - alias(libs.plugins.anvil) -} - -android { namespace = "dev.msfjarvis.claw.store" } - -anvil { generateDaggerFactories.set(true) } - -dependencies { - api(projects.database) - api(projects.model) - api(projects.core) - - implementation(projects.api) - implementation(libs.dagger) - implementation(libs.javax.inject) - implementation(libs.kotlinx.atomicfu) - implementation(libs.kotlinx.coroutines.core) - implementation(libs.sqldelight.extensions.coroutines) - implementation(libs.store5) -} diff --git a/store/lint-baseline.xml b/store/lint-baseline.xml deleted file mode 100644 index 938f9bf2..00000000 --- a/store/lint-baseline.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/store/src/main/AndroidManifest.xml b/store/src/main/AndroidManifest.xml deleted file mode 100644 index 87353de8..00000000 --- a/store/src/main/AndroidManifest.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - diff --git a/store/src/main/kotlin/dev/msfjarvis/claw/store/NewestPostsStore.kt b/store/src/main/kotlin/dev/msfjarvis/claw/store/NewestPostsStore.kt deleted file mode 100644 index f6ae06f8..00000000 --- a/store/src/main/kotlin/dev/msfjarvis/claw/store/NewestPostsStore.kt +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright © 2023 Harsh Shandilya. - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - */ -package dev.msfjarvis.claw.store - -import app.cash.sqldelight.coroutines.asFlow -import app.cash.sqldelight.coroutines.mapToList -import com.slack.eithernet.ApiResult -import dev.msfjarvis.claw.api.LobstersApi -import dev.msfjarvis.claw.core.injection.DatabaseDispatcher -import dev.msfjarvis.claw.core.injection.IODispatcher -import dev.msfjarvis.claw.database.LobstersDatabase -import dev.msfjarvis.claw.database.local.CachedNewestPost -import dev.msfjarvis.claw.model.LobstersPost -import dev.msfjarvis.claw.store.utils.toCachedNewest -import java.io.IOException -import javax.inject.Inject -import kotlinx.coroutines.CoroutineDispatcher -import kotlinx.coroutines.withContext -import org.mobilenativefoundation.store.store5.Fetcher -import org.mobilenativefoundation.store.store5.SourceOfTruth -import org.mobilenativefoundation.store.store5.Store -import org.mobilenativefoundation.store.store5.StoreBuilder - -class NewestPostsStore -@Inject -constructor( - private val api: LobstersApi, - private val database: LobstersDatabase, - @IODispatcher private val ioDispatcher: CoroutineDispatcher, - @DatabaseDispatcher private val dbDispatcher: CoroutineDispatcher, -) : - Store> by StoreBuilder.from< - Int, List, List - >( - fetcher = - Fetcher.of { key -> - withContext(ioDispatcher) { - when (val result = api.getNewestPosts(key)) { - is ApiResult.Success -> result.value - is ApiResult.Failure.NetworkFailure -> throw result.error - is ApiResult.Failure.UnknownFailure -> throw result.error - is ApiResult.Failure.HttpFailure, - is ApiResult.Failure.ApiFailure -> - throw IOException("API returned an invalid response") - } - } - }, - sourceOfTruth = - SourceOfTruth.of( - reader = { page -> - database.cachedNewestPostQueries.getPage(page).asFlow().mapToList(dbDispatcher) - }, - writer = { page, items -> - database.transaction { - items - .map { it.toCachedNewest(page) } - .forEach { database.cachedNewestPostQueries.insertPost(it) } - } - }, - delete = { page -> database.cachedNewestPostQueries.clearPage(page) }, - deleteAll = { database.cachedNewestPostQueries.deleteAll() }, - ), - ) - .build() diff --git a/store/src/main/kotlin/dev/msfjarvis/claw/store/utils/ext.kt b/store/src/main/kotlin/dev/msfjarvis/claw/store/utils/ext.kt deleted file mode 100644 index 5b562bcc..00000000 --- a/store/src/main/kotlin/dev/msfjarvis/claw/store/utils/ext.kt +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright © 2023 Harsh Shandilya. - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - */ -package dev.msfjarvis.claw.store.utils - -import dev.msfjarvis.claw.database.local.CachedNewestPost -import dev.msfjarvis.claw.model.LobstersPost - -internal fun LobstersPost.toCachedNewest(page: Int): CachedNewestPost { - return CachedNewestPost( - pageNumber = page, - shortId = shortId, - title = title, - url = url, - description = description, - commentCount = commentCount, - commentsUrl = commentsUrl, - tags = tags, - ) -}