Consume inbound mantra events

This commit is contained in:
Kgothatso Ngako committed 2026-07-19 19:38:13 +02:00
1 parent 1b19c6a1be
commit 9cf95483e8
1 file changed
+104 -93
@@ -123,99 +123,109 @@ data class ChatMessage(
) )
} }
ArtifactEvent.KIND -> { ArtifactEvent.KIND -> {
// TODO: Handle mantra messages MantraArtifact.fromArtifactEvent(
database.mantraArtifactDao().upsert( artifactEvent = ArtifactEvent(
MantraArtifact(
id = event.id, id = event.id,
publicKey = event.pubKey, pubKey = event.pubKey,
createdAt = Instant.fromEpochSeconds(event.createdAt), createdAt = event.createdAt,
url = event.tags.first().first(), tags = event.tags,
visibility = event.tags.first().first(), content = event.content,
dialectId = event.tags.first().first(), sig = event.sig
license = "",
copyrightOwner = "",
signature = event.sig,
) )
) )?.let { mantraArtifact ->
database.mantraArtifactDao().upsert(
mantraArtifact
)
}
null null
} }
ArtifactVersionEvent.KIND -> { ArtifactVersionEvent.KIND -> {
database.mantraArtifactVersionDao().upsert( MantraArtifactVersion.fromArtifactVersionEvent(
MantraArtifactVersion( artifactVersionEvent = ArtifactVersionEvent(
id = event.id, id = event.id,
publicKey = event.pubKey, pubKey = event.pubKey,
createdAt = Instant.fromEpochSeconds(event.createdAt), createdAt = event.createdAt,
artifactId = event.tags.first().first(), // TODO: Get artifactId tag... tags = event.tags,
versionLabel = event.tags.first().first(), // TODO: Get version label from tag... content = event.content,
signature = event.sig sig = event.sig
) )
) )?.let { mantraArtifactVersion ->
database.mantraArtifactVersionDao().upsert(
mantraArtifactVersion
)
}
null null
} }
ChapterEvent.KIND -> { ChapterEvent.KIND -> {
database.mantraChapterDao().upsert( MantraChapter.fromChapterEvent(
MantraChapter( chapterEvent = ChapterEvent(
id = event.id, id = event.id,
publicKey = event.pubKey, pubKey = event.pubKey,
createdAt = Instant.fromEpochSeconds(event.createdAt), createdAt = event.createdAt,
artifactVersionId = event.tags.first().first(), // TODO: Get artifactVersionId from tags... tags = event.tags,
name = event.tags.first().first(), // TODO: Get name from tags... content = event.content,
originalText = event.content, // TODO: Get originalText from tags... sig = event.sig
index = 0, // TODO: Get index from tags...
wordCount = 0, // TODO: Get wordCount from tags
characterCount = 0, // TODO: Get characterCount from tags
signature = event.sig
) )
) )?.let { mantraChapter ->
database.mantraChapterDao().upsert(
mantraChapter = mantraChapter
)
}
null null
} }
ChunkEvent.KIND -> { ChunkEvent.KIND -> {
database.mantraChunkDao().upsert( MantraChunk.fromChunkEvent(
MantraChunk( chunkEvent = ChunkEvent(
id = event.id, id = event.id,
publicKey = event.pubKey, pubKey = event.pubKey,
createdAt = Instant.fromEpochSeconds(event.createdAt), createdAt = event.createdAt,
chapterId = event.tags.first().first(), // TODO: Get chapterId from tags tags = event.tags,
text = event.content, content = event.content,
index = 0, // TODO: Get index from tags... sig = event.sig
wordCount = 0, // TODO: Get wordCount from tags
characterCount = 0, // TODO: Get characterCount from tags
signature = event.sig
) )
) )?.let { mantraChunk ->
database.mantraChunkDao().upsert(
mantraChunk = mantraChunk
)
}
null null
} }
DialectEvent.KIND -> { DialectEvent.KIND -> {
database.mantraDialectDao().upsert( MantraDialect.fromDialectEvent(
MantraDialect( dialectEvent = DialectEvent(
id = event.id, id = event.id,
publicKey = event.pubKey, pubKey = event.pubKey,
createdAt = Instant.fromEpochSeconds(event.createdAt), createdAt = event.createdAt,
name = event.tags.first().first(), // TODO: Get name from tags tags = event.tags,
country = event.tags.first().first(), // TODO: Get country from tags content = event.content,
language = event.tags.first().first(), // TODO: Get language from tags sig = event.sig
signature = event.sig
) )
) )?.let { mantraDialect ->
database.mantraDialectDao().upsert(
mantraDialect
)
}
null null
} }
TranslationArtifactVersionEvent.KIND -> { TranslationArtifactVersionEvent.KIND -> {
database.mantraTranslationArtifactVersionDao().upsert( MantraTranslationArtifactVersion.fromTranslationArtifactVersionEvent(
MantraTranslationArtifactVersion( translationArtifactVersionEvent = TranslationArtifactVersionEvent(
id = event.id, id = event.id,
publicKey = event.pubKey, pubKey = event.pubKey,
createdAt = Instant.fromEpochSeconds(event.createdAt), createdAt = event.createdAt,
artifactVersionId = event.tags.first().first(), // TODO: Get artifactVersionId from tags... tags = event.tags,
dialectId = event.tags.first().first(), content = event.content,
name = event.content, sig = event.sig
visibility = event.tags.first().first(),
signature = event.sig
) )
) )?.let { mantraTranslationArtifactVersion ->
database.mantraTranslationArtifactVersionDao().upsert(
mantraTranslationArtifactVersion
)
}
null null
} }
TranslationArtifactVersionContributorListEvent.KIND -> { TranslationArtifactVersionContributorListEvent.KIND -> {
@@ -223,32 +233,33 @@ data class ChatMessage(
null null
} }
TranslationChapterEvent.KIND -> { TranslationChapterEvent.KIND -> {
database.mantraTranslationChapterDao().upsert( MantraTranslationChapter.fromTranslationChapterEvent(
MantraTranslationChapter( translationChapterEvent = TranslationChapterEvent(
id = event.id, id = event.id,
publicKey = event.pubKey, pubKey = event.pubKey,
createdAt = Instant.fromEpochSeconds(event.createdAt), createdAt = event.createdAt,
translationArtifactVersionId = event.tags.first().first(), // TODO: Get artifactVersionId from tags... tags = event.tags,
chapterId = event.tags.first().first(), content = event.content,
index = 0, sig = event.sig
signature = event.sig
) )
) )?.let { mantraTranslationChapter ->
database.mantraTranslationChapterDao().upsert(mantraTranslationChapter)
}
null null
} }
TranslationChunkEvent.KIND -> { TranslationChunkEvent.KIND -> {
database.mantraTranslationChunkDao().upsert( MantraTranslationChunk.fromTranslationChunkEvent(
MantraTranslationChunk( translationChunkEvent = TranslationChunkEvent(
id = event.id, id = event.id,
publicKey = event.pubKey, pubKey = event.pubKey,
createdAt = Instant.fromEpochSeconds(event.createdAt), createdAt = event.createdAt,
chunkId = event.tags.first().first(), tags = event.tags,
translationChapterId = event.tags.first().first(), content = event.content,
index = 0, sig = event.sig
text = event.content,
signature = event.sig
) )
) )?.let { mantraTranslationChunk ->
database.mantraTranslationChunkDao().upsert(mantraTranslationChunk)
}
null null
} }
@@ -256,19 +267,19 @@ data class ChatMessage(
// TODO: Consume contributors... // TODO: Consume contributors...
null null
} }
TranslationEvent.KIND -> { TranslationEvent.KIND -> {
database.mantraTranslationDao().upsert( MantraTranslation.fromTranslationEvent(
MantraTranslation( translationEvent = TranslationEvent(
id = event.id, id = event.id,
publicKey = event.pubKey, pubKey = event.pubKey,
createdAt = Instant.fromEpochSeconds(event.createdAt), createdAt = event.createdAt,
translationArtifactVersionId = event.tags.first().first(), // TODO: Get artifactVersionId from tags... tags = event.tags,
translationChunkId = event.tags.first().first(), content = event.content,
text = event.content, sig = event.sig
signature = event.sig
) )
) )?.let { mantraTranslation ->
database.mantraTranslationDao().upsert(mantraTranslation)
}
null null
} }
else -> { else -> {