from typing import Optional from pydantic import BaseModel # Shared properties class SongBase(BaseModel): title: Optional[str] = None duration: Optional[float] = None file_path: Optional[str] = None track_number: Optional[int] = None artist_id: Optional[int] = None album_id: Optional[int] = None # Properties to receive on song creation class SongCreate(SongBase): title: str file_path: str artist_id: int # Properties to receive on song update class SongUpdate(SongBase): pass class SongInDBBase(SongBase): id: int title: str file_path: str artist_id: int class Config: from_attributes = True # Properties to return to client class Song(SongInDBBase): pass # Properties stored in DB class SongInDB(SongInDBBase): pass