from database.database import Database from typing import Optional import sqlite3 def streamer_live_status(user_id: int) -> bool: """ Returns boolean on whether the given streamer is live """ db = Database() db.create_connection() return bool(db.fetchone("SELECT 1 FROM streams WHERE user_id = ? AND isLive = 1 ORDER BY stream_id DESC", (user_id,))) def followed_live_streams(user_id: int) -> list[dict]: """ Searches for streamers who the user followed which are currently live """ db = Database() db.create_connection() live_streams = db.fetchall(""" SELECT user_id, stream_id, title, num_viewers FROM streams WHERE user_id IN (SELECT followed_id FROM follows WHERE user_id = ?) AND stream_id = (SELECT MAX(stream_id) FROM streams WHERE user_id = streams.user_id) AND isLive = 1; """, (user_id,)) return live_streams def followed_streamers(user_id: int) -> list[dict]: """ Returns a list of streamers who the user follows """ db = Database() db.create_connection() followed_streamers = db.fetchall(""" SELECT user_id, username FROM users WHERE user_id IN (SELECT followed_id FROM follows WHERE user_id = ?); """, (user_id,)) return followed_streamers def streamer_most_recent_stream(user_id: int) -> dict: """ Returns data of the most recent stream by a streamer """ db = Database() db.create_connection() most_recent_stream = db.fetchone("""SELECT * FROM streams WHERE user_id = ? AND stream_id = (SELECT MAX(stream_id) FROM streams WHERE user_id = ?)""", (user_id, user_id)) return most_recent_stream def user_stream(user_id: int, stream_id: int) -> dict: """ Returns data of a streamers selected stream """ db = Database() db.create_connection() stream = db.fetchone("SELECT * FROM streams WHERE user_id = ? AND stream_id = ?", (user_id,stream_id)) return stream