-module(lamb). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([from_name/1, is_alive/1, create_table/2, delete_table/1, insert/3, delete/2, get/2, all/2, batch/3, continue/1, count/2]). -export_type([table/2, partial/1, access/0, step/0]). -opaque table(GMC, GMD) :: {table, gleam@erlang:reference_()} | {gleam_phantom, GMC, GMD}. -type partial(GME) :: {records, list(GME), step()} | {'end', list(GME)}. -type access() :: public | protected | private. -type step() :: any(). -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 70). -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", 63). -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", 77). -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", 30). -spec create_table(access(), binary()) -> {ok, table(any(), any())} | {error, nil}. create_table(Access, Name) -> Name@1 = erlang:binary_to_atom(Name), case Access of private -> Table_id = lamb_erlang_ffi:create_table(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(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(Access, Name@1), from_atom(_pipe) end end. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 52). -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", 88). -spec insert(table(GNF, GNG), GNF, GNG) -> nil. insert(Table, Index, Record) -> {table, Table_id} = 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 => 90}) end, nil. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 95). -spec delete(table(GNJ, any()), GNJ) -> nil. delete(Table, Index) -> {table, Table_id} = Table, _assert_subject = ets:delete(Table_id, Index), 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 => <<"delete"/utf8>>, line => 97}) end, nil. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 104). -spec get(table(GNN, GNO), GNN) -> {ok, GNO} | {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", 109). -spec all(table(GNT, GNU), list(lamb@query:'query'(GNT, GNU))) -> list(any()). all(Table, Queries) -> {table, Table_id} = Table, case Queries of [] -> lamb_erlang_ffi:search(Table_id, [lamb_query_erlang_ffi:new()]); Queries@1 -> lamb_erlang_ffi:search(Table_id, Queries@1) end. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 121). -spec batch(table(GOC, GOD), integer(), list(lamb@query:'query'(GOC, GOD))) -> partial(GOD). batch(Table, Limit, Queries) -> {table, Table_id} = Table, case Queries of [] -> lamb_erlang_ffi:search( Table_id, Limit, [lamb_query_erlang_ffi:new()] ); Queries@1 -> lamb_erlang_ffi:search(Table_id, Limit, Queries@1) end. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 134). -spec continue(step()) -> partial(any()). continue(Step) -> lamb_erlang_ffi:search(Step). -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 138). -spec count(table(GOM, GON), list(lamb@query:'query'(GOM, GON))) -> integer(). count(Table, Queries) -> {table, Table_id} = Table, case Queries of [] -> lamb_erlang_ffi:count(Table_id, [lamb_query_erlang_ffi:new()]); Queries@1 -> lamb_erlang_ffi:count(Table_id, Queries@1) end.