Current section

Files

Jump to
parrot src parrot@internal@sqlc.erl
Raw

src/parrot@internal@sqlc.erl

-module(parrot@internal@sqlc).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-define(FILEPATH, "src/parrot/internal/sqlc.gleam").
-export([decode_sqlc/1]).
-export_type([type_ref/0, table_column/0, table_ref/0, table/0, schema/0, catalog/0, query_cmd/0, query_param/0, 'query'/0, s_q_l_c/0]).
-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(false).
-type type_ref() :: {type_ref, binary(), binary(), binary()}.
-type table_column() :: {table_column,
binary(),
boolean(),
boolean(),
binary(),
integer(),
boolean(),
boolean(),
binary(),
binary(),
boolean(),
binary(),
boolean(),
integer(),
gleam@option:option(table_ref()),
type_ref()}.
-type table_ref() :: {table_ref, binary(), binary(), binary()}.
-type table() :: {table, table_ref(), binary(), list(table_column())}.
-type schema() :: {schema, binary(), binary(), list(table())}.
-type catalog() :: {catalog, binary(), binary(), binary(), list(schema())}.
-type query_cmd() :: one | many | exec | exec_result.
-type query_param() :: {query_param, integer(), table_column()}.
-type 'query'() :: {'query',
binary(),
binary(),
query_cmd(),
binary(),
list(table_column()),
gleam@option:option(table_ref()),
list(binary()),
list(query_param())}.
-type s_q_l_c() :: {s_q_l_c,
binary(),
binary(),
binary(),
catalog(),
list('query'())}.
-file("src/parrot/internal/sqlc.gleam", 87).
?DOC(false).
-spec decode_sqlc(gleam@dynamic:dynamic_()) -> {ok, s_q_l_c()} |
{error, list(gleam@dynamic@decode:decode_error())}.
decode_sqlc(Data) ->
Table_ref_decoder = begin
gleam@dynamic@decode:field(
<<"name"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Name) ->
gleam@dynamic@decode:field(
<<"schema"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Schema) ->
gleam@dynamic@decode:field(
<<"catalog"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Catalog) ->
gleam@dynamic@decode:success(
{table_ref, Catalog, Schema, Name}
)
end
)
end
)
end
)
end,
Type_ref_decoder = begin
gleam@dynamic@decode:field(
<<"schema"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Schema@1) ->
gleam@dynamic@decode:field(
<<"catalog"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Catalog@1) ->
gleam@dynamic@decode:field(
<<"name"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Name@1) ->
gleam@dynamic@decode:success(
{type_ref, Catalog@1, Schema@1, Name@1}
)
end
)
end
)
end
)
end,
Table_col_decoder = begin
gleam@dynamic@decode:field(
<<"name"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Name@2) ->
gleam@dynamic@decode:field(
<<"not_null"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_bool/1},
fun(Not_null) ->
gleam@dynamic@decode:field(
<<"is_array"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_bool/1},
fun(Is_array) ->
gleam@dynamic@decode:field(
<<"comment"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(Comment) ->
gleam@dynamic@decode:field(
<<"length"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_int/1},
fun(Length) ->
gleam@dynamic@decode:field(
<<"is_named_param"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_bool/1},
fun(Is_named_param) ->
gleam@dynamic@decode:field(
<<"is_func_call"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_bool/1},
fun(Is_func_call) ->
gleam@dynamic@decode:field(
<<"scope"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(Scope) ->
gleam@dynamic@decode:field(
<<"table_alias"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(
Table_alias
) ->
gleam@dynamic@decode:field(
<<"is_sqlc_slice"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_bool/1},
fun(
Is_sqlc_slice
) ->
gleam@dynamic@decode:field(
<<"original_name"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(
Original_name
) ->
gleam@dynamic@decode:field(
<<"unsigned"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_bool/1},
fun(
Unsigned
) ->
gleam@dynamic@decode:field(
<<"array_dims"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_int/1},
fun(
Array_dims
) ->
gleam@dynamic@decode:field(
<<"table"/utf8>>,
gleam@dynamic@decode:optional(
Table_ref_decoder
),
fun(
Table
) ->
gleam@dynamic@decode:field(
<<"type"/utf8>>,
Type_ref_decoder,
fun(
Type_ref
) ->
_pipe = {table_column,
Name@2,
Not_null,
Is_array,
Comment,
Length,
Is_named_param,
Is_func_call,
Scope,
Table_alias,
Is_sqlc_slice,
Original_name,
Unsigned,
Array_dims,
Table,
Type_ref},
gleam@dynamic@decode:success(
_pipe
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end,
Table_decoder = begin
gleam@dynamic@decode:field(
<<"rel"/utf8>>,
Table_ref_decoder,
fun(Rel) ->
gleam@dynamic@decode:field(
<<"comment"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Comment@1) ->
gleam@dynamic@decode:field(
<<"columns"/utf8>>,
gleam@dynamic@decode:list(Table_col_decoder),
fun(Columns) ->
gleam@dynamic@decode:success(
{table, Rel, Comment@1, Columns}
)
end
)
end
)
end
)
end,
Schema_decoder = begin
gleam@dynamic@decode:field(
<<"comment"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Comment@2) ->
gleam@dynamic@decode:field(
<<"name"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Name@3) ->
gleam@dynamic@decode:field(
<<"tables"/utf8>>,
gleam@dynamic@decode:list(Table_decoder),
fun(Tables) ->
gleam@dynamic@decode:success(
{schema, Comment@2, Name@3, Tables}
)
end
)
end
)
end
)
end,
Catalog_decoder = begin
gleam@dynamic@decode:field(
<<"comment"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Comment@3) ->
gleam@dynamic@decode:field(
<<"default_schema"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Default_schema) ->
gleam@dynamic@decode:field(
<<"name"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Name@4) ->
gleam@dynamic@decode:field(
<<"schemas"/utf8>>,
gleam@dynamic@decode:list(Schema_decoder),
fun(Schemas) ->
gleam@dynamic@decode:success(
{catalog,
Comment@3,
Default_schema,
Name@4,
Schemas}
)
end
)
end
)
end
)
end
)
end,
Params_decoder = begin
gleam@dynamic@decode:field(
<<"number"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_int/1},
fun(Number) ->
gleam@dynamic@decode:field(
<<"column"/utf8>>,
Table_col_decoder,
fun(Column) ->
gleam@dynamic@decode:success(
{query_param, Number, Column}
)
end
)
end
)
end,
Cmd_decoder = begin
gleam@dynamic@decode:then(
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Cmd) -> case Cmd of
<<":one"/utf8>> ->
gleam@dynamic@decode:success(one);
<<":many"/utf8>> ->
gleam@dynamic@decode:success(many);
<<":exec"/utf8>> ->
gleam@dynamic@decode:success(exec_result);
<<":execresult"/utf8>> ->
gleam@dynamic@decode:success(exec_result);
_ ->
gleam@dynamic@decode:failure(one, <<"QueryCmd"/utf8>>)
end end
)
end,
Query_decoder = begin
gleam@dynamic@decode:field(
<<"text"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Text) ->
gleam@dynamic@decode:field(
<<"name"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Name@5) ->
gleam@dynamic@decode:field(
<<"cmd"/utf8>>,
Cmd_decoder,
fun(Cmd@1) ->
gleam@dynamic@decode:field(
<<"filename"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(Filename) ->
gleam@dynamic@decode:field(
<<"columns"/utf8>>,
gleam@dynamic@decode:list(
Table_col_decoder
),
fun(Columns@1) ->
gleam@dynamic@decode:field(
<<"insert_into_table"/utf8>>,
gleam@dynamic@decode:optional(
Table_ref_decoder
),
fun(Insert_into_table) ->
gleam@dynamic@decode:field(
<<"comments"/utf8>>,
gleam@dynamic@decode:list(
{decoder,
fun gleam@dynamic@decode:decode_string/1}
),
fun(Comments) ->
gleam@dynamic@decode:field(
<<"params"/utf8>>,
gleam@dynamic@decode:list(
Params_decoder
),
fun(Params) ->
_pipe@1 = {'query',
Text,
Name@5,
Cmd@1,
Filename,
Columns@1,
Insert_into_table,
Comments,
Params},
gleam@dynamic@decode:success(
_pipe@1
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end,
Decoder = begin
gleam@dynamic@decode:field(
<<"sqlc_version"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Sqlc_version) ->
gleam@dynamic@decode:field(
<<"plugin_options"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Plugin_options) ->
gleam@dynamic@decode:field(
<<"global_options"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Global_options) ->
gleam@dynamic@decode:field(
<<"catalog"/utf8>>,
Catalog_decoder,
fun(Catalog@2) ->
gleam@dynamic@decode:field(
<<"queries"/utf8>>,
gleam@dynamic@decode:list(
Query_decoder
),
fun(Queries) ->
_pipe@2 = {s_q_l_c,
Sqlc_version,
Plugin_options,
Global_options,
Catalog@2,
Queries},
gleam@dynamic@decode:success(
_pipe@2
)
end
)
end
)
end
)
end
)
end
)
end,
gleam@dynamic@decode:run(Data, Decoder).