linkrs-storage 0.1.0

Storage engine with CSR and memory-mapped containers
Documentation
use super::SyncWrapper;
use crate::macros::forward_methods;
use crate::{StorageAdmin, StorageAuthOps, StorageClient};
use linkrs_core::{Edge, StorageError};

impl<S: StorageClient + 'static> StorageAuthOps for SyncWrapper<S> {
    forward_methods!(inner;
        fn change_password(&mut self, info: &linkrs_core::types::PasswordInfo) -> Result<bool, StorageError>;
        fn create_user(&mut self, info: &linkrs_core::types::UserInfo) -> Result<bool, StorageError>;
        fn alter_user(&mut self, info: &linkrs_core::types::UserAlterInfo) -> Result<bool, StorageError>;
        fn drop_user(&mut self, username: &str) -> Result<bool, StorageError>;
        fn grant_role(
            &mut self,
            username: &str,
            space_id: i64,
            role: linkrs_core::RoleType,
        ) -> Result<bool, StorageError>;
        fn revoke_role(&mut self, username: &str, space_id: i64) -> Result<bool, StorageError>;
    );

    fn user_exists(&self, username: &str) -> bool {
        self.inner.user_exists(username)
    }

    fn list_users(&self) -> Vec<String> {
        self.inner.list_users()
    }

    fn get_user(&self, username: &str) -> Option<linkrs_core::types::UserInfo> {
        self.inner.get_user(username)
    }

    fn update_last_login(&self, username: &str) -> Result<bool, StorageError> {
        self.inner.update_last_login(username)
    }

    fn list_user_roles(&self, username: &str) -> Vec<(i64, linkrs_core::RoleType)> {
        self.inner.list_user_roles(username)
    }

    fn list_all_user_roles(&self) -> Vec<(String, Vec<(i64, linkrs_core::RoleType)>)> {
        self.inner.list_all_user_roles()
    }
}

impl<S: StorageClient + 'static> StorageAdmin for SyncWrapper<S> {
    forward_methods!(inner;
        fn load_from_disk(&mut self) -> Result<(), StorageError>;
        fn repair_dangling_edges(&mut self, space: &str) -> Result<usize, StorageError>;
    );

    forward_methods!(inner;
        fn save_to_disk(&self) -> Result<(), StorageError>;
        fn get_storage_stats(&self) -> crate::StorageStats;
        fn find_dangling_edges(&self, space: &str) -> Result<Vec<Edge>, StorageError>;
        fn purge_expired(&self, space: &str, target: Option<crate::PurgeTarget<'_>>) -> Result<Vec<crate::TtlPurgeEntry>, StorageError>;
        fn get_db_path(&self) -> &str;
    );
}