-module(lamb). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([from_name/1, is_alive/1, create/1, delete/1, insert/3, all/2, batch/3, continue/1, erase/2, count/2]). -export_type([table/2, config/0, kind/0, access/0, error/0, partial/1, step/0]). -type table(HCL, HCM) :: {table, gleam@erlang:reference_(), gleam@erlang@atom:atom_(), kind(), access(), boolean()} | {gleam_phantom, HCL, HCM}. -type config() :: {config, binary(), access(), kind(), boolean()}. -type kind() :: set | bag. -type access() :: public | protected | private. -type error() :: {already_registered, gleam@erlang@atom:atom_()}. -type partial(HCN) :: {records, list(HCN), step()} | {'end', list(HCN)}. -type step() :: any(). -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 79). -spec from_name(binary()) -> {ok, gleam@erlang:reference_()} | {error, nil}. from_name(Name) -> case gleam_erlang_ffi:atom_from_string(Name) of {ok, Atom} -> lamb_erlang_ffi:table_id(Atom); {error, _} -> {error, nil} end. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 86). -spec is_alive(table(any(), any())) -> boolean(). is_alive(Table) -> case lamb_erlang_ffi:table_id(erlang:element(2, Table)) of {ok, _} -> true; {error, _} -> false end. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 48). -spec create(config()) -> {ok, table(any(), any())} | {error, error()}. create(Config) -> {config, Name, Access, Kind, Registered} = Config, Name@1 = erlang:binary_to_atom(Name), Create = fun() -> Table_id = lamb_erlang_ffi:create_table( Name@1, Access, Kind, Registered ), {table, Table_id, Name@1, Kind, Access, Registered} end, case {Registered, lamb_erlang_ffi:table_id(Name@1)} of {true, {ok, _}} -> {error, {already_registered, Name@1}}; {_, _} -> {ok, Create()} end. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 65). -spec delete(table(any(), any())) -> nil. delete(Table) -> case is_alive(Table) of true -> ets:delete(erlang:element(2, Table)), nil; false -> nil end. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 115). -spec insert(table(HDI, HDJ), HDI, HDJ) -> nil. insert(Table, Index, Record) -> Table_id = erlang:element(2, Table), _assert_subject = ets:insert(Table_id, [{Index, Record}]), 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 => 117}) end, nil. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 149). -spec all(table(HEE, HEF), lamb@query:'query'(HEE, HEF, any())) -> list(any()). all(Table, Query) -> Table_id = erlang:element(2, Table), ets:select(Table_id, [Query]). -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 157). -spec batch(table(HEO, HEP), integer(), lamb@query:'query'(HEO, HEP, any())) -> partial(any()). batch(Table, Limit, Query) -> Table_id = erlang:element(2, Table), lamb_erlang_ffi:search(Table_id, Limit, [Query]). -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 166). -spec continue(step()) -> partial(any()). continue(Step) -> lamb_erlang_ffi:search(Step). -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 122). -spec erase(table(HDM, HDN), lamb@query:'query'(HDM, HDN, any())) -> integer(). erase(Table, Query) -> Table_id = erlang:element(2, Table), Query@1 = lamb_query_erlang_ffi:update_body(Query, true), ets:select_delete(Table_id, [Query@1]). -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 170). -spec count(table(HFA, HFB), lamb@query:'query'(HFA, HFB, any())) -> integer(). count(Table, Query) -> Table_id = erlang:element(2, Table), Query@1 = lamb_query_erlang_ffi:update_body(Query, true), ets:select_count(Table_id, [Query@1]).