defmodule ExRocket do @moduledoc """ ExRocket — an Elixir NIF wrapper around RocksDB, powered by the maintained `rust-rocksdb` crate. """ alias :erlang, as: Erlang @version Mix.Project.config()[:version] use RustlerPrecompiled, otp_app: :ex_rocket, crate: "rocker", base_url: "https://github.com/mindreframer/ex_rocket/releases/download/v#{@version}", nif_versions: ["2.16"], targets: ~w( aarch64-apple-darwin x86_64-apple-darwin aarch64-unknown-linux-gnu aarch64-unknown-linux-musl x86_64-unknown-linux-gnu x86_64-unknown-linux-musl x86_64-pc-windows-msvc ), force_build: String.downcase(System.get_env("FORCE_BUILD", "nope")) in ["1", "true", "yes"], version: @version def lxcode, do: Erlang.nif_error(:nif_not_loaded) def latest_sequence_number(_db_ref), do: Erlang.nif_error(:nif_not_loaded) def open(_path, _options \\ %{}), do: Erlang.nif_error(:nif_not_loaded) def open_for_read_only(_path, _options \\ %{}), do: Erlang.nif_error(:nif_not_loaded) def destroy(_path, _options \\ %{}), do: Erlang.nif_error(:nif_not_loaded) def repair(_path, _options \\ %{}), do: Erlang.nif_error(:nif_not_loaded) def get_db_path(_db_ref), do: Erlang.nif_error(:nif_not_loaded) def put(_db_ref, _key, _value), do: Erlang.nif_error(:nif_not_loaded) def get(_db_ref, _key), do: Erlang.nif_error(:nif_not_loaded) def get(db_ref, key, default) do case get(db_ref, key) do :undefined -> {:ok, default} result -> result end end def getb(db_ref, key) do case get(db_ref, key) do :undefined -> :undefined {:ok, value} -> {:ok, :erlang.binary_to_term(value)} end end def delete(_db_ref, _key), do: Erlang.nif_error(:nif_not_loaded) def merge(_db_ref, _key, _operand), do: Erlang.nif_error(:nif_not_loaded) def mergeb(db_ref, key, operand), do: merge(db_ref, key, :erlang.term_to_binary(operand)) def merge_cf(_db_ref, _cf_name, _key, _operand), do: Erlang.nif_error(:nif_not_loaded) def merge_cfb(db_ref, cf_name, key, operand), do: merge_cf(db_ref, cf_name, key, :erlang.term_to_binary(operand)) def write_batch(_db_ref, _operations), do: Erlang.nif_error(:nif_not_loaded) def delete_range(_db_ref, _from, _to), do: Erlang.nif_error(:nif_not_loaded) def multi_get(_db_ref, _keys), do: Erlang.nif_error(:nif_not_loaded) def key_may_exist(_db_ref, _key), do: Erlang.nif_error(:nif_not_loaded) def iterator(_db_ref, _mode), do: Erlang.nif_error(:nif_not_loaded) def iterator_range(_db_ref, _mode, _from, _to, _read_options \\ %{}), do: Erlang.nif_error(:nif_not_loaded) def prefix_iterator(_db_ref, _prefix), do: Erlang.nif_error(:nif_not_loaded) def next(_iterator_ref), do: Erlang.nif_error(:nif_not_loaded) def create_cf(_db_ref, _cf_name, _options \\ %{}), do: Erlang.nif_error(:nif_not_loaded) def open_cf(_path, _cf_names, _options \\ %{}), do: Erlang.nif_error(:nif_not_loaded) def open_cf_for_read_only(_path, _cf_names, _options \\ %{}), do: Erlang.nif_error(:nif_not_loaded) def list_cf(_path, _options \\ %{}), do: Erlang.nif_error(:nif_not_loaded) def drop_cf(_db_ref, _cf_name), do: Erlang.nif_error(:nif_not_loaded) def put_cf(_db_ref, _cf_name, _key, _value), do: Erlang.nif_error(:nif_not_loaded) def get_cf(_db_ref, _cf_name, _key), do: Erlang.nif_error(:nif_not_loaded) def get_cf(db_ref, cf_name, key, default) do case get_cf(db_ref, cf_name, key) do :undefined -> {:ok, default} result -> result end end def get_cfb(db_ref, cf_name, key) do case get_cf(db_ref, cf_name, key) do :undefined -> :undefined {:ok, value} -> {:ok, :erlang.binary_to_term(value)} end end def delete_cf(_db_ref, _cf_name, _key), do: Erlang.nif_error(:nif_not_loaded) def delete_range_cf(_db_ref, _cf_name, _from, _to), do: Erlang.nif_error(:nif_not_loaded) def multi_get_cf(_db_ref, _keys), do: Erlang.nif_error(:nif_not_loaded) def key_may_exist_cf(_db_ref, _cf_name, _key), do: Erlang.nif_error(:nif_not_loaded) def iterator_cf(_db_ref, _cf_name, _mode), do: Erlang.nif_error(:nif_not_loaded) def prefix_iterator_cf(_db_ref, _cf_name, _prefix), do: Erlang.nif_error(:nif_not_loaded) def snapshot(_db_ref), do: Erlang.nif_error(:nif_not_loaded) def snapshot_get(_snapshot_ref, _key), do: Erlang.nif_error(:nif_not_loaded) def snapshot_get(snapshot_ref, key, default) do case snapshot_get(snapshot_ref, key) do :undefined -> {:ok, default} result -> result end end def snapshot_get_cf(_snapshot_ref, _cf_name, _key), do: Erlang.nif_error(:nif_not_loaded) def snapshot_get_cf(snapshot_ref, cf_name, key, default) do case snapshot_get_cf(snapshot_ref, cf_name, key) do :undefined -> {:ok, default} result -> result end end def snapshot_multi_get(_snapshot_ref, _keys), do: Erlang.nif_error(:nif_not_loaded) def snapshot_multi_get_cf(_snapshot_ref, _keys), do: Erlang.nif_error(:nif_not_loaded) def snapshot_iterator(_snapshot_ref, _mode), do: Erlang.nif_error(:nif_not_loaded) def snapshot_iterator_cf(_snapshot_ref, _cf_name, _mode), do: Erlang.nif_error(:nif_not_loaded) def create_checkpoint(_db_ref, _path), do: Erlang.nif_error(:nif_not_loaded) def create_backup(_db_ref, _path), do: Erlang.nif_error(:nif_not_loaded) def get_backup_info(_backup_path), do: Erlang.nif_error(:nif_not_loaded) def purge_old_backups(_backup_path, _keep), do: Erlang.nif_error(:nif_not_loaded) def restore_from_backup(_backup_path, _restore_path, _backup_id), do: Erlang.nif_error(:nif_not_loaded) def restore_from_backup(backup_path, restore_path), do: restore_from_backup(backup_path, restore_path, -1) end