2025-05-30 17:39:08 +00:00

65 lines
1.4 KiB
Python

"""
Task schemas for API request and response validation
"""
from datetime import datetime
from typing import Optional
from pydantic import BaseModel, Field
from app.models.task import TaskPriority, TaskStatus
class TaskBase(BaseModel):
"""
Base task schema with common attributes
"""
title: str = Field(..., min_length=1, max_length=255)
description: Optional[str] = None
status: Optional[TaskStatus] = TaskStatus.TODO
priority: Optional[TaskPriority] = TaskPriority.MEDIUM
due_date: Optional[datetime] = None
class TaskCreate(TaskBase):
"""
Schema for task creation
"""
pass
class TaskUpdate(BaseModel):
"""
Schema for task update
"""
title: Optional[str] = Field(None, min_length=1, max_length=255)
description: Optional[str] = None
status: Optional[TaskStatus] = None
priority: Optional[TaskPriority] = None
due_date: Optional[datetime] = None
is_deleted: Optional[bool] = None
class TaskInDBBase(TaskBase):
"""
Base schema for task in database
"""
id: int
owner_id: int
created_at: datetime
updated_at: datetime
is_deleted: bool
class Config:
"""
Pydantic config
"""
orm_mode = True
class Task(TaskInDBBase):
"""
Schema for task response
"""
pass
class TaskInDB(TaskInDBBase):
"""
Schema for task in database
"""
pass