Current section
Files
Jump to
Current section
Files
src/lamb.erl
-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).