2025-05-19 22:32:24 +00:00

40 lines
1.1 KiB
Python

from typing import Optional
from datetime import datetime
from pydantic import BaseModel, Field
from app.models.task import TaskStatus, TaskPriority
class TaskBase(BaseModel):
"""Base schema for Task."""
title: str
description: Optional[str] = None
due_date: Optional[datetime] = None
status: TaskStatus = TaskStatus.TODO
priority: TaskPriority = TaskPriority.MEDIUM
class TaskCreate(TaskBase):
"""Schema for creating a Task."""
title: str = Field(..., min_length=1, max_length=200)
class TaskUpdate(BaseModel):
"""Schema for updating a Task."""
title: Optional[str] = Field(None, min_length=1, max_length=200)
description: Optional[str] = None
due_date: Optional[datetime] = None
status: Optional[TaskStatus] = None
priority: Optional[TaskPriority] = None
class TaskInDBBase(TaskBase):
"""Base schema for Task with DB fields."""
id: str
created_at: datetime
updated_at: datetime
completed_at: Optional[datetime] = None
class Config:
orm_mode = True
from_attributes = True
class Task(TaskInDBBase):
"""Schema for returning a Task."""
pass