refactor: Organize and implement player and playlist schemas
This commit is contained in:
@@ -3,36 +3,18 @@
|
||||
from typing import Annotated, Any
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException, status
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from app.core.dependencies import get_current_active_user_flexible
|
||||
from app.core.logging import get_logger
|
||||
from app.models.user import User
|
||||
from app.services.player import PlayerMode, get_player_service
|
||||
from app.schemas.player import PlayerModeRequest, PlayerSeekRequest, PlayerVolumeRequest
|
||||
from app.services.player import get_player_service
|
||||
|
||||
logger = get_logger(__name__)
|
||||
|
||||
router = APIRouter(prefix="/player", tags=["player"])
|
||||
|
||||
|
||||
class SeekRequest(BaseModel):
|
||||
"""Request model for seek operation."""
|
||||
|
||||
position_ms: int = Field(ge=0, description="Position in milliseconds")
|
||||
|
||||
|
||||
class VolumeRequest(BaseModel):
|
||||
"""Request model for volume control."""
|
||||
|
||||
volume: int = Field(ge=0, le=100, description="Volume level (0-100)")
|
||||
|
||||
|
||||
class ModeRequest(BaseModel):
|
||||
"""Request model for mode change."""
|
||||
|
||||
mode: PlayerMode = Field(description="Playback mode")
|
||||
|
||||
|
||||
@router.post("/play")
|
||||
async def play(
|
||||
current_user: Annotated[User, Depends(get_current_active_user_flexible)], # noqa: ARG001
|
||||
@@ -143,7 +125,7 @@ async def previous_track(
|
||||
|
||||
@router.post("/seek")
|
||||
async def seek(
|
||||
request: SeekRequest,
|
||||
request: PlayerSeekRequest,
|
||||
current_user: Annotated[User, Depends(get_current_active_user_flexible)], # noqa: ARG001
|
||||
) -> dict[str, str]:
|
||||
"""Seek to specific position in current track."""
|
||||
@@ -161,7 +143,7 @@ async def seek(
|
||||
|
||||
@router.post("/volume")
|
||||
async def set_volume(
|
||||
request: VolumeRequest,
|
||||
request: PlayerVolumeRequest,
|
||||
current_user: Annotated[User, Depends(get_current_active_user_flexible)], # noqa: ARG001
|
||||
) -> dict[str, str]:
|
||||
"""Set playback volume."""
|
||||
@@ -179,7 +161,7 @@ async def set_volume(
|
||||
|
||||
@router.post("/mode")
|
||||
async def set_mode(
|
||||
request: ModeRequest,
|
||||
request: PlayerModeRequest,
|
||||
current_user: Annotated[User, Depends(get_current_active_user_flexible)], # noqa: ARG001
|
||||
) -> dict[str, str]:
|
||||
"""Set playback mode."""
|
||||
|
||||
Reference in New Issue
Block a user