From 4c8c93c9f8a1831d3c375fd8a1b0c994235c60bf Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Tue, 25 Oct 2022 12:43:12 +0600 Subject: [PATCH] update ExposedPostsRepo --- .../kotlin/exposed/ExposedPostsRepo.kt | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/posts/src/jvmMain/kotlin/exposed/ExposedPostsRepo.kt b/posts/src/jvmMain/kotlin/exposed/ExposedPostsRepo.kt index c509840..4ee12cf 100644 --- a/posts/src/jvmMain/kotlin/exposed/ExposedPostsRepo.kt +++ b/posts/src/jvmMain/kotlin/exposed/ExposedPostsRepo.kt @@ -12,8 +12,7 @@ import dev.inmo.tgbotapi.types.MessageIdentifier import kotlinx.coroutines.flow.* import kotlinx.serialization.json.Json import org.jetbrains.exposed.sql.* -import org.jetbrains.exposed.sql.statements.InsertStatement -import org.jetbrains.exposed.sql.statements.UpdateStatement +import org.jetbrains.exposed.sql.statements.* import org.jetbrains.exposed.sql.transactions.transaction class ExposedPostsRepo( @@ -21,7 +20,7 @@ class ExposedPostsRepo( ) : PostsRepo, AbstractExposedCRUDRepo( tableName = "posts" ) { - val idColumn = text("id").clientDefault { uuid4().toString() } + val idColumn = text("id") val createdColumn = double("datetime").default(0.0) private val contentRepo by lazy { @@ -59,18 +58,6 @@ class ExposedPostsRepo( override fun InsertStatement.asObject(value: NewPost): RegisteredPost { val id = PostId(get(idColumn)) - with(contentRepo) { - value.content.forEach { contentInfo -> - insert { - it[postIdColumn] = id.string - it[chatIdColumn] = contentInfo.chatId.chatId - it[messageIdColumn] = contentInfo.messageId - it[groupColumn] = contentInfo.group - it[orderColumn] = contentInfo.order - } - } - } - return RegisteredPost( id, DateTime(get(createdColumn)), @@ -82,7 +69,14 @@ class ExposedPostsRepo( ) } - override fun update(id: PostId, value: NewPost, it: UpdateStatement) { + override fun createAndInsertId(value: NewPost, it: InsertStatement): PostId { + val id = PostId(uuid4().toString()) + it[idColumn] = id.string + return id + } + + override fun update(id: PostId?, value: NewPost, it: UpdateBuilder) { + id ?: error("Unable to find post id in update") with(contentRepo) { deleteWhere { postIdColumn.eq(id.string) } value.content.forEach { contentInfo -> @@ -98,6 +92,7 @@ class ExposedPostsRepo( } override fun insert(value: NewPost, it: InsertStatement) { + super.insert(value, it) it[createdColumn] = DateTime.now().unixMillis }