use io_fs::{
coroutines::create_file::CreateFile,
error::{FsError, FsResult},
io::FsIo,
};
use thiserror::Error;
use crate::item::Item;
#[derive(Clone, Debug, Error)]
pub enum CreateItemError {
#[error("Create Vdir item error")]
CreateFileError(#[from] FsError),
}
#[derive(Clone, Debug)]
pub enum CreateItemResult {
Ok,
Err(CreateItemError),
Io(FsIo),
}
#[derive(Debug)]
pub struct CreateItem(CreateFile);
impl CreateItem {
pub fn new(item: Item) -> Self {
let bytes = item.to_string().into_bytes();
Self(CreateFile::new(item.path, bytes))
}
pub fn resume(&mut self, arg: Option<FsIo>) -> CreateItemResult {
match self.0.resume(arg) {
FsResult::Ok(()) => CreateItemResult::Ok,
FsResult::Err(err) => CreateItemResult::Err(err.into()),
FsResult::Io(io) => CreateItemResult::Io(io),
}
}
}