pub mod priority;
pub mod todo;
pub mod service;
pub mod validation;
pub use service::TodoService;
#[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum TodoStatus {
Pending,
Completed,
}
impl TodoStatus {
pub const PENDING: &'static str = "pending";
pub const COMPLETED: &'static str = "completed";
pub fn as_str(&self) -> &'static str {
match self {
TodoStatus::Pending => Self::PENDING,
TodoStatus::Completed => Self::COMPLETED,
}
}
pub fn from_status_str(s: &str) -> Option<Self> {
match s {
Self::PENDING => Some(TodoStatus::Pending),
Self::COMPLETED => Some(TodoStatus::Completed),
_ => None,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum SortMode {
#[default]
Priority,
CreatedAt,
}
impl SortMode {
pub fn toggle(&mut self) {
*self = match self {
SortMode::Priority => SortMode::CreatedAt,
SortMode::CreatedAt => SortMode::Priority,
};
}
pub fn label(&self) -> &'static str {
match self {
SortMode::Priority => "priority",
SortMode::CreatedAt => "created",
}
}
}