from folkugat_web.dal.sql import Connection, get_connection


def create_db(con: Connection | None = None):
    with get_connection(con) as con:
        create_playlists_table(con)
        create_playlist_entries_table(con)


def create_playlists_table(con: Connection):
    query = """
      CREATE TABLE IF NOT EXISTS playlists (
        id INTEGER PRIMARY KEY,
        name TEXT,
        hidden INTEGER NOT NULL DEFAULT 1
      )
    """
    cur = con.cursor()
    _ = cur.execute(query)


def create_playlist_entries_table(con: Connection):
    query = """
      CREATE TABLE IF NOT EXISTS playlist_entries (
        id INTEGER PRIMARY KEY,
        playlist_id INTEGER NOT NULL,
        set_id INTEGER NOT NULL,
        tema_id INTEGER,
        score_id INTEGER,
        FOREIGN KEY (playlist_id) REFERENCES playlists(id) ON DELETE CASCADE,
        FOREIGN KEY (tema_id) REFERENCES temes(id) ON DELETE CASCADE,
        FOREIGN KEY (score_id) REFERENCES tema_scores(id) ON DELETE SET NULL
    )
    """
    cur = con.cursor()
    _ = cur.execute(query)
