-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, search/2, search_partial/3, continue/1, search_count/2, count/1, all/1, partial/2]). -export_type([table/2, partial/1, access/0, match_function/0, step/0]). -opaque table(GIP, GIQ) :: {table, gleam@erlang:reference_()} | {gleam_phantom, GIP, GIQ}. -type partial(GIR) :: {records, list(GIR), step()} | {'end', list(GIR)}. -type access() :: public | protected | private. -type match_function() :: any(). -type step() :: any(). -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 67). -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", 60). -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", 74). -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", 27). -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", 49). -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", 85). -spec insert(table(GJS, GJT), GJS, GJT) -> 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 => 87}) end, nil. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 92). -spec delete(table(GJW, any()), GJW) -> 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 => 94}) end, nil. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 101). -spec get(table(GKA, GKB), GKA) -> {ok, GKB} | {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", 129). -spec search(table(any(), any()), list(match_function())) -> list(any()). search(Table, Expression) -> {table, Table_id} = Table, lamb_erlang_ffi:search(Table_id, Expression). -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 138). -spec search_partial(table(any(), any()), integer(), list(match_function())) -> partial(any()). search_partial(Table, Limit, Expression) -> {table, Table_id} = Table, lamb_erlang_ffi:search(Table_id, Limit, Expression). -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 121). -spec continue(step()) -> partial(any()). continue(Step) -> lamb_erlang_ffi:search(Step). -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 147). -spec search_count(table(any(), any()), list(match_function())) -> integer(). search_count(Table, Expression) -> {table, Table_id} = Table, lamb_erlang_ffi:count(Table_id, Expression). -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 116). -spec count(table(any(), any())) -> integer(). count(Table) -> Query = lamb_erlang_queries_ffi:query_count(), search_count(Table, Query). -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 106). -spec all(table(any(), GKH)) -> list(GKH). all(Table) -> Query = lamb_erlang_queries_ffi:query_record(), search(Table, Query). -file("/Users/chouzar/Bench/Projects/lamb/src/lamb.gleam", 111). -spec partial(table(any(), GKM), integer()) -> partial(GKM). partial(Table, Limit) -> Query = lamb_erlang_queries_ffi:query_record(), search_partial(Table, Limit, Query).