105 lines
1.9 KiB
Python
105 lines
1.9 KiB
Python
"""
|
|
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
|