pub mod fs; use crate::domain; #[derive(Debug)] pub enum Error { NotFound, InvalidData, InsertData, } impl std::fmt::Display for Error { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { Error::NotFound => f.write_str("Cannot find data"), Error::InvalidData => f.write_str("Invalid data format"), Error::InsertData => f.write_str("Cannot insert data"), } } } impl std::error::Error for Error {} pub struct InsertTaskData { name: String, link: Option, } pub struct UpdateTaskData { name: Option, link: Option>, } pub trait Repository { fn get_tasks(&self) -> Result, Error>; fn update_task( &self, id: domain::TaskId, update_data: UpdateTaskData, ) -> Result; fn insert_task(&self, insert_data: InsertTaskData) -> Result; }