From 9cd06f3b40aef1be14aa92b72711cb3c40688b01 Mon Sep 17 00:00:00 2001 From: Kgothatso Ngako Date: Sun, 19 Jul 2026 02:47:47 +0200 Subject: [PATCH] Add associations --- .../database/model/MantraArtifactVersion.kt | 12 +++++++++++- .../compose/database/model/MantraChapter.kt | 12 +++++++++++- .../compose/database/model/MantraChunk.kt | 12 +++++++++++- .../database/model/MantraTranslation.kt | 18 +++++++++++++++++- .../model/MantraTranslationArtifactVersion.kt | 12 +++++++++++- ...traTranslationArtifactVersionContributor.kt | 12 +++++++++++- .../database/model/MantraTranslationChapter.kt | 12 +++++++++++- .../MantraTranslationChapterContributor.kt | 14 ++++++++++++-- .../database/model/MantraTranslationChunk.kt | 18 +++++++++++++++++- .../model/MantraTranslationContributor.kt | 12 +++++++++++- 10 files changed, 123 insertions(+), 11 deletions(-) diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraArtifactVersion.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraArtifactVersion.kt index e3354ff8..c9f24107 100644 --- a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraArtifactVersion.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraArtifactVersion.kt @@ -1,6 +1,7 @@ package press.mantra.compose.database.model import androidx.room3.Entity +import androidx.room3.ForeignKey import androidx.room3.PrimaryKey import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder @@ -14,7 +15,16 @@ import kotlin.time.Instant /** * 30301 */ -@Entity +@Entity( + foreignKeys = [ + ForeignKey( + entity = MantraArtifact::class, + parentColumns = ["id"], + childColumns = ["artifactId"], + onDelete = ForeignKey.CASCADE, + ), + ], +) data class MantraArtifactVersion( @PrimaryKey val id: HexKey, diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraChapter.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraChapter.kt index b37f6cab..1bce85c9 100644 --- a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraChapter.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraChapter.kt @@ -1,6 +1,7 @@ package press.mantra.compose.database.model import androidx.room3.Entity +import androidx.room3.ForeignKey import androidx.room3.PrimaryKey import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder @@ -15,7 +16,16 @@ import kotlin.time.Instant /** * 30302 */ -@Entity +@Entity( + foreignKeys = [ + ForeignKey( + entity = MantraArtifactVersion::class, + parentColumns = ["id"], + childColumns = ["artifactVersionId"], + onDelete = ForeignKey.CASCADE, + ), + ], +) data class MantraChapter( @PrimaryKey val id: HexKey, diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraChunk.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraChunk.kt index 4e859f9c..e7358789 100644 --- a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraChunk.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraChunk.kt @@ -1,6 +1,7 @@ package press.mantra.compose.database.model import androidx.room3.Entity +import androidx.room3.ForeignKey import androidx.room3.PrimaryKey import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder @@ -14,7 +15,16 @@ import kotlin.time.Instant /** * 30303 */ -@Entity +@Entity( + foreignKeys = [ + ForeignKey( + entity = MantraChapter::class, + parentColumns = ["id"], + childColumns = ["chapterId"], + onDelete = ForeignKey.CASCADE, + ), + ], +) data class MantraChunk( @PrimaryKey val id: HexKey, diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraTranslation.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraTranslation.kt index 74b7af66..15c4dd69 100644 --- a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraTranslation.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraTranslation.kt @@ -1,6 +1,7 @@ package press.mantra.compose.database.model import androidx.room3.Entity +import androidx.room3.ForeignKey import androidx.room3.PrimaryKey import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder @@ -15,7 +16,22 @@ import kotlin.time.Instant /** * 30305 */ -@Entity +@Entity( + foreignKeys = [ + ForeignKey( + entity = MantraTranslationChunk::class, + parentColumns = ["id"], + childColumns = ["translationChunkId"], + onDelete = ForeignKey.CASCADE, + ), + ForeignKey( + entity = MantraTranslationArtifactVersion::class, + parentColumns = ["id"], + childColumns = ["translationArtifactVersionId"], + onDelete = ForeignKey.CASCADE, + ), + ], +) data class MantraTranslation( @PrimaryKey val id: HexKey, diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraTranslationArtifactVersion.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraTranslationArtifactVersion.kt index 7c7103cd..446da0fd 100644 --- a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraTranslationArtifactVersion.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraTranslationArtifactVersion.kt @@ -1,6 +1,7 @@ package press.mantra.compose.database.model import androidx.room3.Entity +import androidx.room3.ForeignKey import androidx.room3.PrimaryKey import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder @@ -16,7 +17,16 @@ import kotlin.time.Instant /** * 30306 */ -@Entity +@Entity( + foreignKeys = [ + ForeignKey( + entity = MantraArtifactVersion::class, + parentColumns = ["id"], + childColumns = ["artifactVersionId"], + onDelete = ForeignKey.CASCADE, + ), + ], +) data class MantraTranslationArtifactVersion( @PrimaryKey val id: HexKey, diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraTranslationArtifactVersionContributor.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraTranslationArtifactVersionContributor.kt index 543f6554..e57eb0d2 100644 --- a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraTranslationArtifactVersionContributor.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraTranslationArtifactVersionContributor.kt @@ -1,6 +1,7 @@ package press.mantra.compose.database.model import androidx.room3.Entity +import androidx.room3.ForeignKey import androidx.room3.PrimaryKey import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder @@ -16,7 +17,16 @@ import kotlin.time.Instant /** * 30307 */ -@Entity +@Entity( + foreignKeys = [ + ForeignKey( + entity = MantraTranslationArtifactVersionContributor::class, + parentColumns = ["id"], + childColumns = ["translationArtifactVersionId"], + onDelete = ForeignKey.CASCADE, + ), + ], +) data class MantraTranslationArtifactVersionContributor( @PrimaryKey val id: HexKey, diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraTranslationChapter.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraTranslationChapter.kt index c9f8b74e..b4259d8a 100644 --- a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraTranslationChapter.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraTranslationChapter.kt @@ -1,6 +1,7 @@ package press.mantra.compose.database.model import androidx.room3.Entity +import androidx.room3.ForeignKey import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder import press.mantra.compose.database.model.traits.OptionalNostrEventEntity @@ -14,7 +15,16 @@ import kotlin.time.Instant /** * 30308 */ -@Entity +@Entity( + foreignKeys = [ + ForeignKey( + entity = MantraTranslationArtifactVersion::class, + parentColumns = ["id"], + childColumns = ["translationArtifactVersionId"], + onDelete = ForeignKey.CASCADE, + ), + ], +) data class MantraTranslationChapter( val id: HexKey, val publicKey: HexKey, diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraTranslationChapterContributor.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraTranslationChapterContributor.kt index 59426302..0633354e 100644 --- a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraTranslationChapterContributor.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraTranslationChapterContributor.kt @@ -1,6 +1,7 @@ package press.mantra.compose.database.model import androidx.room3.Entity +import androidx.room3.ForeignKey import androidx.room3.PrimaryKey import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder @@ -17,7 +18,16 @@ import kotlin.time.Instant /** * 30310 */ -@Entity +@Entity( + foreignKeys = [ + ForeignKey( + entity = MantraTranslationChapter::class, + parentColumns = ["id"], + childColumns = ["translationChapterId"], + onDelete = ForeignKey.CASCADE, + ), + ], +) data class MantraTranslationChapterContributor( @PrimaryKey val id: HexKey, @@ -43,7 +53,7 @@ data class MantraTranslationChapterContributor( ): OptionalNostrEventEntity, TimestampedEntity { companion object { - fun toTranslationChapterTranslatorListEvent(mantraTranslationChapterTranslators: List): TranslationChapterContributorListEvent { + fun toTranslationChapterTranslatorListEvent(mantraTranslationChapterTranslators: List): TranslationChapterContributorListEvent { // TODO: create TranslationChapterProofReaderListEvent from mantraTranslationChapterProofReaders return TranslationChapterContributorListEvent( id = "", diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraTranslationChunk.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraTranslationChunk.kt index 3a0a3d78..647516b5 100644 --- a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraTranslationChunk.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraTranslationChunk.kt @@ -1,6 +1,7 @@ package press.mantra.compose.database.model import androidx.room3.Entity +import androidx.room3.ForeignKey import androidx.room3.PrimaryKey import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder @@ -15,7 +16,22 @@ import kotlin.time.Instant /** * 30311 */ -@Entity +@Entity( + foreignKeys = [ + ForeignKey( + entity = MantraChunk::class, + parentColumns = ["id"], + childColumns = ["chunkId"], + onDelete = ForeignKey.CASCADE, + ), + ForeignKey( + entity = MantraTranslationChapter::class, + parentColumns = ["id"], + childColumns = ["translationChapterId"], + onDelete = ForeignKey.CASCADE, + ), + ], +) data class MantraTranslationChunk( @PrimaryKey val id: HexKey, diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraTranslationContributor.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraTranslationContributor.kt index d0d77733..0da2837c 100644 --- a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraTranslationContributor.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MantraTranslationContributor.kt @@ -1,6 +1,7 @@ package press.mantra.compose.database.model import androidx.room3.Entity +import androidx.room3.ForeignKey import androidx.room3.PrimaryKey import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.crypto.EventHasher @@ -17,7 +18,16 @@ import kotlin.time.Instant /** * 30312 */ -@Entity +@Entity( + foreignKeys = [ + ForeignKey( + entity = MantraTranslation::class, + parentColumns = ["id"], + childColumns = ["translationId"], + onDelete = ForeignKey.CASCADE, + ), + ], +) data class MantraTranslationContributor( @PrimaryKey val id: HexKey,