-module(cake@adapter@sqlite). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([with_memory_connection/1, execute_raw_sql/2, to_prepared_statement/1, write_query_to_prepared_statement/1, run_query/3, run_write/3]). -spec with_memory_connection(fun((sqlight:connection()) -> OSY)) -> OSY. with_memory_connection(Callback_fun) -> sqlight:with_connection(<<":memory:"/utf8>>, Callback_fun). -spec execute_raw_sql(binary(), sqlight:connection()) -> {ok, nil} | {error, sqlight:error()}. execute_raw_sql(Qry, Conn) -> _pipe = Qry, sqlight:exec(_pipe, Conn). -spec to_prepared_statement(cake@internal@query:'query'()) -> cake@internal@prepared_statement:prepared_statement(). to_prepared_statement(Qry) -> _pipe = Qry, cake@internal@query:to_prepared_statement( _pipe, <<"$"/utf8>>, sqlite_adapter ). -spec write_query_to_prepared_statement( cake@internal@write_query:write_query(any()) ) -> cake@internal@prepared_statement:prepared_statement(). write_query_to_prepared_statement(Qry) -> _pipe = Qry, cake@internal@write_query:to_prepared_statement( _pipe, <<"$"/utf8>>, sqlite_adapter ). -spec run_query( cake@internal@query:'query'(), fun((gleam@dynamic:dynamic_()) -> {ok, OTS} | {error, list(gleam@dynamic:decode_error())}), sqlight:connection() ) -> {ok, list(OTS)} | {error, sqlight:error()}. run_query(Qry, Dcdr, Db_conn) -> Prp_stm = to_prepared_statement(Qry), Sql = begin _pipe = cake@internal@prepared_statement:get_sql(Prp_stm), cake@internal@stdlib@iox:inspect_println_tap(_pipe) end, Params = cake@internal@prepared_statement:get_params(Prp_stm), Db_params = begin _pipe@1 = Params, _pipe@2 = gleam@list:map(_pipe@1, fun(Param) -> case Param of {bool_param, Param@1} -> sqlight:bool(Param@1); {float_param, Param@2} -> sqlight:float(Param@2); {int_param, Param@3} -> sqlight:int(Param@3); {string_param, Param@4} -> sqlight:text(Param@4); null_param -> sqlight_ffi:null() end end), _pipe@3 = cake@internal@stdlib@iox:print_tap( _pipe@2, <<"Params: "/utf8>> ), cake@internal@stdlib@iox:inspect_println_tap(_pipe@3) end, _pipe@4 = Sql, sqlight:'query'(_pipe@4, Db_conn, Db_params, Dcdr). -spec run_write( cake@internal@write_query:write_query(any()), fun((gleam@dynamic:dynamic_()) -> {ok, OUC} | {error, list(gleam@dynamic:decode_error())}), sqlight:connection() ) -> {ok, list(OUC)} | {error, sqlight:error()}. run_write(Qry, Dcdr, Db_conn) -> Prp_stm = write_query_to_prepared_statement(Qry), Sql = begin _pipe = cake@internal@prepared_statement:get_sql(Prp_stm), cake@internal@stdlib@iox:inspect_println_tap(_pipe) end, Params = cake@internal@prepared_statement:get_params(Prp_stm), Db_params = begin _pipe@1 = Params, _pipe@2 = gleam@list:map(_pipe@1, fun(Param) -> case Param of {bool_param, Param@1} -> sqlight:bool(Param@1); {float_param, Param@2} -> sqlight:float(Param@2); {int_param, Param@3} -> sqlight:int(Param@3); {string_param, Param@4} -> sqlight:text(Param@4); null_param -> sqlight_ffi:null() end end), _pipe@3 = cake@internal@stdlib@iox:print_tap( _pipe@2, <<"Params: "/utf8>> ), cake@internal@stdlib@iox:inspect_println_tap(_pipe@3) end, _pipe@4 = Sql, sqlight:'query'(_pipe@4, Db_conn, Db_params, Dcdr).