use std::collections::BTreeMap; #[derive(Clone, Debug, PartialEq, Eq)] pub struct StoredProjectRoot { pub path: String, } #[derive(Clone, Debug, PartialEq, Eq)] pub struct StoredProject { pub id: String, pub name: String, pub roots: Vec, pub metadata: BTreeMap, pub position: i64, pub created_at_ms: i64, pub updated_at_ms: i64, } #[derive(Clone, Debug, PartialEq, Eq)] pub struct StoredProjectsPage { pub projects: Vec, pub next_cursor: Option, } #[derive(Clone, Debug, PartialEq, Eq)] pub struct ListProjectsParams { pub cursor: Option, pub limit: usize, } #[derive(Clone, Debug, PartialEq, Eq)] pub struct CreateProjectParams { pub name: String, pub roots: Vec, pub metadata: BTreeMap, pub thread_ids: Vec, pub idempotency_key: String, } #[derive(Clone, Debug, PartialEq, Eq)] pub struct CreatedProject { pub project: StoredProject, pub created: bool, } #[derive(Clone, Debug, PartialEq, Eq)] pub struct UpdateProjectParams { pub project_id: String, pub name: Option, pub roots: Option>, pub metadata: Option>, } #[derive(Clone, Debug, PartialEq, Eq)] pub struct MoveProjectParams { pub project_id: String, pub before_project_id: Option, } #[derive(Clone, Debug, PartialEq, Eq)] pub enum ProjectMoveOutcome { Unchanged, Moved, } #[derive(Clone, Debug, PartialEq, Eq)] pub struct UpdatedProject { pub project: StoredProject, pub changed: bool, } #[derive(Clone, Debug, PartialEq, Eq)] pub struct DeletedProject { pub affected_active_thread_ids: Vec, pub affected_archived_thread_ids: Vec, }