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 metadata: Metadata | None = None class PetCreate(PetBase): parent_ids: list[int] = [] class Pet(PetBase): id: int parents: list[Parent] = [] class AppointmentBase(BaseModel): date: datetime notes: str | None = None metadata: Metadata | None = None class AppointmentCreate(AppointmentBase): pet_id: int vet_id: int treatment_id: int class Appointment(AppointmentBase): id: int pet: Pet vet: Vet treatment: Treatment