mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-17 06:17:02 +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">
|
||||
<set>
|
||||
<option value="$PROJECT_DIR$" />
|
||||
<option value="$PROJECT_DIR$/api" />
|
||||
<option value="$PROJECT_DIR$/app" />
|
||||
<option value="$PROJECT_DIR$/buildSrc" />
|
||||
<option value="$PROJECT_DIR$/database" />
|
||||
<option value="$PROJECT_DIR$/model" />
|
||||
</set>
|
||||
</option>
|
||||
<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.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)
|
|
@ -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
|
||||
|
|
@ -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())
|
||||
}
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
||||
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<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
|
||||
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
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
rootProject.name = "Claw for lobste.rs"
|
||||
include(":app", ":database", ":model")
|
||||
include(":app", ":api", ":database")
|
||||
enableFeaturePreview("GRADLE_METADATA")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue