mod ops;
mod types;
pub use ops::*;
pub use types::*;
use alloc::collections::BTreeMap;
use alloc::string::String;
use alloc::vec::Vec;
use lazy_static::lazy_static;
use spin::Mutex;
lazy_static! {
static ref TRASH_METADATA: Mutex<BTreeMap<String, TrashMetadata>> = Mutex::new(BTreeMap::new());
static ref TRASH_CONFIG: Mutex<BTreeMap<String, TrashConfig>> = Mutex::new(BTreeMap::new());
}
pub struct Trash;
impl Trash {
pub fn delete(dataset: &str, path: &str) -> Result<u64, TrashError> {
trash_delete(dataset, path)
}
pub fn restore(
dataset: &str,
trash_id: u64,
target_path: Option<&str>,
) -> Result<(), TrashError> {
trash_restore(dataset, trash_id, target_path)
}
pub fn list(dataset: &str) -> Result<Vec<TrashEntry>, TrashError> {
trash_list(dataset)
}
pub fn empty(dataset: &str, filter: TrashFilter) -> Result<TrashEmptyResult, TrashError> {
trash_empty(dataset, filter)
}
pub fn size(dataset: &str) -> Result<u64, TrashError> {
trash_size(dataset)
}
pub fn configure(dataset: &str, config: TrashConfig) -> Result<(), TrashError> {
set_trash_config(dataset, config)
}
pub fn get_config(dataset: &str) -> TrashConfig {
get_trash_config(dataset)
}
pub fn permanent_delete(dataset: &str, path: &str) -> Result<(), TrashError> {
permanent_delete(dataset, path)
}
pub fn is_in_trash(dataset: &str, path: &str) -> bool {
path.contains(TRASH_DIR)
}
}
pub const TRASH_DIR: &str = ".lcpfs_trash";
pub const TRASH_ITEMS: &str = "items";
pub const TRASH_METADATA_FILE: &str = "metadata.json";