From eb83fd297abd328efcf725bf5bb71320e788ea2d Mon Sep 17 00:00:00 2001 From: JustIceO7 Date: Thu, 6 Feb 2025 14:52:23 +0000 Subject: [PATCH] FEAT: Added feature to return streamers data given their username --- web_server/blueprints/streams.py | 10 ++++++++++ web_server/database/app.db | Bin 94208 -> 94208 bytes web_server/database/streaming.sql | 2 +- web_server/database/testing_data.sql | 2 +- web_server/utils/stream_utils.py | 14 ++++++++++++++ 5 files changed, 26 insertions(+), 2 deletions(-) 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 cb64d2478147cd242a2513c8da43da9c10a40057..df6d35b8a60a578cdf18adb95750ff3674d3f3b4 100644 GIT binary patch delta 149 zcmZp8z}oPDb%M0uR|Wv#mt^LqPXBGiXf(afg7MIFFH^?bOzaQ0tD7`Y delta 169 zcmZp8z}oPDb%M0uCk6%vaUg~QrVkT!j2S;QCTvY$T&l0i>dC-=iZ7o}op&?OO73-B z>YO(@?b#o)>9KmUzGUWRY+*EGm@`>XplJIX14d)!$rD&urZ?C!8gE}|!zjt9#iq(| zid|e?ow3QgBrz!`wKy@SB)%v$Ilm|+wFreX-P4ru4if{zc6BqxU5qSEQO)VwpPDmD GTL1uPAThT9 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