wedb_embed 0.1.2

Embedded database engine providing Redis-like APIs, built on fjall / 嵌入式数据库引擎,提供类似 Redis 的接口,底层基于 fjall 开发
Documentation
use crate::{
  api::json::{conf::JsonSet, meta::JsonStorageFormat},
  error::Result,
  traits::DbLike,
};

/// JSON 数据结构操作接口 (JSON)
pub trait Json: DbLike {
  fn json_set<K: AsRef<[u8]>>(&self, key: K, path: &str, json_str: &str) -> Result<bool>;
  fn json_set_opt<K: AsRef<[u8]>>(
    &self,
    key: K,
    path: &str,
    json_str: &str,
    opt: Option<JsonSet>,
  ) -> Result<bool>;
  fn json_get<K: AsRef<[u8]>>(&self, key: K, path: Option<&str>) -> Result<Option<String>>;
  fn json_get_formatted<K: AsRef<[u8]>>(
    &self,
    key: K,
    paths: &[&str],
    indent: Option<&str>,
    newline: Option<&str>,
    space: Option<&str>,
  ) -> Result<Option<String>>;
  fn json_mget<K: AsRef<[u8]>>(&self, keys: &[K], path: &str) -> Result<Vec<Option<String>>>;
  fn json_mset<K: AsRef<[u8]>>(&self, triplets: &[(K, &str, &str)]) -> Result<()>;
  fn json_del<K: AsRef<[u8]>>(&self, key: K, path: Option<&str>) -> Result<usize>;
  fn json_forget<K: AsRef<[u8]>>(&self, key: K, path: Option<&str>) -> Result<usize>;
  fn json_type<K: AsRef<[u8]>>(&self, key: K, path: Option<&str>) -> Result<Vec<String>>;
  fn json_numincrby<K: AsRef<[u8]>>(
    &self,
    key: K,
    path: &str,
    num_str: &str,
  ) -> Result<Option<String>>;
  fn json_nummultby<K: AsRef<[u8]>>(
    &self,
    key: K,
    path: &str,
    num_str: &str,
  ) -> Result<Option<String>>;
  fn json_strappend<K: AsRef<[u8]>>(
    &self,
    key: K,
    path: Option<&str>,
    str_to_append: &str,
  ) -> Result<Vec<Option<usize>>>;
  fn json_strlen<K: AsRef<[u8]>>(&self, key: K, path: Option<&str>) -> Result<Vec<Option<usize>>>;
  fn json_arrappend<K: AsRef<[u8]>>(
    &self,
    key: K,
    path: &str,
    values_json: &[&str],
  ) -> Result<Vec<Option<usize>>>;
  fn json_arrinsert<K: AsRef<[u8]>>(
    &self,
    key: K,
    path: &str,
    index: isize,
    values_json: &[&str],
  ) -> Result<Vec<Option<usize>>>;
  fn json_arrindex<K: AsRef<[u8]>>(
    &self,
    key: K,
    path: &str,
    needle_json: &str,
    start: isize,
    stop: Option<isize>,
  ) -> Result<Vec<Option<isize>>>;
  fn json_arrlen<K: AsRef<[u8]>>(&self, key: K, path: Option<&str>) -> Result<Vec<Option<usize>>>;
  fn json_arrpop<K: AsRef<[u8]>>(
    &self,
    key: K,
    path: Option<&str>,
    index: Option<isize>,
  ) -> Result<Vec<Option<String>>>;
  fn json_arrtrim<K: AsRef<[u8]>>(
    &self,
    key: K,
    path: &str,
    start: isize,
    stop: isize,
  ) -> Result<Vec<Option<usize>>>;
  fn json_clear<K: AsRef<[u8]>>(&self, key: K, path: Option<&str>) -> Result<usize>;
  fn json_toggle<K: AsRef<[u8]>>(&self, key: K, path: Option<&str>) -> Result<Vec<Option<bool>>>;
  fn json_merge<K: AsRef<[u8]>>(&self, key: K, path: &str, patch_json: &str) -> Result<bool>;
  fn json_objkeys<K: AsRef<[u8]>>(
    &self,
    key: K,
    path: Option<&str>,
  ) -> Result<Vec<Option<Vec<String>>>>;
  fn json_objlen<K: AsRef<[u8]>>(&self, key: K, path: Option<&str>) -> Result<Vec<Option<usize>>>;
  fn json_debug_memory<K: AsRef<[u8]>>(&self, key: K, path: Option<&str>) -> Result<Vec<usize>>;
  fn json_info<K: AsRef<[u8]>>(&self, key: K) -> Result<Option<(JsonStorageFormat, usize)>>;
}