f1tness_parser/app/core/dto/training.py
2026-10-22 23:46:29 +03:00

46 lines
1.1 KiB
Python

from typing import List, Optional
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: Optional[int] = None
exercise_id: Optional[int] = None
weight: float
reps: int
class ExerciseDTO(DTOBase):
id: Optional[int] = None
training_id: Optional[int] = None
name: str
splitted_weight: bool = False
approaches: List[ApproachDTO] = Field(default_factory=list)
class TrainingDTO(DTOBase):
id: Optional[int] = None
date: date
trainer: Optional[str] = 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."""
date: date
trainer: Optional[str] = None
splitted_weight: bool = False
approaches: List[ApproachDTO] = Field(default_factory=list)