added advanced workout
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
from datetime import datetime
|
||||
from datetime import date, datetime
|
||||
|
||||
from sqlalchemy import Boolean, DateTime, Float, ForeignKey, Integer, String, Text, UniqueConstraint, func
|
||||
from sqlalchemy import Boolean, Date, DateTime, Float, ForeignKey, Integer, String, Text, UniqueConstraint, func
|
||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
|
||||
from app.db.base import Base
|
||||
@@ -263,6 +263,21 @@ class WorkoutLog(Base):
|
||||
total_calories: Mapped[float | None] = mapped_column(Float, nullable=True)
|
||||
steps: Mapped[int | None] = mapped_column(Integer, nullable=True)
|
||||
exercises_json: Mapped[str] = mapped_column(Text, default="[]")
|
||||
distance_m: Mapped[float | None] = mapped_column(Float, nullable=True)
|
||||
avg_heart_rate: Mapped[int | None] = mapped_column(Integer, nullable=True)
|
||||
max_heart_rate: Mapped[int | None] = mapped_column(Integer, nullable=True)
|
||||
avg_pace: Mapped[float | None] = mapped_column(Float, nullable=True)
|
||||
avg_cadence: Mapped[int | None] = mapped_column(Integer, nullable=True)
|
||||
max_cadence: Mapped[int | None] = mapped_column(Integer, nullable=True)
|
||||
avg_stride_length_cm: Mapped[float | None] = mapped_column(Float, nullable=True)
|
||||
training_load: Mapped[float | None] = mapped_column(Float, nullable=True)
|
||||
aerobic_effect: Mapped[float | None] = mapped_column(Float, nullable=True)
|
||||
anaerobic_effect: Mapped[float | None] = mapped_column(Float, nullable=True)
|
||||
vo2max: Mapped[float | None] = mapped_column(Float, nullable=True)
|
||||
recovery_hours: Mapped[float | None] = mapped_column(Float, nullable=True)
|
||||
intervals_json: Mapped[str | None] = mapped_column(Text, nullable=True)
|
||||
heart_rate_zones_json: Mapped[str | None] = mapped_column(Text, nullable=True)
|
||||
perceived_effort: Mapped[int | None] = mapped_column(Integer, nullable=True)
|
||||
|
||||
|
||||
class FitnessReminder(Base):
|
||||
@@ -345,6 +360,31 @@ class AssistantState(Base):
|
||||
)
|
||||
|
||||
|
||||
class DailyRecap(Base):
|
||||
__tablename__ = "daily_recaps"
|
||||
__table_args__ = (UniqueConstraint("user_id", "day", name="uq_daily_recaps_user_day"),)
|
||||
|
||||
id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True)
|
||||
user_id: Mapped[int] = mapped_column(ForeignKey("users.id", ondelete="CASCADE"), index=True)
|
||||
day: Mapped[date] = mapped_column(Date, index=True)
|
||||
text: Mapped[str] = mapped_column(Text, default="")
|
||||
image_url: Mapped[str | None] = mapped_column(String(512), nullable=True)
|
||||
scene_tags: Mapped[str | None] = mapped_column(Text, nullable=True)
|
||||
message_id: Mapped[int | None] = mapped_column(
|
||||
ForeignKey("messages.id", ondelete="SET NULL"), nullable=True, index=True
|
||||
)
|
||||
session_id: Mapped[int | None] = mapped_column(
|
||||
ForeignKey("chat_sessions.id", ondelete="SET NULL"), nullable=True, index=True
|
||||
)
|
||||
status: Mapped[str] = mapped_column(String(32), default="pending", index=True)
|
||||
error: Mapped[str | None] = mapped_column(Text, nullable=True)
|
||||
attempts: Mapped[int] = mapped_column(Integer, default=0)
|
||||
created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now())
|
||||
updated_at: Mapped[datetime] = mapped_column(
|
||||
DateTime(timezone=True), server_default=func.now(), onupdate=func.now()
|
||||
)
|
||||
|
||||
|
||||
class WorkItem(Base):
|
||||
__tablename__ = "work_items"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user