- Remove duplicate index definition in Task model - Update Query regex to pattern parameter - Use ConfigDict instead of class Config in Pydantic
49 lines
1.2 KiB
Python
49 lines
1.2 KiB
Python
from datetime import datetime
|
|
from enum import Enum
|
|
from typing import Optional
|
|
from pydantic import BaseModel, ConfigDict, Field
|
|
|
|
|
|
class Priority(str, Enum):
|
|
low = "low"
|
|
medium = "medium"
|
|
high = "high"
|
|
|
|
|
|
class TaskBase(BaseModel):
|
|
title: str = Field(..., min_length=1, max_length=200)
|
|
description: Optional[str] = None
|
|
date: str = Field(..., pattern=r"^\d{4}-\d{2}-\d{2}$")
|
|
time: Optional[str] = Field(None, pattern=r"^\d{2}:\d{2}$")
|
|
priority: Priority = Priority.medium
|
|
|
|
|
|
class TaskCreate(TaskBase):
|
|
pass
|
|
|
|
|
|
class TaskUpdate(BaseModel):
|
|
title: Optional[str] = Field(None, min_length=1, max_length=200)
|
|
description: Optional[str] = None
|
|
date: Optional[str] = Field(None, pattern=r"^\d{4}-\d{2}-\d{2}$")
|
|
time: Optional[str] = Field(None, pattern=r"^\d{2}:\d{2}$")
|
|
priority: Optional[Priority] = None
|
|
is_done: Optional[bool] = None
|
|
|
|
|
|
class TaskResponse(TaskBase):
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
id: str
|
|
is_done: bool
|
|
created_at: Optional[datetime]
|
|
updated_at: Optional[datetime]
|
|
|
|
|
|
class RescheduleRequest(BaseModel):
|
|
target_date: str = Field(..., pattern=r"^\d{4}-\d{2}-\d{2}$")
|
|
|
|
|
|
class HealthResponse(BaseModel):
|
|
status: str = "ok"
|