storage-kit 0.0.1

Portable database and transactional state-store Kit.
Documentation
use crate::{CapabilitySet, SurrealConfig, SurrealModeConfig};

use super::manager::SurrealContextKey;

impl SurrealConfig {
    pub(crate) fn capabilities(&self) -> CapabilitySet {
        CapabilitySet::DENSE_VECTOR
            | CapabilitySet::FULL_TEXT
            | CapabilitySet::FILTERING
            | CapabilitySet::SCHEMA_EVOLUTION
            | CapabilitySet::WAIT_FOR_INDEX
            | CapabilitySet::ATOMIC_PARTITION_REPLACE
    }

    pub(crate) fn mode_label(&self) -> &'static str {
        match &self.mode {
            SurrealModeConfig::Mem => "embedded-mem",
            SurrealModeConfig::RocksDb { .. } => "embedded-rocksdb",
            SurrealModeConfig::SurrealKv { .. } => "embedded-surrealkv",
            SurrealModeConfig::RemoteWs { .. } => "remote-ws",
            SurrealModeConfig::RemoteHttp { .. } => "remote-http",
        }
    }

    pub(crate) fn endpoint_string(&self) -> String {
        super::mapper::endpoint_from_mode(&self.mode)
    }

    pub(super) fn context_key(&self) -> Option<SurrealContextKey> {
        match (&self.namespace, &self.database) {
            (Some(namespace), Some(database)) => Some(SurrealContextKey {
                namespace: namespace.clone(),
                database: database.clone(),
            }),
            _ => None,
        }
    }
}