Desacoblar playlists de sessions i afegir slow jams

This commit is contained in:
marc
2025-11-01 19:55:24 +01:00
parent 23337f8ab3
commit 2fbdbbf290
41 changed files with 705 additions and 1418 deletions

View File

@@ -1,10 +1,16 @@
import dataclasses
import datetime
from datetime import date as Date
from folkugat_web.config import date as config
from folkugat_web.dal.sql import Connection, get_connection
from folkugat_web.dal.sql.sessions import playlists as session_playlists
from folkugat_web.dal.sql.sessions import query, write
from folkugat_web.model import sessions as model
from folkugat_web.model import temes as temes_model
from folkugat_web.model.playlists import Playlist, PlaylistType
from folkugat_web.model.sql import Order, OrderCol, Range
from folkugat_web.services import playlists as playlists_service
def get_date_names(date: Date) -> model.DateNames:
@@ -77,3 +83,80 @@ def stop_live_sessions():
def set_live_session(session_id: int):
write.set_live_session(session_id=session_id)
def get_session_playlist_id(
session_id: int,
playlist_type: PlaylistType,
con: Connection | None = None,
) -> int | None:
with get_connection(con=con) as con:
return session_playlists.get_playlist_id(
session_id=session_id,
playlist_type=playlist_type,
con=con,
)
def get_session_playlist(
session_id: int,
playlist_type: PlaylistType,
con: Connection | None = None,
) -> Playlist | None:
with get_connection(con=con) as con:
playlist_id = get_session_playlist_id(
session_id=session_id,
playlist_type=playlist_type,
con=con,
)
if playlist_id is None:
return None
return playlists_service.get_playlist(
playlist_id=playlist_id,
con=con,
)
def get_session_setlist(
session_id: int,
con: Connection | None = None,
) -> Playlist | None:
return get_session_playlist(
session_id=session_id,
playlist_type=PlaylistType.SESSION_SETLIST,
con=con,
)
def get_session_slowjam(
session_id: int,
con: Connection | None = None,
) -> Playlist | None:
return get_session_playlist(
session_id=session_id,
playlist_type=PlaylistType.SESSION_SLOWJAM,
con=con,
)
def add_playlists_to_session(session: model.Session) -> model.Session:
if session.id is not None:
with get_connection() as con:
setlist = get_session_setlist(session_id=session.id, con=con)
if setlist:
setlist = playlists_service.add_temes_to_playlist(setlist)
slowjam = get_session_slowjam(session_id=session.id, con=con)
if slowjam:
slowjam = playlists_service.add_temes_to_playlist(slowjam)
session = dataclasses.replace(
session,
setlist=setlist,
slowjam=slowjam,
)
return session
def get_commonly_played_temes(
tema_id: int,
) -> list[temes_model.CommonlyPlayedTema]:
return session_playlists.get_commonly_played_tunes(tema_id=tema_id)