use std::path::Path;
use io_fs::{
coroutines::remove_dir::RemoveDir,
error::{FsError, FsResult},
io::FsIo,
};
use thiserror::Error;
#[derive(Clone, Debug, Error)]
pub enum DeleteCollectionError {
#[error("Delete Vdir collection error")]
RemoveDirError(#[from] FsError),
}
#[derive(Clone, Debug)]
pub enum DeleteCollectionResult {
Ok,
Err(DeleteCollectionError),
Io(FsIo),
}
#[derive(Debug)]
pub struct DeleteCollection(RemoveDir);
impl DeleteCollection {
pub fn new(path: impl AsRef<Path>) -> Self {
Self(RemoveDir::new(path.as_ref()))
}
pub fn resume(&mut self, arg: Option<FsIo>) -> DeleteCollectionResult {
match self.0.resume(arg) {
FsResult::Ok(()) => DeleteCollectionResult::Ok,
FsResult::Err(err) => DeleteCollectionResult::Err(err.into()),
FsResult::Io(io) => DeleteCollectionResult::Io(io),
}
}
}