Files

42 lines
931 B
Python

from pydantic import BaseModel
from typing import List, Optional
class BuiltMelodyCreate(BaseModel):
name: str
pid: str
steps: str # raw step string e.g. "1,2,2+1,1,2,3+1"
is_builtin: bool = False
class BuiltMelodyUpdate(BaseModel):
name: Optional[str] = None
pid: Optional[str] = None
steps: Optional[str] = None
is_builtin: Optional[bool] = None
class BuiltMelodyInDB(BaseModel):
id: str
name: str
pid: str
steps: str
is_builtin: bool = False
binary_path: Optional[str] = None
binary_url: Optional[str] = None
progmem_code: Optional[str] = None
assigned_melody_ids: List[str] = []
created_at: str
updated_at: str
@property
def step_count(self) -> int:
if not self.steps:
return 0
return len(self.steps.split(","))
class BuiltMelodyListResponse(BaseModel):
melodies: List[BuiltMelodyInDB]
total: int