add storing of content
This commit is contained in:
@@ -11,6 +11,7 @@ kotlin {
|
||||
dependencies {
|
||||
api project(":postssystem.features.content.text.common")
|
||||
api project(":postssystem.features.common.server")
|
||||
api project(":postssystem.features.content.server")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,53 @@
|
||||
package dev.inmo.postssystem.features.content.text.server
|
||||
|
||||
import com.benasher44.uuid.uuid4
|
||||
import dev.inmo.micro_utils.repos.exposed.AbstractExposedCRUDRepo
|
||||
import dev.inmo.micro_utils.repos.exposed.initTable
|
||||
import dev.inmo.postssystem.features.content.common.ContentId
|
||||
import dev.inmo.postssystem.features.content.common.RegisteredContent
|
||||
import dev.inmo.postssystem.features.content.server.ServerContentStorage
|
||||
import dev.inmo.postssystem.features.content.text.common.TextContent
|
||||
import org.jetbrains.exposed.sql.*
|
||||
import org.jetbrains.exposed.sql.statements.InsertStatement
|
||||
import org.jetbrains.exposed.sql.statements.UpdateStatement
|
||||
|
||||
class TextServerContentStorage(
|
||||
override val database: Database
|
||||
) : ServerContentStorage<TextContent>,
|
||||
AbstractExposedCRUDRepo<RegisteredContent, ContentId, TextContent>(tableName = "TextContent") {
|
||||
|
||||
val idColumn = text("id")
|
||||
private val textColumn = text("text")
|
||||
|
||||
override val selectByIds: SqlExpressionBuilder.(List<ContentId>) -> Op<Boolean> = {
|
||||
idColumn.inList(it.map { it.string })
|
||||
}
|
||||
override val selectById: SqlExpressionBuilder.(ContentId) -> Op<Boolean> = {
|
||||
idColumn.eq(it.string)
|
||||
}
|
||||
override val ResultRow.asObject: RegisteredContent
|
||||
get() = RegisteredContent(
|
||||
ContentId(get(idColumn)),
|
||||
TextContent(get(textColumn))
|
||||
)
|
||||
|
||||
init {
|
||||
initTable()
|
||||
}
|
||||
|
||||
override fun insert(value: TextContent, it: InsertStatement<Number>) {
|
||||
it[idColumn] = uuid4().toString()
|
||||
it[textColumn] = value.text
|
||||
}
|
||||
|
||||
override fun update(id: ContentId, value: TextContent, it: UpdateStatement) {
|
||||
it[textColumn] = value.text
|
||||
}
|
||||
|
||||
override fun InsertStatement<Number>.asObject(value: TextContent): RegisteredContent {
|
||||
return RegisteredContent(
|
||||
ContentId(get(idColumn)),
|
||||
TextContent(get(textColumn))
|
||||
)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user