add storing of content
This commit is contained in:
client/src/commonMain/kotlin/dev/inmo/postssystem/client
features
content
binary
server
server
text
server
files
client
src
commonMain
kotlin
dev
inmo
postssystem
features
files
common
src
commonMain
kotlin
dev
inmo
postssystem
features
files
jvmMain
kotlin
dev
inmo
postssystem
features
files
common
server
src
jvmMain
kotlin
dev
inmo
postssystem
features
files
server/src/main/java/dev/inmo/postssystem/server
@ -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")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
53
features/content/text/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/content/text/server/TextServerContentStorage.kt
Normal file
53
features/content/text/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/content/text/server/TextServerContentStorage.kt
Normal file
@ -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