godchat-core 0.1.0

Core types and traits for godchat
Documentation
use crate::types::*;

pub trait ProjectManager: Send + Sync {
    fn list(&self) -> Vec<Project>;
    fn get(&self, id: &ProjectId) -> Option<Project>;
    fn upsert(&self, project: &Project);
    fn overview(&self, id: &ProjectId) -> Option<ProjectOverview>;
    fn status_report(&self) -> StatusReport;
}

pub trait TaskManager: Send + Sync {
    fn branch(
        &self,
        project_id: &ProjectId,
        name: TaskName,
        title: String,
        context_brief: String,
        parent_id: Option<TaskId>,
    ) -> Result<BranchResult, TaskError>;

    fn transition(&self, id: &TaskId, to: TaskStatus) -> Result<TaskSummary, TaskError>;
    fn complete(&self, id: &TaskId, summary: &str) -> Result<TaskSummary, TaskError>;
    fn get(&self, id: &TaskId) -> Option<TaskSummary>;
    fn children(&self, id: &TaskId) -> Vec<TaskSummary>;
}