-module(gdo@driver). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/gdo/driver.gleam"). -export([name/1, capabilities/1, connection_target_name/1, identifier/1, supports/2, connect/2, prepare/3, close/2, exec/3, query_all/3, 'begin'/2, commit/2, rollback/2, last_insert_id/2]). -export_type([capability/0, driver/0, authentication/0, transport_security/0, network_endpoint/0, connection_target/0, driver_connection_state/0, driver_statement_state/0, driver_contract/0]). -type capability() :: supports_transactions | supports_last_insert_id | supports_positional_parameters | supports_named_parameters | supports_embedded_connections | supports_network_connections | supports_authentication | supports_tls_configuration. -type driver() :: sqlite. -type authentication() :: no_authentication | {username_and_password, binary(), binary()}. -type transport_security() :: disable_tls | prefer_tls | require_tls. -type network_endpoint() :: {network_endpoint, binary(), integer(), binary(), authentication(), transport_security()}. -type connection_target() :: {embedded_database, binary()} | {server_database, network_endpoint()}. -type driver_connection_state() :: {sqlite_connection_state, binary(), sqlight:connection(), gleam@option:option(integer())}. -type driver_statement_state() :: {sqlite_statement_state, sqlight:connection(), binary()}. -type driver_contract() :: {driver_contract, fun((connection_target()) -> {ok, driver_connection_state()} | {error, gdo@error:error()}), fun((driver_connection_state()) -> {ok, nil} | {error, gdo@error:error()}), fun((driver_connection_state(), binary()) -> {ok, driver_statement_state()} | {error, gdo@error:error()}), fun((driver_statement_state(), list(gdo@value:param())) -> {ok, gdo@result:execution_result()} | {error, gdo@error:error()}), fun((driver_statement_state(), list(gdo@value:param())) -> {ok, gdo@result:query_result()} | {error, gdo@error:error()}), fun((driver_connection_state()) -> {ok, driver_connection_state()} | {error, gdo@error:error()}), fun((driver_connection_state()) -> {ok, driver_connection_state()} | {error, gdo@error:error()}), fun((driver_connection_state()) -> {ok, driver_connection_state()} | {error, gdo@error:error()}), fun((driver_connection_state()) -> gleam@option:option(integer()))}. -file("src/gdo/driver.gleam", 78). -spec name(driver()) -> binary(). name(Driver) -> case Driver of sqlite -> <<"sqlite"/utf8>> end. -file("src/gdo/driver.gleam", 84). -spec capabilities(driver()) -> list(capability()). capabilities(Driver) -> case Driver of sqlite -> [supports_transactions, supports_last_insert_id, supports_positional_parameters, supports_named_parameters, supports_embedded_connections] end. -file("src/gdo/driver.gleam", 96). -spec connection_target_name(connection_target()) -> binary(). connection_target_name(Target) -> case Target of {embedded_database, _} -> <<"embedded"/utf8>>; {server_database, _} -> <<"server"/utf8>> end. -file("src/gdo/driver.gleam", 103). -spec identifier(connection_target()) -> binary(). identifier(Target) -> case Target of {embedded_database, Path} -> Path; {server_database, {network_endpoint, _, _, Database, _, _}} -> Database end. -file("src/gdo/driver.gleam", 110). -spec supports(driver(), capability()) -> boolean(). supports(Driver, Capability) -> gleam@list:any( capabilities(Driver), fun(Current) -> Current =:= Capability end ). -file("src/gdo/driver.gleam", 114). -spec connect(driver_contract(), connection_target()) -> {ok, driver_connection_state()} | {error, gdo@error:error()}. connect(Contract, Target) -> {driver_contract, Connect, _, _, _, _, _, _, _, _} = Contract, Connect(Target). -file("src/gdo/driver.gleam", 122). -spec prepare(driver_contract(), driver_connection_state(), binary()) -> {ok, driver_statement_state()} | {error, gdo@error:error()}. prepare(Contract, Connection_state, Sql) -> {driver_contract, _, _, Prepare, _, _, _, _, _, _} = Contract, Prepare(Connection_state, Sql). -file("src/gdo/driver.gleam", 131). -spec close(driver_contract(), driver_connection_state()) -> {ok, nil} | {error, gdo@error:error()}. close(Contract, Connection_state) -> {driver_contract, _, Close, _, _, _, _, _, _, _} = Contract, Close(Connection_state). -file("src/gdo/driver.gleam", 139). -spec exec(driver_contract(), driver_statement_state(), list(gdo@value:param())) -> {ok, gdo@result:execution_result()} | {error, gdo@error:error()}. exec(Contract, Statement_state, Params) -> {driver_contract, _, _, _, Exec, _, _, _, _, _} = Contract, Exec(Statement_state, Params). -file("src/gdo/driver.gleam", 148). -spec query_all( driver_contract(), driver_statement_state(), list(gdo@value:param()) ) -> {ok, gdo@result:query_result()} | {error, gdo@error:error()}. query_all(Contract, Statement_state, Params) -> {driver_contract, _, _, _, _, Query_all, _, _, _, _} = Contract, Query_all(Statement_state, Params). -file("src/gdo/driver.gleam", 157). -spec 'begin'(driver_contract(), driver_connection_state()) -> {ok, driver_connection_state()} | {error, gdo@error:error()}. 'begin'(Contract, Connection_state) -> {driver_contract, _, _, _, _, _, Begin, _, _, _} = Contract, Begin(Connection_state). -file("src/gdo/driver.gleam", 165). -spec commit(driver_contract(), driver_connection_state()) -> {ok, driver_connection_state()} | {error, gdo@error:error()}. commit(Contract, Connection_state) -> {driver_contract, _, _, _, _, _, _, Commit, _, _} = Contract, Commit(Connection_state). -file("src/gdo/driver.gleam", 173). -spec rollback(driver_contract(), driver_connection_state()) -> {ok, driver_connection_state()} | {error, gdo@error:error()}. rollback(Contract, Connection_state) -> {driver_contract, _, _, _, _, _, _, _, Rollback, _} = Contract, Rollback(Connection_state). -file("src/gdo/driver.gleam", 181). -spec last_insert_id(driver_contract(), driver_connection_state()) -> gleam@option:option(integer()). last_insert_id(Contract, Connection_state) -> {driver_contract, _, _, _, _, _, _, _, _, Last_insert_id} = Contract, Last_insert_id(Connection_state).