feat(backend): Add external link fields to schemas and migration script
Some checks are pending
Deploy Elmeg / deploy (push) Waiting to run

This commit is contained in:
fullsizemalt 2025-12-21 01:26:52 -08:00
parent d11f078d3e
commit 7d9e9c7825
2 changed files with 40 additions and 0 deletions

View file

@ -0,0 +1,35 @@
import os
from sqlmodel import create_engine, text
# Get DB URL from env or default (adjust for production)
DATABASE_URL = os.environ.get("DATABASE_URL", "postgresql://elmeg:runfoo@localhost/elmeg")
engine = create_engine(DATABASE_URL)
def run_migration():
with engine.connect() as conn:
print("Adding columns to Show table...")
try:
conn.execute(text("ALTER TABLE show ADD COLUMN bandcamp_link VARCHAR"))
print("Added bandcamp_link")
except Exception as e:
print(f"Skipping bandcamp_link (already exists?)")
try:
conn.execute(text("ALTER TABLE show ADD COLUMN nugs_link VARCHAR"))
print("Added nugs_link")
except Exception as e:
print(f"Skipping nugs_link (already exists?)")
print("Adding columns to Performance table...")
try:
conn.execute(text("ALTER TABLE performance ADD COLUMN track_url VARCHAR"))
print("Added track_url")
except Exception as e:
print(f"Skipping track_url (already exists?)")
conn.commit()
print("Migration complete.")
if __name__ == "__main__":
run_migration()

View file

@ -12,6 +12,7 @@ class Performance(SQLModel, table=True):
set_name: Optional[str] = Field(default=None, description="e.g., Set 1, Encore") set_name: Optional[str] = Field(default=None, description="e.g., Set 1, Encore")
segue: bool = Field(default=False, description="Transition to next song >") segue: bool = Field(default=False, description="Transition to next song >")
notes: Optional[str] = Field(default=None) notes: Optional[str] = Field(default=None)
track_url: Optional[str] = Field(default=None, description="Deep link to track audio")
nicknames: List["PerformanceNickname"] = Relationship(back_populates="performance") nicknames: List["PerformanceNickname"] = Relationship(back_populates="performance")
show: "Show" = Relationship(back_populates="performances") show: "Show" = Relationship(back_populates="performances")
@ -93,6 +94,10 @@ class Show(SQLModel, table=True):
tour_id: Optional[int] = Field(default=None, foreign_key="tour.id") tour_id: Optional[int] = Field(default=None, foreign_key="tour.id")
notes: Optional[str] = Field(default=None) notes: Optional[str] = Field(default=None)
# External Links
bandcamp_link: Optional[str] = Field(default=None)
nugs_link: Optional[str] = Field(default=None)
vertical: Vertical = Relationship(back_populates="shows") vertical: Vertical = Relationship(back_populates="shows")
venue: Optional[Venue] = Relationship(back_populates="shows") venue: Optional[Venue] = Relationship(back_populates="shows")
tour: Optional[Tour] = Relationship(back_populates="shows") tour: Optional[Tour] = Relationship(back_populates="shows")