Files
enigFM/backend/app/schemas/room.py
mamonov.ep ee8d79d155 Redesign UI with Vuetify and improve configuration
Major changes:
- Full UI redesign with Vuetify 3 (dark theme, modern components)
- Sidebar navigation with gradient logo
- Redesigned player controls with Material Design icons
- New room cards, track lists, and filter UI with chips
- Modern auth pages with centered cards

Configuration improvements:
- Centralized all settings in root .env file
- Removed redundant backend/.env and frontend/.env files
- Increased file upload limit to 100MB (nginx + backend)
- Added build args for Vite environment variables
- Frontend now uses relative paths (better for domain deployment)

UI Components updated:
- App.vue: v-navigation-drawer with sidebar
- MiniPlayer: v-footer with modern controls
- Queue: v-list with styled items
- RoomView: improved filters with clickable chips
- All views: Vuetify cards, buttons, text fields

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-19 20:17:52 +03:00

65 lines
1.3 KiB
Python

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()