Files
FitTrack2/FitnessSync/backend/src/models/segment_effort.py
2026-01-13 09:42:16 -08:00

31 lines
1.2 KiB
Python

from sqlalchemy import Column, Integer, String, Float, DateTime, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy.sql import func
from ..models import Base
class SegmentEffort(Base):
__tablename__ = "segment_efforts"
id = Column(Integer, primary_key=True, index=True)
segment_id = Column(Integer, ForeignKey("segments.id"), nullable=False)
activity_id = Column(Integer, ForeignKey("activities.id"), nullable=False)
elapsed_time = Column(Integer, nullable=False) # seconds
start_time = Column(DateTime, nullable=False) # Absolute start time of the effort
end_time = Column(DateTime, nullable=False)
avg_power = Column(Integer, nullable=True)
max_power = Column(Integer, nullable=True)
avg_hr = Column(Integer, nullable=True)
avg_speed = Column(Float, nullable=True) # m/s
avg_cadence = Column(Integer, nullable=True) # rpm
avg_respiration_rate = Column(Float, nullable=True) # breaths/min
# Potential for ranking (1 = KOM/PR, etc.) - calculated dynamically or stored
kom_rank = Column(Integer, nullable=True)
created_at = Column(DateTime(timezone=True), server_default=func.now())
segment = relationship("Segment")
activity = relationship("Activity")