"""
Schemas for the shared unit-of-measure catalog.
"""

from datetime import datetime
from uuid import UUID

from pydantic import BaseModel, ConfigDict, Field


class UnitBase(BaseModel):
    """Base fields for a unit of measure."""

    name: str = Field(..., min_length=1, max_length=50, description="Unit symbol (e.g. 'mg/dL')")
    description: str | None = Field(None, description="Human description")
    is_active: bool = Field(True, description="Visible in the unit picker")


class UnitCreate(UnitBase):
    """Payload to add a custom unit."""

    pass


class UnitUpdate(BaseModel):
    """Payload to update a unit."""

    name: str | None = Field(None, min_length=1, max_length=50)
    description: str | None = None
    is_active: bool | None = None


class UnitResponse(BaseModel):
    """Response schema for a unit of measure."""

    id: UUID
    name: str
    description: str | None = None
    is_system: bool
    is_active: bool
    created_at: datetime
    updated_at: datetime

    model_config = ConfigDict(from_attributes=True)
