from __future__ import annotations from datetime import datetime from typing import Optional, List, TYPE_CHECKING from pydantic import BaseModel from app.models.project import ProjectStatus if TYPE_CHECKING: from app.schemas.todo import Todo class ProjectBase(BaseModel): name: str description: Optional[str] = None status: ProjectStatus = ProjectStatus.ACTIVE class ProjectCreate(ProjectBase): pass class ProjectUpdate(BaseModel): name: Optional[str] = None description: Optional[str] = None status: Optional[ProjectStatus] = None class Project(ProjectBase): id: int created_at: datetime updated_at: Optional[datetime] = None class Config: from_attributes = True class ProjectWithTodos(Project): todos: List[Todo] = [] class Config: from_attributes = True class ProjectListResponse(BaseModel): items: List[Project] total: int page: int per_page: int has_next: bool has_prev: bool