defmodule ExRocket do @moduledoc """ ExRocket - wrapper for RocksDB. """ 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", "2.17"], targets: ~w( aarch64-apple-darwin x86_64-apple-darwin 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} some -> some end end @doc """ Get a value from the database and convert it to an Erlang term. """ def getb(db_ref, key) do case get(db_ref, key) do :undefined -> :undefined {:ok, some} -> {:ok, :erlang.binary_to_term(some)} 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) @doc """ Convert the operand to a binary and merge it with the key. """ def mergeb(db_ref, key, operand) do operandb = :erlang.term_to_binary(operand) merge(db_ref, key, operandb) end 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 operandb = :erlang.term_to_binary(operand) merge_cf(db_ref, cf_name, key, operandb) end def write_batch(_db_ref, _ops), 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 next(_iter_ref), do: Erlang.nif_error(:nif_not_loaded) def prefix_iterator(_db_ref, _prefix), 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} some -> some end end def get_cfb(db_ref, cf_name, key) do case get_cf(db_ref, cf_name, key) do :undefined -> :undefined {:ok, some} -> {:ok, :erlang.binary_to_term(some)} end end def delete_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 delete_range(_db_ref, _key_from, _key_to), do: Erlang.nif_error(:nif_not_loaded) def delete_range_cf(_db_ref, _cf_name, _key_from, _key_to), do: Erlang.nif_error(:nif_not_loaded) def multi_get(_db_ref, _keys), 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(_db_ref, _key), 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 snapshot(_db_ref), do: Erlang.nif_error(:nif_not_loaded) def snapshot_get(_snap_ref, _key), do: Erlang.nif_error(:nif_not_loaded) def snapshot_get(snap_ref, key, default) do case snapshot_get(snap_ref, key) do :undefined -> {:ok, default} some -> some end end def snapshot_get_cf(_snap_ref, _cf_name, _key), do: Erlang.nif_error(:nif_not_loaded) def snapshot_get_cf(snap_ref, cf_name, key, default) do case snapshot_get_cf(snap_ref, cf_name, key) do :undefined -> {:ok, default} some -> some end end def snapshot_multi_get(_snap_ref, _keys), do: Erlang.nif_error(:nif_not_loaded) def snapshot_multi_get_cf(_snap_ref, _keys), do: Erlang.nif_error(:nif_not_loaded) def snapshot_iterator(_snap_ref, _mode), do: Erlang.nif_error(:nif_not_loaded) def snapshot_iterator_cf(_snap_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, _num_backups_to_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