mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-14 15:17:05 +05:30
feat(store): set up a preliminary implementation for newest posts
This commit is contained in:
parent
14007c6e8f
commit
45701f414b
11 changed files with 165 additions and 12 deletions
|
@ -15,6 +15,7 @@ import com.squareup.anvil.annotations.ContributesTo
|
|||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import dev.msfjarvis.claw.database.LobstersDatabase
|
||||
import dev.msfjarvis.claw.database.local.CachedNewestPost
|
||||
import dev.msfjarvis.claw.database.local.PostComments
|
||||
import dev.msfjarvis.claw.database.local.SavedPost
|
||||
import dev.msfjarvis.claw.database.model.CSVAdapter
|
||||
|
@ -37,8 +38,10 @@ object DatabaseModule {
|
|||
)
|
||||
return LobstersDatabase(
|
||||
driver = driver,
|
||||
PostCommentsAdapter = PostComments.Adapter(CSVAdapter()),
|
||||
SavedPostAdapter = SavedPost.Adapter(IntColumnAdapter, CSVAdapter()),
|
||||
PostCommentsAdapter = PostComments.Adapter(CSVAdapter),
|
||||
SavedPostAdapter = SavedPost.Adapter(IntColumnAdapter, CSVAdapter),
|
||||
CachedNewestPostAdapter =
|
||||
CachedNewestPost.Adapter(IntColumnAdapter, IntColumnAdapter, CSVAdapter),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,7 +8,9 @@ package dev.msfjarvis.claw.database.model
|
|||
|
||||
import app.cash.sqldelight.ColumnAdapter
|
||||
|
||||
class CSVAdapter : ColumnAdapter<List<String>, String> {
|
||||
object CSVAdapter : ColumnAdapter<List<String>, String> {
|
||||
private const val SEPARATOR = ","
|
||||
|
||||
override fun decode(databaseValue: String): List<String> {
|
||||
return databaseValue.split(SEPARATOR)
|
||||
}
|
||||
|
@ -16,8 +18,4 @@ class CSVAdapter : ColumnAdapter<List<String>, String> {
|
|||
override fun encode(value: List<String>): String {
|
||||
return value.joinToString(SEPARATOR)
|
||||
}
|
||||
|
||||
private companion object {
|
||||
private const val SEPARATOR = ","
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
import kotlin.Int;
|
||||
import kotlin.String;
|
||||
import kotlin.collections.List;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS CachedNewestPost(
|
||||
pageNumber INTEGER AS Int,
|
||||
shortId TEXT NOT NULL PRIMARY KEY,
|
||||
title TEXT NOT NULL,
|
||||
url TEXT NOT NULL,
|
||||
description TEXT NOT NULL,
|
||||
commentCount INTEGER AS Int,
|
||||
commentsUrl TEXT NOT NULL,
|
||||
tags TEXT AS List<String> NOT NULL
|
||||
);
|
||||
|
||||
insertPost:
|
||||
INSERT OR REPLACE
|
||||
INTO CachedNewestPost
|
||||
VALUES ?;
|
||||
|
||||
getPage:
|
||||
SELECT *
|
||||
FROM CachedNewestPost
|
||||
WHERE pageNumber = ?;
|
||||
|
||||
clearPage:
|
||||
DELETE FROM CachedNewestPost
|
||||
WHERE pageNumber = ?;
|
||||
|
||||
deleteAll:
|
||||
DELETE FROM CachedNewestPost;
|
14
database/src/main/sqldelight/migrations/5.sqm
Normal file
14
database/src/main/sqldelight/migrations/5.sqm
Normal file
|
@ -0,0 +1,14 @@
|
|||
import kotlin.Int;
|
||||
import kotlin.String;
|
||||
import kotlin.collections.List;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS CachedNewestPost(
|
||||
pageNumber INTEGER AS Int,
|
||||
shortId TEXT NOT NULL PRIMARY KEY,
|
||||
title TEXT NOT NULL,
|
||||
url TEXT NOT NULL,
|
||||
description TEXT NOT NULL,
|
||||
commentCount INTEGER AS Int,
|
||||
commentsUrl TEXT NOT NULL,
|
||||
tags TEXT AS List<String> NOT NULL
|
||||
);
|
|
@ -25,8 +25,9 @@ class PostCommentsQueriesTest {
|
|||
val database =
|
||||
LobstersDatabase(
|
||||
driver,
|
||||
PostComments.Adapter(CSVAdapter()),
|
||||
SavedPost.Adapter(IntColumnAdapter, CSVAdapter()),
|
||||
CachedNewestPost.Adapter(IntColumnAdapter, IntColumnAdapter, CSVAdapter),
|
||||
PostComments.Adapter(CSVAdapter),
|
||||
SavedPost.Adapter(IntColumnAdapter, CSVAdapter),
|
||||
)
|
||||
postQueries = database.postCommentsQueries
|
||||
}
|
||||
|
|
|
@ -24,8 +24,9 @@ class SavedPostQueriesTest {
|
|||
val database =
|
||||
LobstersDatabase(
|
||||
driver,
|
||||
PostComments.Adapter(CSVAdapter()),
|
||||
SavedPost.Adapter(IntColumnAdapter, CSVAdapter()),
|
||||
CachedNewestPost.Adapter(IntColumnAdapter, IntColumnAdapter, CSVAdapter),
|
||||
PostComments.Adapter(CSVAdapter),
|
||||
SavedPost.Adapter(IntColumnAdapter, CSVAdapter),
|
||||
)
|
||||
postQueries = database.savedPostQueries
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue