This commit is contained in:
2026-06-16 12:26:47 +05:30
parent 514f6e5f7c
commit eb845c5bf4
7 changed files with 2047 additions and 0 deletions

View File

@@ -0,0 +1,104 @@
"""
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