tododo 0.1.2

A minimal terminal todo manager built with Rust and Ratatui
Documentation
use super::priority::Priority;
use super::TodoStatus;
use crate::entity::todo_item::Model as TodoModel;
use chrono::{DateTime, FixedOffset};
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Todo {
    pub id: String,
    pub title: String,
    pub note: String,
    pub status: TodoStatus,
    pub priority: Priority,
    pub created_at: DateTime<FixedOffset>,
    pub updated_at: DateTime<FixedOffset>,
    pub completed_at: Option<DateTime<FixedOffset>>,
    pub deleted_at: Option<DateTime<FixedOffset>>,
}

impl From<TodoModel> for Todo {
    fn from(model: TodoModel) -> Self {
        Todo {
            id: model.id,
            title: model.title,
            note: model.note,
            status: TodoStatus::from_status_str(&model.status).unwrap_or(TodoStatus::Pending),
            priority: Priority::new(model.priority),
            created_at: model.created_at,
            updated_at: model.updated_at,
            completed_at: model.completed_at,
            deleted_at: model.deleted_at,
        }
    }
}

impl From<Todo> for TodoModel {
    fn from(todo: Todo) -> Self {
        TodoModel {
            id: todo.id,
            title: todo.title,
            note: todo.note,
            status: todo.status.as_str().to_string(),
            priority: todo.priority.into(),
            created_at: todo.created_at,
            updated_at: todo.updated_at,
            completed_at: todo.completed_at,
            deleted_at: todo.deleted_at,
        }
    }
}