wedb_embed 0.1.1

Embedded database engine providing Redis-like APIs, built on fjall / 嵌入式数据库引擎,提供类似 Redis 的接口,底层基于 fjall 开发
Documentation
use std::borrow::Cow;

pub const DEFAULT_NAMESPACE: &str = "default";

pub const NS_NAME_PREFIX: &str = "_meta:nsName:";

/// 构造命名空间名称元数据键
#[inline]
pub fn ns_name_key(ns: &str) -> String {
    format!("{NS_NAME_PREFIX}{ns}")
}

/// SELECT db 与命名空间转换(全面支持 u64 数据库编号,db 0 -> "default", db N -> "dbN")
#[inline]
pub fn db_to_namespace(db: u64) -> Cow<'static, str> {
    match db {
        0 => Cow::Borrowed("default"),
        1 => Cow::Borrowed("db1"),
        2 => Cow::Borrowed("db2"),
        3 => Cow::Borrowed("db3"),
        4 => Cow::Borrowed("db4"),
        5 => Cow::Borrowed("db5"),
        6 => Cow::Borrowed("db6"),
        7 => Cow::Borrowed("db7"),
        8 => Cow::Borrowed("db8"),
        9 => Cow::Borrowed("db9"),
        10 => Cow::Borrowed("db10"),
        11 => Cow::Borrowed("db11"),
        12 => Cow::Borrowed("db12"),
        13 => Cow::Borrowed("db13"),
        14 => Cow::Borrowed("db14"),
        15 => Cow::Borrowed("db15"),
        _ => Cow::Owned(format!("db{db}")),
    }
}

/// 判断命名空间是否为默认命名空间(支持 "default", "0", "db0", "" 等)
#[inline]
pub fn is_default_namespace(ns: &str) -> bool {
    ns == DEFAULT_NAMESPACE || ns == "0" || ns == "db0" || ns.is_empty()
}

/// 字节切片版本判断
#[inline]
pub fn is_default_namespace_bytes(ns: &[u8]) -> bool {
    ns == DEFAULT_NAMESPACE.as_bytes() || ns == b"0" || ns == b"db0" || ns.is_empty()
}

/// 命名空间解析为 DB 索引(支持 u64)
#[inline]
pub fn namespace_to_db(ns: &str) -> u64 {
    if is_default_namespace(ns) {
        0
    } else if let Some(stripped) = ns.strip_prefix("db") {
        stripped.parse::<u64>().unwrap_or(0)
    } else {
        ns.parse::<u64>().unwrap_or_default()
    }
}