mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-17 22:37:03 +05:30
all: move model classes to database, rename model to api
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
parent
62d7590501
commit
b18de72bdd
20 changed files with 46 additions and 34 deletions
2
.idea/gradle.xml
generated
2
.idea/gradle.xml
generated
|
@ -11,10 +11,10 @@
|
||||||
<option name="modules">
|
<option name="modules">
|
||||||
<set>
|
<set>
|
||||||
<option value="$PROJECT_DIR$" />
|
<option value="$PROJECT_DIR$" />
|
||||||
|
<option value="$PROJECT_DIR$/api" />
|
||||||
<option value="$PROJECT_DIR$/app" />
|
<option value="$PROJECT_DIR$/app" />
|
||||||
<option value="$PROJECT_DIR$/buildSrc" />
|
<option value="$PROJECT_DIR$/buildSrc" />
|
||||||
<option value="$PROJECT_DIR$/database" />
|
<option value="$PROJECT_DIR$/database" />
|
||||||
<option value="$PROJECT_DIR$/model" />
|
|
||||||
</set>
|
</set>
|
||||||
</option>
|
</option>
|
||||||
<option name="resolveModulePerSourceSet" value="false" />
|
<option name="resolveModulePerSourceSet" value="false" />
|
||||||
|
|
0
model/.gitignore → api/.gitignore
vendored
0
model/.gitignore → api/.gitignore
vendored
|
@ -9,8 +9,8 @@ dependencies {
|
||||||
kapt(Dependencies.AndroidX.Hilt.daggerCompiler)
|
kapt(Dependencies.AndroidX.Hilt.daggerCompiler)
|
||||||
kapt(Dependencies.ThirdParty.Moshi.codegen)
|
kapt(Dependencies.ThirdParty.Moshi.codegen)
|
||||||
api(Dependencies.ThirdParty.Retrofit.lib)
|
api(Dependencies.ThirdParty.Retrofit.lib)
|
||||||
|
implementation(project(":database"))
|
||||||
implementation(Dependencies.AndroidX.Hilt.dagger)
|
implementation(Dependencies.AndroidX.Hilt.dagger)
|
||||||
implementation(Dependencies.ThirdParty.Moshi.lib)
|
|
||||||
implementation(Dependencies.ThirdParty.Retrofit.moshi)
|
implementation(Dependencies.ThirdParty.Retrofit.moshi)
|
||||||
testImplementation(Dependencies.Kotlin.Coroutines.core)
|
testImplementation(Dependencies.Kotlin.Coroutines.core)
|
||||||
testImplementation(Dependencies.Testing.junit)
|
testImplementation(Dependencies.Testing.junit)
|
|
@ -1,6 +1,6 @@
|
||||||
package dev.msfjarvis.lobsters.data.api
|
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.GET
|
||||||
import retrofit2.http.Query
|
import retrofit2.http.Query
|
||||||
|
|
|
@ -55,7 +55,7 @@ class LobstersApiTest {
|
||||||
fun `no moderator posts in test data`() = runBlocking {
|
fun `no moderator posts in test data`() = runBlocking {
|
||||||
val posts = apiClient.getHottestPosts(1)
|
val posts = apiClient.getHottestPosts(1)
|
||||||
val moderatorPosts = posts.asSequence()
|
val moderatorPosts = posts.asSequence()
|
||||||
.filter { it.submitterUser.isModerator }
|
.filter { it.submitter_user.isModerator }
|
||||||
.toSet()
|
.toSet()
|
||||||
assertTrue(moderatorPosts.isEmpty())
|
assertTrue(moderatorPosts.isEmpty())
|
||||||
}
|
}
|
|
@ -2,7 +2,6 @@ plugins {
|
||||||
id("com.android.application")
|
id("com.android.application")
|
||||||
kotlin("android")
|
kotlin("android")
|
||||||
kotlin("kapt")
|
kotlin("kapt")
|
||||||
kotlin("plugin.serialization") version "1.4.21"
|
|
||||||
id("dagger.hilt.android.plugin")
|
id("dagger.hilt.android.plugin")
|
||||||
`versioning-plugin`
|
`versioning-plugin`
|
||||||
`lobsters-plugin`
|
`lobsters-plugin`
|
||||||
|
@ -25,7 +24,8 @@ android {
|
||||||
dependencies {
|
dependencies {
|
||||||
|
|
||||||
kapt(Dependencies.AndroidX.Hilt.daggerCompiler)
|
kapt(Dependencies.AndroidX.Hilt.daggerCompiler)
|
||||||
implementation(project(":model"))
|
implementation(project(":api"))
|
||||||
|
implementation(project(":database"))
|
||||||
implementation(Dependencies.AndroidX.appCompat)
|
implementation(Dependencies.AndroidX.appCompat)
|
||||||
implementation(Dependencies.AndroidX.browser)
|
implementation(Dependencies.AndroidX.browser)
|
||||||
implementation(Dependencies.AndroidX.Compose.compiler)
|
implementation(Dependencies.AndroidX.Compose.compiler)
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
plugins {
|
plugins {
|
||||||
id("com.android.library")
|
id("com.android.library")
|
||||||
kotlin("android")
|
kotlin("android")
|
||||||
|
kotlin("kapt")
|
||||||
id("com.squareup.sqldelight")
|
id("com.squareup.sqldelight")
|
||||||
`lobsters-plugin`
|
`lobsters-plugin`
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation(project(":model"))
|
kapt(Dependencies.ThirdParty.Moshi.codegen)
|
||||||
implementation(Dependencies.ThirdParty.Moshi.lib)
|
implementation(Dependencies.ThirdParty.Moshi.lib)
|
||||||
testImplementation(Dependencies.Kotlin.Coroutines.core)
|
testImplementation(Dependencies.Kotlin.Coroutines.core)
|
||||||
testImplementation(Dependencies.ThirdParty.SQLDelight.jvmDriver)
|
testImplementation(Dependencies.ThirdParty.SQLDelight.jvmDriver)
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
package dev.msfjarvis.lobsters.model
|
||||||
|
|
||||||
|
import com.squareup.moshi.Moshi
|
||||||
|
import com.squareup.sqldelight.ColumnAdapter
|
||||||
|
|
||||||
|
class SubmitterAdapter : ColumnAdapter<Submitter, String> {
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
package dev.msfjarvis.lobsters.model
|
||||||
|
|
||||||
|
import com.squareup.sqldelight.ColumnAdapter
|
||||||
|
|
||||||
|
class TagsAdapter : ColumnAdapter<List<String>, String> {
|
||||||
|
override fun decode(databaseValue: String): List<String> {
|
||||||
|
return databaseValue.split(SEPARATOR)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun encode(value: List<String>): String {
|
||||||
|
return value.joinToString(SEPARATOR)
|
||||||
|
}
|
||||||
|
|
||||||
|
private companion object {
|
||||||
|
private const val SEPARATOR = ","
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,12 +1,10 @@
|
||||||
package dev.msfjarvis.lobsters.data.local
|
package dev.msfjarvis.lobsters.data.local
|
||||||
|
|
||||||
import com.squareup.moshi.Moshi
|
|
||||||
import com.squareup.sqldelight.ColumnAdapter
|
|
||||||
import com.squareup.sqldelight.sqlite.driver.JdbcSqliteDriver
|
import com.squareup.sqldelight.sqlite.driver.JdbcSqliteDriver
|
||||||
import dev.msfjarvis.lobsters.database.LobstersDatabase
|
import dev.msfjarvis.lobsters.database.LobstersDatabase
|
||||||
|
|
||||||
import dev.msfjarvis.lobsters.model.Submitter
|
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 kotlinx.coroutines.runBlocking
|
||||||
import org.junit.Assert.assertEquals
|
import org.junit.Assert.assertEquals
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
|
@ -14,27 +12,7 @@ import org.junit.Test
|
||||||
|
|
||||||
class SqlDelightQueriesTest {
|
class SqlDelightQueriesTest {
|
||||||
|
|
||||||
private val moshi = Moshi.Builder().build()
|
|
||||||
private val submitterJsonAdapter = SubmitterJsonAdapter(moshi)
|
|
||||||
private lateinit var postQueries: PostQueries
|
private lateinit var postQueries: PostQueries
|
||||||
private val submitterAdapter = object : ColumnAdapter<Submitter, String> {
|
|
||||||
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<List<String>, String> {
|
|
||||||
override fun decode(databaseValue: String): List<String> {
|
|
||||||
return databaseValue.split(",")
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun encode(value: List<String>): String {
|
|
||||||
return value.joinToString(",")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
|
@ -42,9 +20,8 @@ class SqlDelightQueriesTest {
|
||||||
LobstersDatabase.Schema.create(driver)
|
LobstersDatabase.Schema.create(driver)
|
||||||
val database = LobstersDatabase(
|
val database = LobstersDatabase(
|
||||||
driver,
|
driver,
|
||||||
LobstersPost.Adapter(submitterAdapter, tagsAdapter)
|
LobstersPost.Adapter(SubmitterAdapter(), TagsAdapter())
|
||||||
)
|
)
|
||||||
|
|
||||||
postQueries = database.postQueries
|
postQueries = database.postQueries
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
rootProject.name = "Claw for lobste.rs"
|
rootProject.name = "Claw for lobste.rs"
|
||||||
include(":app", ":database", ":model")
|
include(":app", ":api", ":database")
|
||||||
enableFeaturePreview("GRADLE_METADATA")
|
enableFeaturePreview("GRADLE_METADATA")
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue