2020-09-22 01:47:01 +00:00
|
|
|
package dev.inmo.micro_utils.repos.exposed.onetomany
|
|
|
|
|
2022-06-04 09:00:23 +00:00
|
|
|
import dev.inmo.micro_utils.repos.ReadKeyValuesRepo
|
2020-10-17 11:41:56 +00:00
|
|
|
import dev.inmo.micro_utils.repos.exposed.*
|
2020-09-22 01:47:01 +00:00
|
|
|
import org.jetbrains.exposed.sql.*
|
|
|
|
|
2022-06-04 09:00:23 +00:00
|
|
|
typealias ExposedReadOneToManyKeyValueRepo<Key, Value> = ExposedReadKeyValuesRepo<Key, Value>
|
2022-01-08 08:35:28 +00:00
|
|
|
|
2022-06-04 09:00:23 +00:00
|
|
|
open class ExposedReadKeyValuesRepo<Key, Value>(
|
2020-10-17 11:41:56 +00:00
|
|
|
override val database: Database,
|
2020-09-22 01:47:01 +00:00
|
|
|
keyColumnAllocator: ColumnAllocator<Key>,
|
2020-10-17 12:51:48 +00:00
|
|
|
valueColumnAllocator: ColumnAllocator<Value>,
|
|
|
|
tableName: String? = null
|
2022-10-11 06:55:25 +00:00
|
|
|
) : ReadKeyValuesRepo<Key, Value>, ExposedRepo, AbstractExposedReadKeyValuesRepo<Key, Value>(database, tableName) {
|
|
|
|
override val keyColumn: Column<Key> = keyColumnAllocator()
|
|
|
|
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) }
|
2022-01-08 08:14:44 +00:00
|
|
|
val valueColumn: Column<Value> = valueColumnAllocator()
|
2020-09-22 01:47:01 +00:00
|
|
|
|
2020-10-17 12:01:22 +00:00
|
|
|
init { initTable() }
|
2020-09-22 01:47:01 +00:00
|
|
|
}
|