mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-17 15:37:01 +05:30
database: initial commit
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
parent
fcfcbfbf92
commit
ce3dd8b7e7
13 changed files with 314 additions and 0 deletions
|
@ -0,0 +1,18 @@
|
|||
package dev.msfjarvis.lobsters.data.local
|
||||
|
||||
import com.squareup.sqldelight.db.SqlDriver
|
||||
import dev.msfjarvis.lobsters.data.model.TagsAdapter
|
||||
import dev.msfjarvis.lobsters.database.LobstersDatabase
|
||||
|
||||
internal const val LobstersDatabaseName = "SavedPosts.db"
|
||||
|
||||
expect class DriverFactory {
|
||||
fun createDriver(): SqlDriver
|
||||
}
|
||||
|
||||
private fun getTagsAdapter() = TagsAdapter()
|
||||
|
||||
fun createDatabase(driverFactory: DriverFactory): LobstersDatabase {
|
||||
val driver = driverFactory.createDriver()
|
||||
return LobstersDatabase(driver, SavedPost.Adapter(getTagsAdapter()))
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
package dev.msfjarvis.lobsters.data.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 = ","
|
||||
}
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
import kotlin.collections.List;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS SavedPost(
|
||||
shortId TEXT NOT NULL PRIMARY KEY,
|
||||
title TEXT NOT NULL,
|
||||
url TEXT NOT NULL,
|
||||
createdAt TEXT NOT NULL,
|
||||
commentsUrl TEXT NOT NULL,
|
||||
submitterName TEXT NOT NULL,
|
||||
submitterAvatarUrl TEXT NOT NULL,
|
||||
tags TEXT AS List<String> NOT NULL
|
||||
);
|
||||
|
||||
insertOrReplacePost:
|
||||
INSERT OR REPLACE
|
||||
INTO SavedPost
|
||||
VALUES ?;
|
||||
|
||||
selectAllPosts:
|
||||
SELECT *
|
||||
FROM SavedPost;
|
||||
|
||||
selectCount:
|
||||
SELECT COUNT(*)
|
||||
FROM SavedPost;
|
||||
|
||||
deleteAllPosts:
|
||||
DELETE
|
||||
FROM SavedPost;
|
||||
|
||||
deletePost:
|
||||
DELETE
|
||||
FROM SavedPost
|
||||
WHERE shortId = ?;
|
||||
|
||||
selectPost:
|
||||
SELECT *
|
||||
FROM SavedPost
|
||||
WHERE shortId = ?;
|
Loading…
Add table
Add a link
Reference in a new issue