40 lines
1.0 KiB
Python
Executable File
40 lines
1.0 KiB
Python
Executable File
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
|