Skip to main content

src/gdo.erl

-module(gdo).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/gdo.gleam").
-export([sqlite/1, sqlite_config/1, open_sqlite/1, prepare/1, exec_sqlite/3, query_one_sqlite/3, query_all_sqlite/3, query_one_sqlite_as/4, query_all_sqlite_as/4]).

-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.

?MODULEDOC(" Public entrypoint for the `gdo` package.\n").

-file("src/gdo.gleam", 16).
-spec sqlite(binary()) -> gdo@connection:connection_config().
sqlite(Database) ->
    gdo@connection:sqlite(Database).

-file("src/gdo.gleam", 20).
-spec sqlite_config(binary()) -> gdo@connection:connection_config().
sqlite_config(Database) ->
    gdo@connection:sqlite_config(Database).

-file("src/gdo.gleam", 24).
-spec open_sqlite(binary()) -> {ok, gdo@connection:connection()} |
    {error, gdo@error:error()}.
open_sqlite(Database) ->
    _pipe = Database,
    _pipe@1 = gdo@connection:sqlite(_pipe),
    gdo@connection:open(_pipe@1).

-file("src/gdo.gleam", 30).
-spec prepare(binary()) -> {ok, gdo@statement:statement()} |
    {error, gdo@error:error()}.
prepare(Sql) ->
    gdo@statement:prepare(Sql).

-file("src/gdo.gleam", 34).
-spec exec_sqlite(binary(), binary(), list(gdo@value:param())) -> {ok,
        gdo@result:execution_result()} |
    {error, gdo@error:error()}.
exec_sqlite(Database, Sql, Params) ->
    case open_sqlite(Database) of
        {ok, Connection} ->
            gdo@connection:exec(Connection, Sql, Params);

        {error, Error} ->
            {error, Error}
    end.

-file("src/gdo.gleam", 45).
-spec query_one_sqlite(binary(), binary(), list(gdo@value:param())) -> {ok,
        gleam@option:option(gdo@row:row())} |
    {error, gdo@error:error()}.
query_one_sqlite(Database, Sql, Params) ->
    case open_sqlite(Database) of
        {ok, Connection} ->
            gdo@connection:query_one(Connection, Sql, Params);

        {error, Error} ->
            {error, Error}
    end.

-file("src/gdo.gleam", 56).
-spec query_all_sqlite(binary(), binary(), list(gdo@value:param())) -> {ok,
        gdo@result:query_result()} |
    {error, gdo@error:error()}.
query_all_sqlite(Database, Sql, Params) ->
    case open_sqlite(Database) of
        {ok, Connection} ->
            gdo@connection:query_all(Connection, Sql, Params);

        {error, Error} ->
            {error, Error}
    end.

-file("src/gdo.gleam", 67).
-spec query_one_sqlite_as(
    binary(),
    binary(),
    list(gdo@value:param()),
    fun((gdo@row:row()) -> {ok, MCA} | {error, gdo@error:error()})
) -> {ok, gleam@option:option(MCA)} | {error, gdo@error:error()}.
query_one_sqlite_as(Database, Sql, Params, Decoder) ->
    case open_sqlite(Database) of
        {ok, Connection} ->
            gdo@connection:query_one_as(Connection, Sql, Params, Decoder);

        {error, Error} ->
            {error, Error}
    end.

-file("src/gdo.gleam", 80).
-spec query_all_sqlite_as(
    binary(),
    binary(),
    list(gdo@value:param()),
    fun((gdo@row:row()) -> {ok, MCG} | {error, gdo@error:error()})
) -> {ok, list(MCG)} | {error, gdo@error:error()}.
query_all_sqlite_as(Database, Sql, Params, Decoder) ->
    case open_sqlite(Database) of
        {ok, Connection} ->
            gdo@connection:query_all_as(Connection, Sql, Params, Decoder);

        {error, Error} ->
            {error, Error}
    end.