Initial Switch to V2. Completely Overhauled Backend, Frontend and General Structure.
This commit is contained in:
39
backend/melodies/orm.py
Normal file
39
backend/melodies/orm.py
Normal file
@@ -0,0 +1,39 @@
|
||||
from datetime import datetime, timezone
|
||||
from sqlalchemy import Boolean, Column, DateTime, Index, String, Text
|
||||
from sqlalchemy.dialects.postgresql import JSONB
|
||||
from database.postgres import Base
|
||||
|
||||
|
||||
def _now():
|
||||
return datetime.now(timezone.utc)
|
||||
|
||||
|
||||
class MelodyDraft(Base):
|
||||
__tablename__ = "melody_drafts"
|
||||
__table_args__ = (
|
||||
Index("idx_melody_drafts_status", "status"),
|
||||
)
|
||||
|
||||
id = Column(String(128), primary_key=True)
|
||||
status = Column(String(32), nullable=False, default="draft")
|
||||
# 'data' stores the full melody definition as JSON (was TEXT/JSON in SQLite)
|
||||
data = Column(JSONB, nullable=False)
|
||||
created_at = Column(DateTime(timezone=True), nullable=False, default=_now)
|
||||
updated_at = Column(DateTime(timezone=True), nullable=False, default=_now, onupdate=_now)
|
||||
|
||||
|
||||
class BuiltMelody(Base):
|
||||
__tablename__ = "built_melodies"
|
||||
|
||||
id = Column(String(128), primary_key=True)
|
||||
name = Column(String(500), nullable=False)
|
||||
pid = Column(String(128), nullable=False)
|
||||
# 'steps' is a JSON array of step definitions
|
||||
steps = Column(JSONB, nullable=False)
|
||||
binary_path = Column(String(1000))
|
||||
progmem_code = Column(Text)
|
||||
# JSON array of melody IDs this built melody is assigned to
|
||||
assigned_melody_ids = Column(JSONB, nullable=False, default=list)
|
||||
is_builtin = Column(Boolean, nullable=False, default=False)
|
||||
created_at = Column(DateTime(timezone=True), nullable=False, default=_now)
|
||||
updated_at = Column(DateTime(timezone=True), nullable=False, default=_now, onupdate=_now)
|
||||
Reference in New Issue
Block a user