diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/repository/DatabaseMantraRepository.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/repository/DatabaseMantraRepository.kt index 74552762..8eafb679 100644 --- a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/repository/DatabaseMantraRepository.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/repository/DatabaseMantraRepository.kt @@ -9,6 +9,7 @@ import press.mantra.compose.database.model.MantraArtifactVersion import press.mantra.compose.database.model.MantraChapter import press.mantra.compose.database.model.MantraChunk import press.mantra.compose.database.model.MantraDialect +import press.mantra.compose.database.model.MantraProject import press.mantra.compose.database.model.MantraTranslationArtifactVersion import press.mantra.compose.database.model.MantraTranslationChapter import press.mantra.compose.database.model.MantraTranslationChunk @@ -41,6 +42,35 @@ class DatabaseMantraRepository( override suspend fun getChaptersForArtifactVersion(artifactVersionId: String): List = database.mantraChapterDao().getChaptersByArtifactVersionId(artifactVersionId) + override suspend fun getProjects(chatRoomId: String): List = + database.mantraProjectDao().getProjectsByChatRoomId(chatRoomId) + + override suspend fun getProject(id: String): MantraProject? = + database.mantraProjectDao().getProjectById(id) + + override suspend fun getProjectArtifactVersions( + projectId: String + ): List = + database.mantraProjectArtifactVersionDao().getArtifactVersionsByProjectId(projectId) + + override suspend fun getProjectTranslationArtifactVersions( + projectId: String + ): List = + database.mantraProjectTranslationArtifactVersionDao() + .getTranslationArtifactVersionsByProjectId(projectId) + + override suspend fun getProjectsForArtifactVersion( + artifactVersionId: String + ): List = + database.mantraProjectArtifactVersionDao() + .getProjectsByArtifactVersionId(artifactVersionId) + + override suspend fun getProjectsForTranslationArtifactVersion( + translationArtifactVersionId: String + ): List = + database.mantraProjectTranslationArtifactVersionDao() + .getProjectsByTranslationArtifactVersionId(translationArtifactVersionId) + override suspend fun getChapter(id: String): MantraChapter? = database.mantraChapterDao().getChapterById(id) diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/repository/MantraRepository.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/repository/MantraRepository.kt index 677998d6..3d197ad5 100644 --- a/composeApp/src/commonMain/kotlin/press/mantra/compose/repository/MantraRepository.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/repository/MantraRepository.kt @@ -6,6 +6,7 @@ import press.mantra.compose.database.model.MantraArtifactVersion import press.mantra.compose.database.model.MantraChapter import press.mantra.compose.database.model.MantraChunk import press.mantra.compose.database.model.MantraDialect +import press.mantra.compose.database.model.MantraProject import press.mantra.compose.database.model.MantraTranslationArtifactVersion import press.mantra.compose.database.model.MantraTranslationChapter import press.mantra.compose.database.model.MantraTranslationChunk @@ -56,6 +57,31 @@ interface MantraRepository { suspend fun getDialect(id: String): MantraDialect? + suspend fun getProjects(chatRoomId: String): List + + suspend fun getProject(id: String): MantraProject? + + /** + * The source versions a project is translating from. + * + * The versions, not the join rows: no screen wants a join row, and resolving + * it here is one indexed query instead of an N+1 in a view model. + */ + suspend fun getProjectArtifactVersions(projectId: String): List + + /** The translations a project is producing. */ + suspend fun getProjectTranslationArtifactVersions( + projectId: String + ): List + + /** The inverse: which projects a source version is part of. */ + suspend fun getProjectsForArtifactVersion(artifactVersionId: String): List + + /** The inverse again, for a translation. */ + suspend fun getProjectsForTranslationArtifactVersion( + translationArtifactVersionId: String + ): List + suspend fun addArtifactVersion( localChatRoom: LocalChatRoom, artifactId: HexKey, @@ -102,6 +128,26 @@ interface MantraRepository { override suspend fun getDialect(id: String): MantraDialect? = null + override suspend fun getProjects(chatRoomId: String): List = emptyList() + + override suspend fun getProject(id: String): MantraProject? = null + + override suspend fun getProjectArtifactVersions( + projectId: String + ): List = emptyList() + + override suspend fun getProjectTranslationArtifactVersions( + projectId: String + ): List = emptyList() + + override suspend fun getProjectsForArtifactVersion( + artifactVersionId: String + ): List = emptyList() + + override suspend fun getProjectsForTranslationArtifactVersion( + translationArtifactVersionId: String + ): List = emptyList() + override suspend fun addArtifactVersion( localChatRoom: LocalChatRoom, artifactId: HexKey,