diff --git a/web_server/blueprints/streams.py b/web_server/blueprints/streams.py index 6e6b1c3..f251c57 100644 --- a/web_server/blueprints/streams.py +++ b/web_server/blueprints/streams.py @@ -45,6 +45,16 @@ def get_recommended_streams() -> list[dict]: streams = get_streams_based_on_category(category) return streams +@stream_bp.route('/streams//data') +def get_stream(streamer_username): + """ + Returns a streamer's most recent stream data + """ + + user_id = get_user_id(streamer_username) + + return jsonify(get_most_recent_stream(user_id)) + ## Category Routes @stream_bp.route('/categories/popular/') diff --git a/web_server/database/app.db b/web_server/database/app.db index cb64d24..df6d35b 100644 Binary files a/web_server/database/app.db and b/web_server/database/app.db differ diff --git a/web_server/database/streaming.sql b/web_server/database/streaming.sql index 0be3642..c820a02 100644 --- a/web_server/database/streaming.sql +++ b/web_server/database/streaming.sql @@ -49,7 +49,7 @@ CREATE TABLE streams ( user_id INTEGER NOT NULL PRIMARY KEY, title TEXT NOT NULL, - datetime DATETIME NOT NULL, + start_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, num_viewers INTEGER NOT NULL DEFAULT 0, category_id INTEGER NOT NULL, FOREIGN KEY (category_id) REFERENCES categories(category_id), diff --git a/web_server/database/testing_data.sql b/web_server/database/testing_data.sql index 3272ea1..bd015ed 100644 --- a/web_server/database/testing_data.sql +++ b/web_server/database/testing_data.sql @@ -53,7 +53,7 @@ INSERT INTO categories (category_name) VALUES ('Sports'); -- Sample Data for streams -INSERT INTO streams (user_id, title, datetime, num_viewers, category_id) VALUES +INSERT INTO streams (user_id, title, start_time, num_viewers, category_id) VALUES (1, 'Epic Gaming Session', '2025-01-25 18:00:00', 150, 1), (2, 'Live Music Jam', '2025-01-25 20:00:00', 350, 2), (3, 'Sketching Live', '2025-01-24 15:00:00', 80, 3), diff --git a/web_server/utils/stream_utils.py b/web_server/utils/stream_utils.py index fd547d5..fa312db 100644 --- a/web_server/utils/stream_utils.py +++ b/web_server/utils/stream_utils.py @@ -34,6 +34,20 @@ def get_followed_live_streams(user_id: int) -> Optional[List[dict]]: """, (user_id,)) return live_streams +def get_most_recent_stream(user_id: int) -> Optional[dict]: + """ + Returns data of the most recent stream by a streamer + """ + with Database() as db: + most_recent_stream = db.fetchone(""" + SELECT s.user_id, u.username, s.title, s.start_time, s.num_viewers, c.category_name + FROM streams AS s + JOIN categories AS c ON s.category_id = c.category_id + JOIN users AS u ON s.user_id = u.user_id + WHERE u.user_id = ? + """, (user_id,)) + return most_recent_stream + def get_vod(vod_id: int) -> dict: """ Returns data of a streamers vod