use async_graphql::{Enum, SimpleObject};
use chrono::{DateTime, Utc};
use poem_openapi::Object;
use strum_macros::{Display, EnumString};
use uuid::Uuid;
use poem_openapi::Enum as OpenApiEnum;
use serde::{Deserialize, Serialize};
#[derive(Debug, SimpleObject, Object, Clone)]
pub struct Task {
pub id: Uuid,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
pub title: String,
pub description: Option<String>,
pub owner_id: Uuid,
pub status: TaskStatus,
pub priority: TaskPriority,
pub due_date: Option<DateTime<Utc>>,
pub project_id: Option<Uuid>,
pub lead_id: Option<Uuid>,
pub count: i32,
pub parent_id: Option<Uuid>,
}
#[derive(
Debug,
Enum,
OpenApiEnum,
Copy,
Clone,
Default,
Display,
EnumString,
Deserialize,
Serialize,
Eq,
PartialEq,
)]
pub enum TaskStatus {
#[default]
None,
Backlog,
ToDo,
InProgress,
Done,
Canceled,
}
#[derive(
Debug,
Enum,
OpenApiEnum,
Copy,
Clone,
Default,
Display,
EnumString,
Deserialize,
Serialize,
Eq,
PartialEq,
)]
pub enum TaskPriority {
#[default]
None,
Low,
Medium,
High,
Urgent,
}