-module(lamb). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([from_name/1, is_alive/1, create_table/3, delete_table/1, insert/2, update/2, delete/2, get/2, all/2, batch/3, continue/1, count/2]). -export_type([table/2, store/0, access/0, partial/1, step/0]). -opaque table(GND, GNE) :: {table, gleam@erlang:reference_()} | {gleam_phantom, GND, GNE}. -type store() :: set. -type access() :: public | protected | private. -type partial(GNF) :: {records, list(GNF), step()} | {'end', list(GNF)}. -type step() :: any(). -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 73). -spec from_atom(gleam@erlang@atom:atom_()) -> {ok, table(any(), any())} | {error, nil}. from_atom(Name) -> case lamb_erlang_ffi:table_id(Name) of {ok, Table_id} -> {ok, {table, Table_id}}; {error, _} -> {error, nil} end. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 66). -spec from_name(binary()) -> {ok, table(any(), any())} | {error, nil}. from_name(Name) -> case gleam_erlang_ffi:atom_from_string(Name) of {ok, Atom} -> from_atom(Atom); {error, _} -> {error, nil} end. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 80). -spec is_alive(table(any(), any())) -> boolean(). is_alive(Table) -> {table, Table_id} = Table, case lamb_erlang_ffi:table_id(Table_id) of {ok, _} -> true; {error, _} -> false end. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 32). -spec create_table(store(), access(), binary()) -> {ok, table(any(), any())} | {error, nil}. create_table(Store, Access, Name) -> Name@1 = erlang:binary_to_atom(Name), case Access of private -> Table_id = lamb_erlang_ffi:create_table(Store, Access, Name@1), {ok, {table, Table_id}}; protected -> case lamb_erlang_ffi:table_id(Name@1) of {ok, _} -> {error, nil}; {error, nil} -> _pipe = lamb_erlang_ffi:create_table(Store, Access, Name@1), from_atom(_pipe) end; public -> case lamb_erlang_ffi:table_id(Name@1) of {ok, _} -> {error, nil}; {error, nil} -> _pipe = lamb_erlang_ffi:create_table(Store, Access, Name@1), from_atom(_pipe) end end. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 55). -spec delete_table(table(any(), any())) -> nil. delete_table(Table) -> {table, Table_id} = Table, case is_alive(Table) of true -> ets:delete(Table_id); false -> Table_id end, nil. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 103). -spec insert(table(GOG, GOH), list({GOG, GOH})) -> nil. insert(Table, Rows) -> {table, Table_id} = Table, _assert_subject = ets:insert(Table_id, Rows), true = case _assert_subject of true -> _assert_subject; _assert_fail -> erlang:error(#{gleam_error => let_assert, message => <<"Pattern match failed, no pattern matched the value."/utf8>>, value => _assert_fail, module => <<"lamb"/utf8>>, function => <<"insert"/utf8>>, line => 105}) end, nil. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 110). -spec update(table(GOL, GOM), lamb@query:'query'(GOL, GOM)) -> integer(). update(Table, Query) -> {table, Table_id} = Table, ets:select_replace(Table_id, [Query]). -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 131). -spec delete(table(GOR, GOS), lamb@query:'query'(GOR, GOS)) -> integer(). delete(Table, Query) -> {table, Table_id} = Table, ets:select_delete( Table_id, [begin _pipe = Query, lamb_query_erlang_ffi:update_body(_pipe, true) end] ). -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 144). -spec get(table(GOX, GOY), GOX) -> {ok, GOY} | {error, nil}. get(Table, Index) -> {table, Table_id} = Table, lamb_erlang_ffi:get(Table_id, Index). -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 149). -spec all(table(GPD, GPE), lamb@query:'query'(GPD, GPE)) -> list(any()). all(Table, Query) -> {table, Table_id} = Table, ets:select(Table_id, [Query]). -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 162). -spec batch(table(GPL, GPM), integer(), lamb@query:'query'(GPL, GPM)) -> partial(any()). batch(Table, Limit, Query) -> {table, Table_id} = Table, lamb_erlang_ffi:search(Table_id, Limit, [Query]). -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 171). -spec continue(step()) -> partial(any()). continue(Step) -> lamb_erlang_ffi:search(Step). -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 175). -spec count(table(GPV, GPW), lamb@query:'query'(GPV, GPW)) -> integer(). count(Table, Query) -> {table, Table_id} = Table, ets:select_count( Table_id, [begin _pipe = Query, lamb_query_erlang_ffi:update_body(_pipe, true) end] ).