package dev.inmo.micro_utils.repos.exposed.onetomany import dev.inmo.micro_utils.repos.ReadKeyValuesRepo import dev.inmo.micro_utils.repos.exposed.* import org.jetbrains.exposed.sql.* typealias ExposedReadOneToManyKeyValueRepo = ExposedReadKeyValuesRepo open class ExposedReadKeyValuesRepo( override val database: Database, keyColumnAllocator: ColumnAllocator, valueColumnAllocator: ColumnAllocator, tableName: String? = null ) : ReadKeyValuesRepo, ExposedRepo, AbstractExposedReadKeyValuesRepo(database, tableName) { override val keyColumn: Column = keyColumnAllocator() override val ResultRow.asKey: Key get() = get(keyColumn) override val selectByValue: SqlExpressionBuilder.(Value) -> Op = { valueColumn.eq(it) } override val ResultRow.asObject: Value get() = get(valueColumn) override val selectById: SqlExpressionBuilder.(Key) -> Op = { keyColumn.eq(it) } val valueColumn: Column = valueColumnAllocator() init { initTable() } }