feat(database): add support for marking posts as read

This commit is contained in:
Harsh Shandilya 2023-08-15 23:43:14 +05:30
parent 1394bc74c4
commit 9c32d6721b
No known key found for this signature in database
4 changed files with 58 additions and 0 deletions

View file

@ -12,6 +12,7 @@ import dagger.Module
import dagger.Provides
import dev.msfjarvis.claw.database.LobstersDatabase
import dev.msfjarvis.claw.database.local.PostCommentsQueries
import dev.msfjarvis.claw.database.local.ReadPostsQueries
import dev.msfjarvis.claw.database.local.SavedPostQueries
@Module
@ -29,4 +30,11 @@ object QueriesModule {
): PostCommentsQueries {
return database.postCommentsQueries
}
@Provides
fun provideReadPostsQueries(
@InternalDatabaseApi database: LobstersDatabase,
): ReadPostsQueries {
return database.readPostsQueries
}
}

View file

@ -0,0 +1,17 @@
CREATE TABLE ReadPosts(
id TEXT NOT NULL PRIMARY KEY
);
markRead:
INSERT OR REPLACE
INTO ReadPosts(id)
VALUES (?);
markUnread:
DELETE FROM ReadPosts
WHERE id = ?;
isRead:
SELECT *
FROM ReadPosts
WHERE id = ?;

View file

@ -0,0 +1,3 @@
CREATE TABLE ReadPosts(
id TEXT NOT NULL PRIMARY KEY
);

View file

@ -0,0 +1,30 @@
/*
* Copyright © 2023 Harsh Shandilya.
* Use of this source code is governed by an MIT-style
* license that can be found in the LICENSE file or at
* https://opensource.org/licenses/MIT.
*/
package dev.msfjarvis.claw.database.local
import com.google.common.truth.Truth.assertThat
import java.util.UUID
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
class ReadPostsQueriesTest {
private lateinit var postQueries: ReadPostsQueries
@BeforeEach
fun setup() {
postQueries = setupDatabase().readPostsQueries
}
@Test
fun markPostAsRead() {
val id = UUID.randomUUID().toString()
postQueries.markRead(id)
assertThat(postQueries.isRead(id).executeAsOne()).isNotNull()
postQueries.markUnread(id)
assertThat(postQueries.isRead(id).executeAsOneOrNull()).isNull()
}
}