import uuid from datetime import datetime from typing import Literal from pydantic import BaseModel, ConfigDict class SongCreate(BaseModel): title: str status: Literal["jam", "wip", "arranged", "recorded", "released"] = "jam" notes: str | None = None class SongUpdate(BaseModel): title: str | None = None status: Literal["jam", "wip", "arranged", "recorded", "released"] | None = None notes: str | None = None tags: list[str] | None = None global_key: str | None = None global_bpm: float | None = None class SongRead(BaseModel): model_config = ConfigDict(from_attributes=True) id: uuid.UUID band_id: uuid.UUID session_id: uuid.UUID | None = None title: str status: str tags: list[str] = [] global_key: str | None = None global_bpm: float | None = None notes: str | None = None nc_folder_path: str | None = None created_by: uuid.UUID | None = None created_at: datetime updated_at: datetime latest_version_id: uuid.UUID | None = None version_count: int = 0