-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).