""" Pydantic domain models for the Veterinary Clinic example. This module defines Pydantic models representing the five domain entities used by the veterinary clinic service. These models are referenced by the OpenAPI specification for request and response schemas. The models are declarative and framework-agnostic. They contain no persistence logic, validation beyond type constraints, or business behavior. This module is not part of the ``openapi_first`` library API surface. It exists solely to support the example application template. """ from datetime import date, datetime from pydantic import BaseModel class Metadata(BaseModel): createdOn: datetime | None = None updatedOn: datetime | None = None class ParentBase(BaseModel): name: str email: str phone: str | None = None metadata: Metadata | None = None class ParentCreate(ParentBase): pass class Parent(ParentBase): id: int class VetBase(BaseModel): name: str specialty: str | None = None email: str phone: str | None = None metadata: Metadata | None = None class VetCreate(VetBase): pass class Vet(VetBase): id: int class TreatmentBase(BaseModel): label: str description: str | None = None metadata: Metadata | None = None class TreatmentCreate(TreatmentBase): pass class Treatment(TreatmentBase): id: int class PetBase(BaseModel): name: str species: str age: int | None = None weight: float | None = None birthDate: date | None = None photo: str | None = None parent_ids: list[int] = [] metadata: Metadata | None = None class PetCreate(PetBase): pass class Pet(PetBase): id: int class AppointmentBase(BaseModel): date: datetime notes: str | None = None pet_id: int vet_id: int treatment_id: int metadata: Metadata | None = None class AppointmentCreate(AppointmentBase): pass class Appointment(AppointmentBase): id: int