All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.koalaql.DataSource.kt Maven / Gradle / Ivy

package io.koalaql

import io.koalaql.ddl.Table
import io.koalaql.event.ConnectionEventWriter
import io.koalaql.query.BlockingPerformer
import io.koalaql.query.built.BuiltQueryable
import io.koalaql.query.built.BuiltStatement
import io.koalaql.values.RawResultRow
import io.koalaql.values.RowSequence
import io.koalaql.values.SequenceToRowSequence

interface DataSource: BlockingPerformer {
    fun declareTables(tables: List)
    fun declareTables(vararg tables: Table) = declareTables(tables.asList())

    fun connect(isolation: Isolation, events: ConnectionEventWriter = ConnectionEventWriter.Discard): DataConnection

    override fun query(queryable: BuiltQueryable): RowSequence = transact {
        val rows = it.query(queryable)

        SequenceToRowSequence(
            rows.columns,
            rows.toList().asSequence()
        )
    }

    override fun statement(statement: BuiltStatement): Int = transact {
        it.statement(statement)
    }
}