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

View file

View file

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

View file

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

View file

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

View file

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

View file

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

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

View file

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