diff --git a/api/activity.py b/api/activity.py index 5902a47..d21b9d6 100644 --- a/api/activity.py +++ b/api/activity.py @@ -15,6 +15,7 @@ def create_activity(): begin_time=datetime.fromisoformat(data['begin_time']), end_time=datetime.fromisoformat(data['end_time']), activity_type=data['activity_type'], + coach=data.get('coach'), average_speed=data['average_speed'], max_speed=data['max_speed'], average_heart_rate=data['average_heart_rate'], diff --git a/api/sessions.py b/api/sessions.py new file mode 100644 index 0000000..a2ccc49 --- /dev/null +++ b/api/sessions.py @@ -0,0 +1,25 @@ +from flask import Blueprint, jsonify +from models.activity import Activity +from models import db +from datetime import datetime + +sessions_bp = Blueprint('sessions_api', __name__) + +@sessions_bp.route('', methods=['GET']) +def get_sessions(): + # replace with authenticated user ID from session/token + user_id = 1 + + activities = Activity.query.filter_by(user_id=user_id).order_by(Activity.begin_time.desc()).all() + + sessions = [] + for a in activities: + sessions.append({ + 'session_id': a.id, + 'coach': a.coach if a.coach else 'N/A', + 'duration': a.duration, + 'date': a.begin_time.strftime("%Y/%m/%d"), + 'training': a.activity_type + }) + + return jsonify(sessions), 200 diff --git a/app.py b/app.py index 3b2b2ee..e62cf7e 100644 --- a/app.py +++ b/app.py @@ -7,6 +7,7 @@ from api.dashboard import dashboard_bp from api.body_insight import body_insight_bp from api.activity import activity_bp +from api.sessions import sessions_bp from models import db from dotenv import load_dotenv from api.sync import sync_bp @@ -79,7 +80,7 @@ app.register_blueprint(sync_bp, url_prefix='/api/synced') app.register_blueprint(body_insight_bp, url_prefix='/api/body_insight') app.register_blueprint(activity_bp, url_prefix='/api/activity') - +app.register_blueprint(sessions_bp, url_prefix='/api/sessions') # Main index route (login + welcome) @app.route('/', methods=['GET', 'POST']) def index(): diff --git a/models/activity.py b/models/activity.py index 84505c5..0f64fbd 100644 --- a/models/activity.py +++ b/models/activity.py @@ -11,6 +11,7 @@ class Activity(db.Model): begin_time = db.Column(db.DateTime, nullable=False) end_time = db.Column(db.DateTime, nullable=False) activity_type = db.Column(db.String(50), nullable=False) + coach = db.Column(db.String(100), nullable=True) average_speed = db.Column(db.Float, nullable=False) max_speed = db.Column(db.Float, nullable=False) average_heart_rate = db.Column(db.Integer, nullable=False) @@ -24,6 +25,8 @@ class Activity(db.Model): elevation_loss = db.Column(db.Float, nullable=False) max_elevation = db.Column(db.Float, nullable=False) min_elevation = db.Column(db.Float, nullable=False) + + time_series = db.relationship('ActivityTimeSeries', backref='activity', cascade="all, delete-orphan") @@ -34,6 +37,7 @@ def as_dict(self): "begin_time": self.begin_time.isoformat(), "end_time": self.end_time.isoformat(), "activity_type": self.activity_type, + "coach": self.coach, "average_speed": self.average_speed, "max_speed": self.max_speed, "average_heart_rate": self.average_heart_rate,