from typing import Annotated from fastapi import Form, Request from folkugat_web.api.router import get_router from folkugat_web.fragments import playlist from folkugat_web.services import auth from folkugat_web.services.temes import write as temes_service router = get_router() @router.post("/api/playlist/{playlist_id}/set") def add_set( request: Request, logged_in: auth.RequireLogin, playlist_id: int, ): return playlist.add_set( request=request, playlist_id=playlist_id, logged_in=logged_in, ) @router.get("/api/playlist/{playlist_id}/set/{set_id}") def get_set( request: Request, logged_in: auth.LoggedIn, playlist_id: int, set_id: int, ): return playlist.get_set( request=request, playlist_id=playlist_id, set_id=set_id, logged_in=logged_in, ) @router.delete("/api/playlist/{playlist_id}/set/{set_id}") def delete_set( _: auth.RequireLogin, playlist_id: int, set_id: int, ): return playlist.delete_set( playlist_id=playlist_id, set_id=set_id, ) @router.post("/api/playlist/{playlist_id}/set/{set_id}") def add_tema( request: Request, logged_in: auth.RequireLogin, playlist_id: int, set_id: int, ): return playlist.add_tema( request=request, playlist_id=playlist_id, set_id=set_id, logged_in=logged_in, ) @router.get("/api/playlist/{playlist_id}/set/{set_id}/tema/{entry_id}") def get_tema( request: Request, logged_in: auth.RequireLogin, playlist_id: int, set_id: int, entry_id: int, ): return playlist.get_tema( request=request, playlist_id=playlist_id, set_id=set_id, entry_id=entry_id, logged_in=logged_in, ) @router.get("/api/playlist/{playlist_id}/set/{set_id}/tema/{entry_id}/editor") def get_tema_editor( request: Request, logged_in: auth.RequireLogin, playlist_id: int, set_id: int, entry_id: int, ): return playlist.get_tema_editor( request=request, playlist_id=playlist_id, set_id=set_id, entry_id=entry_id, logged_in=logged_in, ) @router.delete("/api/playlist/{playlist_id}/set/{set_id}/tema/{entry_id}") def delete_tema( _: auth.RequireLogin, playlist_id: int, set_id: int, entry_id: int, ): return playlist.delete_tema( playlist_id=playlist_id, set_id=set_id, entry_id=entry_id, ) @router.get("/api/playlist/{playlist_id}/set/{set_id}/tema/{entry_id}/busca") def busca_tema( request: Request, _: auth.RequireLogin, playlist_id: int, set_id: int, entry_id: int, query: str, ): return playlist.busca_tema( request=request, playlist_id=playlist_id, set_id=set_id, entry_id=entry_id, query=query, ) @router.put("/api/playlist/{playlist_id}/set/{set_id}/tema/{entry_id}") def set_tema( request: Request, logged_in: auth.RequireLogin, playlist_id: int, set_id: int, entry_id: int, tema_id: Annotated[int, Form()], ): return playlist.set_tema( request=request, logged_in=logged_in, playlist_id=playlist_id, set_id=set_id, entry_id=entry_id, tema_id=tema_id, ) @router.put("/api/playlist/{playlist_id}/set/{set_id}/tema/{entry_id}/unknown") def set_tema_unknown( request: Request, logged_in: auth.RequireLogin, playlist_id: int, set_id: int, entry_id: int, ): return playlist.set_tema( request=request, logged_in=logged_in, playlist_id=playlist_id, set_id=set_id, entry_id=entry_id, tema_id=None, ) @router.post("/api/playlist/{playlist_id}/set/{set_id}/tema/{entry_id}") def set_tema_new( request: Request, logged_in: auth.RequireLogin, playlist_id: int, set_id: int, entry_id: int, title: Annotated[str, Form()], ): new_tema = temes_service.create_tema(title=title) return playlist.set_tema( request=request, logged_in=logged_in, playlist_id=playlist_id, set_id=set_id, entry_id=entry_id, tema_id=new_tema.id, )