oh-my-todo 0.2.0

Local-first terminal task manager with a mouse-first TUI and CLI.
Documentation
use crate::domain::{SpaceId, TaskStatus};

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum MoveTaskDirection {
    Up,
    Down,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct CreateSpaceCommand {
    pub name: String,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct RenameSpaceCommand {
    pub space_ref: String,
    pub new_name: String,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct SetCurrentSpaceCommand {
    pub space_ref: String,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct CreateTaskCommand {
    pub title: String,
    pub space_ref: Option<String>,
    pub description: Option<String>,
    pub parent_ref: Option<String>,
    pub status: TaskStatus,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct EditTaskCommand {
    pub task_ref: String,
    pub title: Option<String>,
    pub description: Option<String>,
    pub clear_description: bool,
    pub status: Option<TaskStatus>,
    pub parent_ref: Option<String>,
    pub clear_parent: bool,
    pub space_ref: Option<String>,
}

impl EditTaskCommand {
    pub fn has_any_change(&self) -> bool {
        self.title.is_some()
            || self.description.is_some()
            || self.clear_description
            || self.status.is_some()
            || self.parent_ref.is_some()
            || self.clear_parent
            || self.space_ref.is_some()
    }
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct UpdateTaskStatusCommand {
    pub task_ref: String,
    pub status: TaskStatus,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct AddTaskLogCommand {
    pub task_ref: String,
    pub message: String,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct ArchiveTaskCommand {
    pub task_ref: String,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct RestoreTaskCommand {
    pub task_ref: String,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct PurgeTaskCommand {
    pub task_ref: String,
    pub recursive: bool,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct MoveTaskCommand {
    pub task_ref: String,
    pub direction: MoveTaskDirection,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct ArchiveSpaceCommand {
    pub space_ref: String,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct RestoreSpaceCommand {
    pub space_ref: String,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct PurgeSpaceCommand {
    pub space_ref: String,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct TuiLaunchCommand {
    pub space_ref: Option<String>,
    pub space_id: Option<SpaceId>,
}