Files
enigFM/backend/app/schemas/room.py

65 lines
1.3 KiB
Python
Raw Normal View History

2025-12-12 13:30:09 +03:00
from pydantic import BaseModel
from uuid import UUID
from datetime import datetime
from typing import Optional
from .user import UserResponse
from .track import TrackResponse
class RoomCreate(BaseModel):
name: str
class RoomResponse(BaseModel):
id: UUID
name: str
owner_id: UUID
current_track_id: Optional[UUID] = None
playback_position: int
is_playing: bool
created_at: datetime
participants_count: int = 0
class Config:
from_attributes = True
class RoomDetailResponse(BaseModel):
id: UUID
name: str
owner: UserResponse
current_track: Optional[TrackResponse] = None
playback_position: int
is_playing: bool
created_at: datetime
participants: list[UserResponse] = []
class Config:
from_attributes = True
class PlayerAction(BaseModel):
action: str # play, pause, seek, next, prev
position: Optional[int] = None # for seek
class QueueAdd(BaseModel):
track_id: UUID
class QueueAddMultiple(BaseModel):
track_ids: list[UUID]
class QueueItemResponse(BaseModel):
track: "TrackResponse"
added_by: UUID
class Config:
from_attributes = True
# Import at the end to avoid circular imports
from .track import TrackResponse
QueueItemResponse.model_rebuild()