Packages

A high-performance, analytical Datalog engine for Gleam

Current section

Files

Jump to
aarondb src aarondb@shared@state.erl
Raw

src/aarondb@shared@state.erl

-module(aarondb@shared@state).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/aarondb/shared/state.gleam").
-export_type([config/0, query_context/0, index_adapter/0, extension_instance/0, index_query/0, db_state/0, reactive_message/0]).
-type config() :: {config, integer(), integer(), boolean(), integer()}.
-type query_context() :: {query_context,
list(binary()),
list(aarondb@fact:entity_id()),
integer()}.
-type index_adapter() :: {index_adapter,
binary(),
fun((binary()) -> gleam@dynamic:dynamic_()),
fun((gleam@dynamic:dynamic_(), list(aarondb@fact:datom())) -> gleam@dynamic:dynamic_()),
fun((gleam@dynamic:dynamic_(), index_query(), float()) -> list(aarondb@fact:entity_id()))}.
-type extension_instance() :: {extension_instance,
binary(),
binary(),
gleam@dynamic:dynamic_()}.
-type index_query() :: {text_query, binary()} |
{numeric_range, float(), float()} |
{custom, binary()}.
-type db_state() :: {db_state,
aarondb@storage:storage_adapter(),
gleam@dict:dict(aarondb@fact:entity_id(), list(aarondb@fact:datom())),
gleam@dict:dict(binary(), list(aarondb@fact:datom())),
gleam@dict:dict(binary(), gleam@dict:dict(aarondb@fact:value(), aarondb@fact:entity_id())),
integer(),
list(gleam@erlang@process:subject(list(aarondb@fact:datom()))),
gleam@dict:dict(binary(), aarondb@fact:attribute_config()),
gleam@dict:dict(binary(), fun((db_state(), integer(), integer(), list(aarondb@fact:value())) -> list({aarondb@fact:eid(),
binary(),
aarondb@fact:value()}))),
list(list(binary())),
gleam@erlang@process:subject(reactive_message()),
list(gleam@erlang@process:pid_()),
boolean(),
gleam@option:option(binary()),
aarondb@raft:raft_state(),
aarondb@vec_index:vec_index(),
gleam@dict:dict(binary(), aarondb@index@bm25:b_m25_index()),
aarondb@index@art:art(),
gleam@dict:dict(binary(), index_adapter()),
gleam@dict:dict(binary(), extension_instance()),
gleam@dict:dict(binary(), fun((aarondb@fact:value()) -> boolean())),
list(aarondb@shared@ast:rule()),
gleam@dict:dict(binary(), fun((list(aarondb@fact:value())) -> list(list(aarondb@fact:value())))),
gleam@dict:dict(binary(), list(aarondb@storage@internal:storage_chunk())),
config(),
list(query_context())}.
-type reactive_message() :: {subscribe,
aarondb@shared@ast:'query'(),
list(binary()),
gleam@erlang@process:subject(aarondb@shared@query_types:reactive_delta()),
aarondb@shared@query_types:query_result()} |
{notify, list(binary()), db_state()}.