Crea i esborra playlists quan es creen i esborren sessions
This commit is contained in:
24
AGENTS.md
Normal file
24
AGENTS.md
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# Development Commands
|
||||||
|
|
||||||
|
## Build/Lint/Test
|
||||||
|
- **Run development server**: `JWT_SECRET=12345 uvicorn folkugat_web.main:app --reload --reload-include "*.html" --host 0.0.0.0`
|
||||||
|
- **Build for production**: `./build.sh`
|
||||||
|
|
||||||
|
## Code Style Guidelines
|
||||||
|
|
||||||
|
### Python
|
||||||
|
- **Type hints**: Use strict typing with `from typing import` and custom types from `folkugat_web.typing`
|
||||||
|
- **Imports**: Standard library first, third-party, then local imports. Use absolute imports for local modules.
|
||||||
|
- **Naming**: snake_case for variables/functions, PascalCase for classes, UPPER_CASE for constants
|
||||||
|
- **Error handling**: Use Result[ResultT, ErrorT] pattern from utils for service functions
|
||||||
|
- **Async**: Use async/await for I/O operations, FastAPI endpoints are async
|
||||||
|
|
||||||
|
### Frontend
|
||||||
|
- **CSS**: Use Tailwind CSS classes with custom brown/beige theme
|
||||||
|
- **Templates**: Jinja2 templates in folkugat_web/assets/templates/
|
||||||
|
- **Static files**: Organized in folkugat_web/assets/static/
|
||||||
|
|
||||||
|
### Architecture
|
||||||
|
- **Structure**: api/routes/, config/, dal/, fragments/, model/, services/
|
||||||
|
- **Database**: SQLite with custom DAL layer in dal/sql/
|
||||||
|
- **Authentication**: JWT-based with cookie storage
|
||||||
6
flake.lock
generated
6
flake.lock
generated
@@ -20,11 +20,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1753432016,
|
"lastModified": 1766125104,
|
||||||
"narHash": "sha256-cnL5WWn/xkZoyH/03NNUS7QgW5vI7D1i74g48qplCvg=",
|
"narHash": "sha256-l/YGrEpLromL4viUo5GmFH3K5M1j0Mb9O+LiaeCPWEM=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "6027c30c8e9810896b92429f0092f624f7b1aace",
|
"rev": "7d853e518814cca2a657b72eeba67ae20ebf7059",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -31,7 +31,7 @@ def delete_playlist(
|
|||||||
DELETE FROM playlists
|
DELETE FROM playlists
|
||||||
WHERE id = :id
|
WHERE id = :id
|
||||||
"""
|
"""
|
||||||
data = dict(playlist_id=playlist_id)
|
data = dict(id=playlist_id)
|
||||||
with get_connection(con) as con:
|
with get_connection(con) as con:
|
||||||
cur = con.cursor()
|
cur = con.cursor()
|
||||||
_ = cur.execute(query, data)
|
_ = cur.execute(query, data)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ from datetime import date as Date
|
|||||||
|
|
||||||
from folkugat_web.config import date as config
|
from folkugat_web.config import date as config
|
||||||
from folkugat_web.dal.sql import Connection, get_connection
|
from folkugat_web.dal.sql import Connection, get_connection
|
||||||
|
from folkugat_web.dal.sql.playlists import write as playlists_write
|
||||||
from folkugat_web.dal.sql.sessions import playlists as session_playlists
|
from folkugat_web.dal.sql.sessions import playlists as session_playlists
|
||||||
from folkugat_web.dal.sql.sessions import query, write
|
from folkugat_web.dal.sql.sessions import query, write
|
||||||
from folkugat_web.model import sessions as model
|
from folkugat_web.model import sessions as model
|
||||||
@@ -66,7 +67,10 @@ def get_session(session_id: int) -> model.Session | None:
|
|||||||
|
|
||||||
|
|
||||||
def insert_session(session: model.Session):
|
def insert_session(session: model.Session):
|
||||||
return write.insert_session(session)
|
created_session = write.insert_session(session)
|
||||||
|
if created_session.id is not None:
|
||||||
|
_create_session_playlists(created_session.id)
|
||||||
|
return created_session
|
||||||
|
|
||||||
|
|
||||||
def set_session(session: model.Session):
|
def set_session(session: model.Session):
|
||||||
@@ -74,6 +78,7 @@ def set_session(session: model.Session):
|
|||||||
|
|
||||||
|
|
||||||
def delete_session(session_id: int):
|
def delete_session(session_id: int):
|
||||||
|
_delete_session_playlists(session_id)
|
||||||
write.delete_session_by_id(session_id)
|
write.delete_session_by_id(session_id)
|
||||||
|
|
||||||
|
|
||||||
@@ -160,3 +165,56 @@ def get_commonly_played_temes(
|
|||||||
tema_id: int,
|
tema_id: int,
|
||||||
) -> list[temes_model.CommonlyPlayedTema]:
|
) -> list[temes_model.CommonlyPlayedTema]:
|
||||||
return session_playlists.get_commonly_played_tunes(tema_id=tema_id)
|
return session_playlists.get_commonly_played_tunes(tema_id=tema_id)
|
||||||
|
|
||||||
|
|
||||||
|
def _create_session_playlists(session_id: int):
|
||||||
|
with get_connection() as con:
|
||||||
|
setlist_playlist_id = playlists_write.create_playlist(con=con)
|
||||||
|
slowjam_playlist_id = playlists_write.create_playlist(con=con)
|
||||||
|
session_playlists.insert_playlist(
|
||||||
|
session_id=session_id,
|
||||||
|
playlist_type=PlaylistType.SESSION_SETLIST,
|
||||||
|
playlist_id=setlist_playlist_id,
|
||||||
|
con=con,
|
||||||
|
)
|
||||||
|
session_playlists.insert_playlist(
|
||||||
|
session_id=session_id,
|
||||||
|
playlist_type=PlaylistType.SESSION_SLOWJAM,
|
||||||
|
playlist_id=slowjam_playlist_id,
|
||||||
|
con=con,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def _delete_session_playlists(session_id: int):
|
||||||
|
with get_connection() as con:
|
||||||
|
setlist_playlist_id = session_playlists.get_playlist_id(
|
||||||
|
session_id=session_id,
|
||||||
|
playlist_type=PlaylistType.SESSION_SETLIST,
|
||||||
|
con=con
|
||||||
|
)
|
||||||
|
slowjam_playlist_id = session_playlists.get_playlist_id(
|
||||||
|
session_id=session_id,
|
||||||
|
playlist_type=PlaylistType.SESSION_SLOWJAM,
|
||||||
|
con=con
|
||||||
|
)
|
||||||
|
|
||||||
|
if setlist_playlist_id is not None:
|
||||||
|
playlists_write.delete_playlist(
|
||||||
|
playlist_id=setlist_playlist_id,
|
||||||
|
con=con,
|
||||||
|
)
|
||||||
|
session_playlists.delete_playlist(
|
||||||
|
session_id=session_id,
|
||||||
|
playlist_type=PlaylistType.SESSION_SETLIST,
|
||||||
|
con=con
|
||||||
|
)
|
||||||
|
if slowjam_playlist_id is not None:
|
||||||
|
playlists_write.delete_playlist(
|
||||||
|
playlist_id=slowjam_playlist_id,
|
||||||
|
con=con,
|
||||||
|
)
|
||||||
|
session_playlists.delete_playlist(
|
||||||
|
session_id=session_id,
|
||||||
|
playlist_type=PlaylistType.SESSION_SLOWJAM,
|
||||||
|
con=con
|
||||||
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user