all: move model classes to database, rename model to api

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
Harsh Shandilya 2020-12-17 12:30:03 +05:30
parent 62d7590501
commit b18de72bdd
No known key found for this signature in database
GPG key ID: 366D7BBAD1031E80
20 changed files with 46 additions and 34 deletions

2
.idea/gradle.xml generated
View file

@ -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" />

View file

View file

@ -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)

View file

@ -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

View file

@ -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())
}

View file

@ -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)

View file

@ -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)

View file

@ -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)
}
}

View file

@ -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 = ","
}
}

View file

@ -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
}

View file

@ -1,3 +1,3 @@
rootProject.name = "Claw for lobste.rs"
include(":app", ":database", ":model")
include(":app", ":api", ":database")
enableFeaturePreview("GRADLE_METADATA")