Nova pàgina de llistes
This commit is contained in:
@@ -2,7 +2,7 @@ from typing import TypedDict
|
||||
|
||||
from folkugat_web.model import playlists as model
|
||||
|
||||
PlaylistRowTuple = tuple[int, str | None]
|
||||
PlaylistRowTuple = tuple[int, str | None, int]
|
||||
PlaylistEntryRowTuple = tuple[int, int, int, int | None]
|
||||
|
||||
|
||||
@@ -29,3 +29,12 @@ def row_to_playlist_entry(row: PlaylistEntryRowTuple) -> model.PlaylistEntry:
|
||||
set_id=row[2],
|
||||
tema_id=row[3],
|
||||
)
|
||||
|
||||
|
||||
def row_to_playlist(row: PlaylistRowTuple) -> model.Playlist:
|
||||
return model.Playlist(
|
||||
id=row[0],
|
||||
name=row[1],
|
||||
sets=[], # Empty for list view
|
||||
hidden=bool(row[2]),
|
||||
)
|
||||
|
||||
@@ -11,8 +11,9 @@ def create_playlists_table(con: Connection):
|
||||
query = """
|
||||
CREATE TABLE IF NOT EXISTS playlists (
|
||||
id INTEGER PRIMARY KEY,
|
||||
name TEXT
|
||||
)
|
||||
name TEXT,
|
||||
hidden INTEGER NOT NULL DEFAULT 1
|
||||
)
|
||||
"""
|
||||
cur = con.cursor()
|
||||
_ = cur.execute(query)
|
||||
|
||||
@@ -69,3 +69,35 @@ def get_playlist_name(playlist_id: int, con: Connection | None = None) -> str |
|
||||
_ = cur.execute(query, data)
|
||||
row = cur.fetchone()
|
||||
return row[0] if row else None
|
||||
|
||||
|
||||
def get_all_playlists(logged_in: bool = False, con: Connection | None = None) -> Iterator[model.Playlist]:
|
||||
if logged_in:
|
||||
# Show all playlists for logged in users
|
||||
query = """
|
||||
SELECT id, name, hidden
|
||||
FROM playlists
|
||||
ORDER BY id ASC
|
||||
"""
|
||||
else:
|
||||
# Show only visible playlists for non-logged in users
|
||||
query = """
|
||||
SELECT id, name, hidden
|
||||
FROM playlists
|
||||
WHERE hidden = 0
|
||||
ORDER BY id ASC
|
||||
"""
|
||||
|
||||
with get_connection(con) as con:
|
||||
cur = con.cursor()
|
||||
_ = cur.execute(query)
|
||||
rows = cur.fetchall()
|
||||
|
||||
for row in rows:
|
||||
# Convert to Playlist model without sets for list view
|
||||
yield model.Playlist(
|
||||
id=row[0],
|
||||
name=row[1],
|
||||
sets=[], # Empty sets list for now
|
||||
hidden=bool(row[2])
|
||||
)
|
||||
|
||||
@@ -120,3 +120,20 @@ def update_playlist_name(
|
||||
cur = con.cursor()
|
||||
_ = cur.execute(query, data)
|
||||
return
|
||||
|
||||
|
||||
def update_playlist_visibility(
|
||||
playlist_id: int,
|
||||
hidden: bool,
|
||||
con: Connection | None = None,
|
||||
):
|
||||
query = """
|
||||
UPDATE playlists SET
|
||||
hidden = :hidden
|
||||
WHERE id = :id
|
||||
"""
|
||||
data = dict(id=playlist_id, hidden=1 if hidden else 0)
|
||||
with get_connection(con) as con:
|
||||
cur = con.cursor()
|
||||
_ = cur.execute(query, data)
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user