MicroUtils/repos/exposed/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/exposed/keyvalue/ExposedReadKeyValueRepo.kt

32 lines
1.3 KiB
Kotlin
Raw Normal View History

2020-09-22 01:47:01 +00:00
package dev.inmo.micro_utils.repos.exposed.keyvalue
2020-09-27 14:25:42 +00:00
import dev.inmo.micro_utils.pagination.*
2022-06-04 08:42:16 +00:00
import dev.inmo.micro_utils.repos.ReadKeyValueRepo
2020-11-16 14:05:22 +00:00
import dev.inmo.micro_utils.repos.exposed.*
2022-08-30 09:20:45 +00:00
import dev.inmo.micro_utils.repos.exposed.utils.selectPaginated
2020-09-22 01:47:01 +00:00
import org.jetbrains.exposed.sql.*
import org.jetbrains.exposed.sql.statements.InsertStatement
import org.jetbrains.exposed.sql.statements.UpdateBuilder
2020-09-22 01:47:01 +00:00
import org.jetbrains.exposed.sql.transactions.transaction
2020-10-17 11:41:56 +00:00
open class ExposedReadKeyValueRepo<Key, Value>(
database: Database,
2020-10-17 11:41:56 +00:00
keyColumnAllocator: ColumnAllocator<Key>,
valueColumnAllocator: ColumnAllocator<Value>,
tableName: String? = null
) : ReadKeyValueRepo<Key, Value>, ExposedRepo, AbstractExposedReadKeyValueRepo<Key, Value>(database, tableName) {
override val keyColumn: Column<Key> = keyColumnAllocator()
2022-01-08 08:14:44 +00:00
val valueColumn: Column<Value> = valueColumnAllocator()
override val ResultRow.asKey: Key
get() = get(keyColumn)
override val selectByValue: SqlExpressionBuilder.(Value) -> Op<Boolean> = { valueColumn.eq(it) }
override val ResultRow.asObject: Value
get() = get(valueColumn)
override val selectById: SqlExpressionBuilder.(Key) -> Op<Boolean> = { keyColumn.eq(it) }
override val primaryKey: Table.PrimaryKey
get() = PrimaryKey(keyColumn, valueColumn)
2020-09-22 01:47:01 +00:00
2020-11-16 14:05:22 +00:00
init { initTable() }
2020-09-22 01:47:01 +00:00
}