Files
openapi-first/openapi_first/templates/vet_app/models.py

104 lines
1.7 KiB
Python

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 ProcedureNotes(BaseModel):
summary: str | None = None
details: str | None = None
class Procedure(BaseModel):
name: str | None = None
description: str | None = None
cost: float | None = None
notes: ProcedureNotes | None = None
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
procedures: list[Procedure] = []
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