Files
rehearshalhub/api/src/rehearsalhub/schemas/band.py
2026-04-08 15:10:52 +02:00

41 lines
940 B
Python
Executable File

import uuid
from datetime import datetime
from pydantic import BaseModel, ConfigDict
from rehearsalhub.schemas.member import MemberRead
class BandMemberRead(BaseModel):
model_config = ConfigDict(from_attributes=True)
member: MemberRead
role: str
instrument: str | None = None
joined_at: datetime
class BandCreate(BaseModel):
name: str
slug: str
genre_tags: list[str] = []
nc_base_path: str | None = None # e.g. "Bands/MyBand/" — defaults to "bands/{slug}/"
class BandUpdate(BaseModel):
nc_folder_path: str | None = None # update the Nextcloud base folder for scans
class BandRead(BaseModel):
model_config = ConfigDict(from_attributes=True)
id: uuid.UUID
name: str
slug: str
genre_tags: list[str]
nc_folder_path: str | None = None
created_at: datetime
updated_at: datetime
class BandReadWithMembers(BandRead):
memberships: list[BandMemberRead] = []