2025-05-23 06:38:05 +00:00

52 lines
1.7 KiB
Python

from datetime import datetime
from typing import Optional
from pydantic import BaseModel, Field
from app.models.task import TaskPriority, TaskStatus
class TaskBase(BaseModel):
"""Base model for task schema."""
title: str = Field(..., min_length=1, max_length=255, description="Task title")
description: Optional[str] = Field(None, description="Task description")
status: TaskStatus = Field(default=TaskStatus.TODO, description="Task status")
priority: TaskPriority = Field(default=TaskPriority.MEDIUM, description="Task priority")
due_date: Optional[datetime] = Field(None, description="Due date")
completed: bool = Field(default=False, description="Whether the task is completed")
class TaskCreate(TaskBase):
"""Schema for creating a new task."""
pass
class TaskUpdate(BaseModel):
"""Schema for updating an existing task."""
title: Optional[str] = Field(None, min_length=1, max_length=255, description="Task title")
description: Optional[str] = Field(None, description="Task description")
status: Optional[TaskStatus] = Field(None, description="Task status")
priority: Optional[TaskPriority] = Field(None, description="Task priority")
due_date: Optional[datetime] = Field(None, description="Due date")
completed: Optional[bool] = Field(None, description="Whether the task is completed")
class TaskInDB(TaskBase):
"""Schema for task in database."""
id: int
created_at: datetime
updated_at: datetime
class Config:
"""Configuration for the model."""
orm_mode = True
from_attributes = True
class Task(TaskInDB):
"""Schema for task response."""
pass