todoist_tui/model/
command.rs

1use super::{due_date::Due, item, project};
2use serde::{Deserialize, Serialize};
3use uuid::Uuid;
4
5#[derive(Debug, Serialize, Deserialize, Clone)]
6pub struct Command {
7    // TODO: enumify this
8    #[serde(rename = "type")]
9    pub request_type: String,
10    pub uuid: Uuid,
11    pub temp_id: Option<String>,
12    pub args: Args,
13}
14
15#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
16#[serde(untagged)]
17pub enum Args {
18    AddItemCommandArgs(AddItemArgs),
19    CompleteItemCommandArgs(CompleteItemArgs),
20}
21
22#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
23pub struct AddItemArgs {
24    pub project_id: project::Id,
25    pub content: String,
26    pub due: Option<Due>,
27}
28
29#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
30pub struct CompleteItemArgs {
31    pub id: item::Id,
32    // TODO:
33    // pub completed_date: ????,
34}