//// Public entrypoint for the `gdo` package.
import gdo/connection
import gdo/decode
import gdo/error.{type Error}
import gdo/result
import gdo/row
import gdo/statement
import gdo/value.{type Param}
import gleam/option.{type Option}
pub const package_name = "gdo"
pub const version = "0.1.0"
pub fn sqlite(database: String) -> connection.ConnectionConfig {
connection.sqlite(database)
}
pub fn sqlite_config(database: String) -> connection.ConnectionConfig {
connection.sqlite_config(database)
}
pub fn open_sqlite(database: String) -> Result(connection.Connection, Error) {
database
|> connection.sqlite
|> connection.open
}
pub fn prepare(sql: String) -> Result(statement.Statement, Error) {
statement.prepare(sql)
}
pub fn exec_sqlite(
database: String,
sql: String,
params: List(Param),
) -> Result(result.ExecutionResult, Error) {
case open_sqlite(database) {
Ok(connection) -> connection.exec(connection, sql, params)
Error(error) -> Error(error)
}
}
pub fn query_one_sqlite(
database: String,
sql: String,
params: List(Param),
) -> Result(Option(row.Row), Error) {
case open_sqlite(database) {
Ok(connection) -> connection.query_one(connection, sql, params)
Error(error) -> Error(error)
}
}
pub fn query_all_sqlite(
database: String,
sql: String,
params: List(Param),
) -> Result(result.QueryResult, Error) {
case open_sqlite(database) {
Ok(connection) -> connection.query_all(connection, sql, params)
Error(error) -> Error(error)
}
}
pub fn query_one_sqlite_as(
database: String,
sql: String,
params: List(Param),
using decoder: decode.Decoder(a),
) -> Result(Option(a), Error) {
case open_sqlite(database) {
Ok(connection) ->
connection.query_one_as(connection, sql, params, using: decoder)
Error(error) -> Error(error)
}
}
pub fn query_all_sqlite_as(
database: String,
sql: String,
params: List(Param),
using decoder: decode.Decoder(a),
) -> Result(List(a), Error) {
case open_sqlite(database) {
Ok(connection) ->
connection.query_all_as(connection, sql, params, using: decoder)
Error(error) -> Error(error)
}
}