Skip to main content

src/gdo@result.erl

-module(gdo@result).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/gdo/result.gleam").
-export([execution_result/2, rows_affected/1, last_insert_id/1, query_result/1, empty_query_result/0, rows/1, row_count/1, first/1]).
-export_type([execution_result/0, query_result/0]).

-type execution_result() :: {execution_result,
        integer(),
        gleam@option:option(integer())}.

-type query_result() :: {query_result, list(gdo@row:row())}.

-file("src/gdo/result.gleam", 13).
-spec execution_result(integer(), gleam@option:option(integer())) -> execution_result().
execution_result(Rows_affected, Last_insert_id) ->
    {execution_result, Rows_affected, Last_insert_id}.

-file("src/gdo/result.gleam", 20).
-spec rows_affected(execution_result()) -> integer().
rows_affected(Result) ->
    {execution_result, Rows_affected, _} = Result,
    Rows_affected.

-file("src/gdo/result.gleam", 25).
-spec last_insert_id(execution_result()) -> gleam@option:option(integer()).
last_insert_id(Result) ->
    {execution_result, _, Last_insert_id} = Result,
    Last_insert_id.

-file("src/gdo/result.gleam", 30).
-spec query_result(list(gdo@row:row())) -> query_result().
query_result(Rows) ->
    {query_result, Rows}.

-file("src/gdo/result.gleam", 34).
-spec empty_query_result() -> query_result().
empty_query_result() ->
    {query_result, []}.

-file("src/gdo/result.gleam", 38).
-spec rows(query_result()) -> list(gdo@row:row()).
rows(Result) ->
    {query_result, Rows} = Result,
    Rows.

-file("src/gdo/result.gleam", 43).
-spec row_count(query_result()) -> integer().
row_count(Result) ->
    _pipe = Result,
    _pipe@1 = rows(_pipe),
    erlang:length(_pipe@1).

-file("src/gdo/result.gleam", 47).
-spec first(query_result()) -> gleam@option:option(gdo@row:row()).
first(Result) ->
    case rows(Result) of
        [First | _] ->
            {some, First};

        [] ->
            none
    end.