48 lines
1.4 KiB
Python
48 lines
1.4 KiB
Python
|
|
from pydantic import BaseModel
|
||
|
|
from typing import Optional
|
||
|
|
from datetime import date, time
|
||
|
|
from decimal import Decimal
|
||
|
|
import uuid
|
||
|
|
|
||
|
|
class HealthMetricCreate(BaseModel):
|
||
|
|
measurement_date: date
|
||
|
|
measurement_time: Optional[time] = None
|
||
|
|
weight: Optional[Decimal] = None
|
||
|
|
height: Optional[Decimal] = None
|
||
|
|
body_fat_percentage: Optional[Decimal] = None
|
||
|
|
muscle_mass: Optional[Decimal] = None
|
||
|
|
waist: Optional[Decimal] = None
|
||
|
|
chest: Optional[Decimal] = None
|
||
|
|
hips: Optional[Decimal] = None
|
||
|
|
notes: Optional[str] = None
|
||
|
|
|
||
|
|
class HealthMetricResponse(BaseModel):
|
||
|
|
id: uuid.UUID
|
||
|
|
user_id: uuid.UUID
|
||
|
|
measurement_date: date
|
||
|
|
measurement_time: Optional[time]
|
||
|
|
weight: Optional[Decimal]
|
||
|
|
height: Optional[Decimal]
|
||
|
|
body_fat_percentage: Optional[Decimal]
|
||
|
|
muscle_mass: Optional[Decimal]
|
||
|
|
waist: Optional[Decimal]
|
||
|
|
chest: Optional[Decimal]
|
||
|
|
hips: Optional[Decimal]
|
||
|
|
notes: Optional[str]
|
||
|
|
|
||
|
|
class Config:
|
||
|
|
from_attributes = True
|
||
|
|
|
||
|
|
class HealthMetricUpdate(BaseModel):
|
||
|
|
measurement_date: Optional[date] = None
|
||
|
|
measurement_time: Optional[time] = None
|
||
|
|
weight: Optional[Decimal] = None
|
||
|
|
height: Optional[Decimal] = None
|
||
|
|
body_fat_percentage: Optional[Decimal] = None
|
||
|
|
muscle_mass: Optional[Decimal] = None
|
||
|
|
waist: Optional[Decimal] = None
|
||
|
|
chest: Optional[Decimal] = None
|
||
|
|
hips: Optional[Decimal] = None
|
||
|
|
notes: Optional[str] = None
|
||
|
|
|