-module(lamb@query). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([new/0, index/2, record/2, map/2, validate/1]). -export_type([test/1]). -type test(GIS) :: no_match | {spec, GIS} | {invalid, list(gleam@erlang@charlist:charlist())}. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 18). -spec new() -> {{gleam@erlang@atom:atom_(), gleam@erlang@atom:atom_()}, list(nil), list(gleam@erlang@atom:atom_())}. new() -> Head = {lamb@query@term:any(), lamb@query@term:any()}, Body = lamb@query@term:records(), {Head, [], [Body]}. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 24). -spec index({{any(), GJI}, list(nil), list(GJJ)}, GJN) -> {{GJN, GJI}, list(nil), list(GJJ)}. index(Query, Spec) -> {{_, Record}, Conditions, Body} = Query, Head = {Spec, Record}, {Head, Conditions, Body}. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 30). -spec record({{GJR, any()}, list(nil), list(GJT)}, GJX) -> {{GJR, GJX}, list(nil), list(GJT)}. record(Query, Spec) -> {{Index, _}, Conditions, Body} = Query, Head = {Index, Spec}, {Head, Conditions, Body}. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 36). -spec map({{GKB, GKC}, list(nil), list(any())}, fun((GKB, GKC) -> GKH)) -> {{GKB, GKC}, list(nil), list(GKH)}. map(Query, Mapper) -> {Head, Conditions, _} = Query, {Index, Record} = Head, Spec = begin _pipe = Mapper(Index, Record), lamb_erlang_ffi:wrap_tuple(_pipe) end, {Head, Conditions, [Spec]}. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 57). -spec validate({{GKN, GKO}, list(nil), list(GKP)}) -> {ok, {{GKN, GKO}, list(nil), list(GKP)}} | {error, list(binary())}. validate(Query) -> case lamb_erlang_ffi:test_query(Query, {lamb@query@term:any()}) of no_match -> {ok, Query}; {spec, _} -> {ok, Query}; {invalid, Errors} -> {error, gleam@list:map(Errors, fun unicode:characters_to_binary/1)} end.