diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 3565de57..43062b2a 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -11,10 +11,10 @@
diff --git a/model/.gitignore b/api/.gitignore
similarity index 100%
rename from model/.gitignore
rename to api/.gitignore
diff --git a/model/build.gradle.kts b/api/build.gradle.kts
similarity index 91%
rename from model/build.gradle.kts
rename to api/build.gradle.kts
index a63ae76d..74a5a920 100644
--- a/model/build.gradle.kts
+++ b/api/build.gradle.kts
@@ -9,8 +9,8 @@ dependencies {
kapt(Dependencies.AndroidX.Hilt.daggerCompiler)
kapt(Dependencies.ThirdParty.Moshi.codegen)
api(Dependencies.ThirdParty.Retrofit.lib)
+ implementation(project(":database"))
implementation(Dependencies.AndroidX.Hilt.dagger)
- implementation(Dependencies.ThirdParty.Moshi.lib)
implementation(Dependencies.ThirdParty.Retrofit.moshi)
testImplementation(Dependencies.Kotlin.Coroutines.core)
testImplementation(Dependencies.Testing.junit)
diff --git a/model/src/main/AndroidManifest.xml b/api/src/main/AndroidManifest.xml
similarity index 100%
rename from model/src/main/AndroidManifest.xml
rename to api/src/main/AndroidManifest.xml
diff --git a/model/src/main/java/dev/msfjarvis/lobsters/data/api/LobstersApi.kt b/api/src/main/java/dev/msfjarvis/lobsters/data/api/LobstersApi.kt
similarity index 86%
rename from model/src/main/java/dev/msfjarvis/lobsters/data/api/LobstersApi.kt
rename to api/src/main/java/dev/msfjarvis/lobsters/data/api/LobstersApi.kt
index b924fb3f..9e2f4cff 100644
--- a/model/src/main/java/dev/msfjarvis/lobsters/data/api/LobstersApi.kt
+++ b/api/src/main/java/dev/msfjarvis/lobsters/data/api/LobstersApi.kt
@@ -1,6 +1,6 @@
package dev.msfjarvis.lobsters.data.api
-import dev.msfjarvis.lobsters.model.LobstersPost
+import dev.msfjarvis.lobsters.data.local.LobstersPost
import retrofit2.http.GET
import retrofit2.http.Query
diff --git a/model/src/main/java/dev/msfjarvis/lobsters/injection/ApiModule.kt b/api/src/main/java/dev/msfjarvis/lobsters/injection/ApiModule.kt
similarity index 100%
rename from model/src/main/java/dev/msfjarvis/lobsters/injection/ApiModule.kt
rename to api/src/main/java/dev/msfjarvis/lobsters/injection/ApiModule.kt
diff --git a/model/src/main/java/dev/msfjarvis/lobsters/injection/BaseUrlQualifier.kt b/api/src/main/java/dev/msfjarvis/lobsters/injection/BaseUrlQualifier.kt
similarity index 100%
rename from model/src/main/java/dev/msfjarvis/lobsters/injection/BaseUrlQualifier.kt
rename to api/src/main/java/dev/msfjarvis/lobsters/injection/BaseUrlQualifier.kt
diff --git a/model/src/main/java/dev/msfjarvis/lobsters/injection/MoshiModule.kt b/api/src/main/java/dev/msfjarvis/lobsters/injection/MoshiModule.kt
similarity index 100%
rename from model/src/main/java/dev/msfjarvis/lobsters/injection/MoshiModule.kt
rename to api/src/main/java/dev/msfjarvis/lobsters/injection/MoshiModule.kt
diff --git a/model/src/test/java/dev/msfjarvis/lobsters/data/api/LobstersApiTest.kt b/api/src/test/java/dev/msfjarvis/lobsters/data/api/LobstersApiTest.kt
similarity index 97%
rename from model/src/test/java/dev/msfjarvis/lobsters/data/api/LobstersApiTest.kt
rename to api/src/test/java/dev/msfjarvis/lobsters/data/api/LobstersApiTest.kt
index 3f5f9e91..77c9764b 100644
--- a/model/src/test/java/dev/msfjarvis/lobsters/data/api/LobstersApiTest.kt
+++ b/api/src/test/java/dev/msfjarvis/lobsters/data/api/LobstersApiTest.kt
@@ -55,7 +55,7 @@ class LobstersApiTest {
fun `no moderator posts in test data`() = runBlocking {
val posts = apiClient.getHottestPosts(1)
val moderatorPosts = posts.asSequence()
- .filter { it.submitterUser.isModerator }
+ .filter { it.submitter_user.isModerator }
.toSet()
assertTrue(moderatorPosts.isEmpty())
}
diff --git a/model/src/test/java/dev/msfjarvis/lobsters/util/TestUtils.kt b/api/src/test/java/dev/msfjarvis/lobsters/util/TestUtils.kt
similarity index 100%
rename from model/src/test/java/dev/msfjarvis/lobsters/util/TestUtils.kt
rename to api/src/test/java/dev/msfjarvis/lobsters/util/TestUtils.kt
diff --git a/model/src/test/resources/hottest.json b/api/src/test/resources/hottest.json
similarity index 100%
rename from model/src/test/resources/hottest.json
rename to api/src/test/resources/hottest.json
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 7b5b25db..d165467b 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -2,7 +2,6 @@ plugins {
id("com.android.application")
kotlin("android")
kotlin("kapt")
- kotlin("plugin.serialization") version "1.4.21"
id("dagger.hilt.android.plugin")
`versioning-plugin`
`lobsters-plugin`
@@ -25,7 +24,8 @@ android {
dependencies {
kapt(Dependencies.AndroidX.Hilt.daggerCompiler)
- implementation(project(":model"))
+ implementation(project(":api"))
+ implementation(project(":database"))
implementation(Dependencies.AndroidX.appCompat)
implementation(Dependencies.AndroidX.browser)
implementation(Dependencies.AndroidX.Compose.compiler)
diff --git a/database/build.gradle.kts b/database/build.gradle.kts
index 986d29d4..cba5e712 100644
--- a/database/build.gradle.kts
+++ b/database/build.gradle.kts
@@ -1,12 +1,13 @@
plugins {
id("com.android.library")
kotlin("android")
+ kotlin("kapt")
id("com.squareup.sqldelight")
`lobsters-plugin`
}
dependencies {
- implementation(project(":model"))
+ kapt(Dependencies.ThirdParty.Moshi.codegen)
implementation(Dependencies.ThirdParty.Moshi.lib)
testImplementation(Dependencies.Kotlin.Coroutines.core)
testImplementation(Dependencies.ThirdParty.SQLDelight.jvmDriver)
diff --git a/model/src/main/java/dev/msfjarvis/lobsters/model/KeybaseSignature.kt b/database/src/main/java/dev/msfjarvis/lobsters/model/KeybaseSignature.kt
similarity index 100%
rename from model/src/main/java/dev/msfjarvis/lobsters/model/KeybaseSignature.kt
rename to database/src/main/java/dev/msfjarvis/lobsters/model/KeybaseSignature.kt
diff --git a/model/src/main/java/dev/msfjarvis/lobsters/model/LobstersPost.kt b/database/src/main/java/dev/msfjarvis/lobsters/model/LobstersPost.kt
similarity index 100%
rename from model/src/main/java/dev/msfjarvis/lobsters/model/LobstersPost.kt
rename to database/src/main/java/dev/msfjarvis/lobsters/model/LobstersPost.kt
diff --git a/model/src/main/java/dev/msfjarvis/lobsters/model/Submitter.kt b/database/src/main/java/dev/msfjarvis/lobsters/model/Submitter.kt
similarity index 100%
rename from model/src/main/java/dev/msfjarvis/lobsters/model/Submitter.kt
rename to database/src/main/java/dev/msfjarvis/lobsters/model/Submitter.kt
diff --git a/database/src/main/java/dev/msfjarvis/lobsters/model/SubmitterAdapter.kt b/database/src/main/java/dev/msfjarvis/lobsters/model/SubmitterAdapter.kt
new file mode 100644
index 00000000..568d7d70
--- /dev/null
+++ b/database/src/main/java/dev/msfjarvis/lobsters/model/SubmitterAdapter.kt
@@ -0,0 +1,17 @@
+package dev.msfjarvis.lobsters.model
+
+import com.squareup.moshi.Moshi
+import com.squareup.sqldelight.ColumnAdapter
+
+class SubmitterAdapter : ColumnAdapter {
+ private val moshi = Moshi.Builder().build()
+ private val submitterJsonAdapter = SubmitterJsonAdapter(moshi)
+
+ override fun decode(databaseValue: String): Submitter {
+ return submitterJsonAdapter.fromJson(databaseValue)!!
+ }
+
+ override fun encode(value: Submitter): String {
+ return submitterJsonAdapter.toJson(value)
+ }
+}
diff --git a/database/src/main/java/dev/msfjarvis/lobsters/model/TagsAdapter.kt b/database/src/main/java/dev/msfjarvis/lobsters/model/TagsAdapter.kt
new file mode 100644
index 00000000..a4a04588
--- /dev/null
+++ b/database/src/main/java/dev/msfjarvis/lobsters/model/TagsAdapter.kt
@@ -0,0 +1,17 @@
+package dev.msfjarvis.lobsters.model
+
+import com.squareup.sqldelight.ColumnAdapter
+
+class TagsAdapter : ColumnAdapter, String> {
+ override fun decode(databaseValue: String): List {
+ return databaseValue.split(SEPARATOR)
+ }
+
+ override fun encode(value: List): String {
+ return value.joinToString(SEPARATOR)
+ }
+
+ private companion object {
+ private const val SEPARATOR = ","
+ }
+}
diff --git a/database/src/test/java/dev/msfjarvis/lobsters/data/local/SqlDelightQueriesTest.kt b/database/src/test/java/dev/msfjarvis/lobsters/data/local/SqlDelightQueriesTest.kt
index f191a3c0..502ee27a 100644
--- a/database/src/test/java/dev/msfjarvis/lobsters/data/local/SqlDelightQueriesTest.kt
+++ b/database/src/test/java/dev/msfjarvis/lobsters/data/local/SqlDelightQueriesTest.kt
@@ -1,12 +1,10 @@
package dev.msfjarvis.lobsters.data.local
-import com.squareup.moshi.Moshi
-import com.squareup.sqldelight.ColumnAdapter
import com.squareup.sqldelight.sqlite.driver.JdbcSqliteDriver
import dev.msfjarvis.lobsters.database.LobstersDatabase
-
import dev.msfjarvis.lobsters.model.Submitter
-import dev.msfjarvis.lobsters.model.SubmitterJsonAdapter
+import dev.msfjarvis.lobsters.model.SubmitterAdapter
+import dev.msfjarvis.lobsters.model.TagsAdapter
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertEquals
import org.junit.Before
@@ -14,27 +12,7 @@ import org.junit.Test
class SqlDelightQueriesTest {
- private val moshi = Moshi.Builder().build()
- private val submitterJsonAdapter = SubmitterJsonAdapter(moshi)
private lateinit var postQueries: PostQueries
- private val submitterAdapter = object : ColumnAdapter {
- override fun decode(databaseValue: String): Submitter {
- return submitterJsonAdapter.fromJson(databaseValue)!!
- }
-
- override fun encode(value: Submitter): String {
- return submitterJsonAdapter.toJson(value)
- }
- }
- private val tagsAdapter = object : ColumnAdapter, String> {
- override fun decode(databaseValue: String): List {
- return databaseValue.split(",")
- }
-
- override fun encode(value: List): String {
- return value.joinToString(",")
- }
- }
@Before
fun setUp() {
@@ -42,9 +20,8 @@ class SqlDelightQueriesTest {
LobstersDatabase.Schema.create(driver)
val database = LobstersDatabase(
driver,
- LobstersPost.Adapter(submitterAdapter, tagsAdapter)
+ LobstersPost.Adapter(SubmitterAdapter(), TagsAdapter())
)
-
postQueries = database.postQueries
}
diff --git a/settings.gradle.kts b/settings.gradle.kts
index f1aa85fd..2b269640 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -1,3 +1,3 @@
rootProject.name = "Claw for lobste.rs"
-include(":app", ":database", ":model")
+include(":app", ":api", ":database")
enableFeaturePreview("GRADLE_METADATA")