diff --git a/database/src/main/kotlin/dev/msfjarvis/claw/database/injection/QueriesModule.kt b/database/src/main/kotlin/dev/msfjarvis/claw/database/injection/QueriesModule.kt index 1b9dcdb2..acc5d30d 100644 --- a/database/src/main/kotlin/dev/msfjarvis/claw/database/injection/QueriesModule.kt +++ b/database/src/main/kotlin/dev/msfjarvis/claw/database/injection/QueriesModule.kt @@ -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 + } } diff --git a/database/src/main/sqldelight/dev/msfjarvis/claw/database/local/ReadPosts.sq b/database/src/main/sqldelight/dev/msfjarvis/claw/database/local/ReadPosts.sq new file mode 100644 index 00000000..f258baf3 --- /dev/null +++ b/database/src/main/sqldelight/dev/msfjarvis/claw/database/local/ReadPosts.sq @@ -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 = ?; diff --git a/database/src/main/sqldelight/migrations/5.sqm b/database/src/main/sqldelight/migrations/5.sqm new file mode 100644 index 00000000..6263faaf --- /dev/null +++ b/database/src/main/sqldelight/migrations/5.sqm @@ -0,0 +1,3 @@ +CREATE TABLE ReadPosts( + id TEXT NOT NULL PRIMARY KEY +); diff --git a/database/src/test/kotlin/dev/msfjarvis/claw/database/local/ReadPostsQueriesTest.kt b/database/src/test/kotlin/dev/msfjarvis/claw/database/local/ReadPostsQueriesTest.kt new file mode 100644 index 00000000..8b886be8 --- /dev/null +++ b/database/src/test/kotlin/dev/msfjarvis/claw/database/local/ReadPostsQueriesTest.kt @@ -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() + } +}