343bafd7f4
* feat: Requests / Add to Library Rework - Unmonitored album default + Resilience * checking for source + refresh album logic * artist monitoring + auto downloading + various request fixes * synchronous album requests * format
34 lines
1.2 KiB
Python
34 lines
1.2 KiB
Python
import logging
|
|
from fastapi import APIRouter, Depends
|
|
from api.v1.schemas.request import AlbumRequest, RequestAcceptedResponse, QueueStatusResponse
|
|
from core.dependencies import get_request_service
|
|
from infrastructure.msgspec_fastapi import MsgSpecBody, MsgSpecRoute
|
|
from services.request_service import RequestService
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
router = APIRouter(route_class=MsgSpecRoute, prefix="/requests", tags=["requests"])
|
|
|
|
|
|
@router.post("/new", response_model=RequestAcceptedResponse, status_code=202)
|
|
async def request_album(
|
|
album_request: AlbumRequest = MsgSpecBody(AlbumRequest),
|
|
request_service: RequestService = Depends(get_request_service),
|
|
):
|
|
return await request_service.request_album(
|
|
album_request.musicbrainz_id,
|
|
artist=album_request.artist,
|
|
album=album_request.album,
|
|
year=album_request.year,
|
|
artist_mbid=album_request.artist_mbid,
|
|
monitor_artist=album_request.monitor_artist,
|
|
auto_download_artist=album_request.auto_download_artist,
|
|
)
|
|
|
|
|
|
@router.get("/new/queue-status", response_model=QueueStatusResponse)
|
|
async def get_queue_status(
|
|
request_service: RequestService = Depends(get_request_service)
|
|
):
|
|
return request_service.get_queue_status()
|