2025-05-18 19:36:06 +00:00

45 lines
1.1 KiB
Python

from datetime import datetime
from enum import Enum
from typing import Optional
from pydantic import BaseModel, Field
class PriorityEnum(int, Enum):
LOW = 1
MEDIUM = 2
HIGH = 3
class TaskBase(BaseModel):
title: str = Field(..., min_length=1, max_length=255, description="Title of the task")
description: Optional[str] = Field(None, description="Detailed description of the task")
priority: PriorityEnum = Field(PriorityEnum.MEDIUM, description="Priority level of the task")
due_date: Optional[datetime] = Field(None, description="Due date for the task")
class TaskCreate(TaskBase):
pass
class TaskUpdate(BaseModel):
title: Optional[str] = Field(None, min_length=1, max_length=255)
description: Optional[str] = None
is_completed: Optional[bool] = None
priority: Optional[PriorityEnum] = None
due_date: Optional[datetime] = None
class TaskInDB(TaskBase):
id: int
is_completed: bool
created_at: datetime
updated_at: datetime
completed_at: Optional[datetime] = None
class Config:
from_attributes = True
class TaskResponse(TaskInDB):
"""Task schema for response"""
pass