f1tness_parser/backend/app/core/dto/training.py
2026-10-23 20:21:48 +03:00

46 lines
1.1 KiB
Python

from pydantic import BaseModel, ConfigDict, Field
from datetime import date
class DTOBase(BaseModel):
# Allows TrainingDTO.model_validate(<ORM model>)
model_config = ConfigDict(from_attributes=True)
class ApproachDTO(DTOBase):
id: int | None = None
exercise_id: int | None = None
weight: float
reps: int
class ExerciseDTO(DTOBase):
id: int | None = None
training_id: int | None = None
name: str
splitted_weight: bool = False
approaches: list[ApproachDTO] = Field(default_factory=list)
class TrainingDTO(DTOBase):
id: int | None = None
date: date
trainer: str | None = None
exercises: list[ExerciseDTO] = Field(default_factory=list)
class ExerciseNameDTO(DTOBase):
"""Distinct exercise name and how many times it was done."""
name: str
count: int
class ExerciseSessionDTO(DTOBase):
"""One occurrence of an exercise in the history of that exercise."""
training_id: int | None = None
date: date
trainer: str | None = None
splitted_weight: bool = False
approaches: list[ApproachDTO] = Field(default_factory=list)