Automated Action 19ab35d8f5 Add priority levels, enhanced pagination, and search/filtering
- Add Priority enum (low, medium, high) to Todo model with default medium
- Create migration to add priority field to existing todos table
- Enhance pagination with proper metadata (page, total, has_next, has_prev)
- Add search functionality across title and description fields
- Add filtering by completion status and priority level
- Update API endpoints with query parameters for filtering and search
- Add TodoListResponse schema for structured pagination response
- Format code with Ruff
2025-06-18 01:01:29 +00:00

42 lines
792 B
Python

from datetime import datetime
from typing import Optional
from pydantic import BaseModel
from app.models.todo import Priority
class TodoBase(BaseModel):
title: str
description: Optional[str] = None
completed: bool = False
priority: Priority = Priority.MEDIUM
class TodoCreate(TodoBase):
pass
class TodoUpdate(BaseModel):
title: Optional[str] = None
description: Optional[str] = None
completed: Optional[bool] = None
priority: Optional[Priority] = None
class Todo(TodoBase):
id: int
created_at: datetime
updated_at: Optional[datetime] = None
class Config:
from_attributes = True
class TodoListResponse(BaseModel):
items: list[Todo]
total: int
page: int
per_page: int
has_next: bool
has_prev: bool