fitness-web/app/models/workout.py

51 lines
1.5 KiB
Python

from sqlalchemy import Column, Integer, String, Float, Text, ForeignKey
from app.models.base import Base
class Phase(Base):
__tablename__ = "phases"
id = Column(Integer, primary_key=True)
name = Column(String(100), nullable=False)
description = Column(Text)
start_date = Column(String(20))
end_date = Column(String(20))
notes = Column(Text)
class Workout(Base):
__tablename__ = "workouts"
id = Column(Integer, primary_key=True)
user_id = Column(Integer, ForeignKey("users.id"), nullable=False)
phase_id = Column(Integer, ForeignKey("phases.id"))
name = Column(String(200), nullable=False)
date = Column(String(20), nullable=False)
notes = Column(Text)
status = Column(String(20), default="plan") # plan, complete
class WorkoutSet(Base):
__tablename__ = "workout_sets"
id = Column(Integer, primary_key=True)
workout_id = Column(Integer, ForeignKey("workouts.id"), nullable=False)
exercise = Column(String(100), nullable=False)
set_number = Column(Integer)
reps = Column(Integer)
weight = Column(Float)
rpe = Column(Float)
notes = Column(Text)
class WorkoutSnapshot(Base):
__tablename__ = "workout_snapshots"
id = Column(Integer, primary_key=True)
workout_id = Column(Integer, ForeignKey("workouts.id"), nullable=False)
changed_by = Column(String(50))
reason = Column(Text)
sets_snapshot = Column(Text) # JSON array
created_at = Column(String(20))