elmeg-demo/backend/migrations/migrate_musicians.py
fullsizemalt ff56e4f140
Some checks are pending
Deploy Elmeg / deploy (push) Waiting to run
feat: add Band Members (Musicians) feature - Sprint 4
2025-12-24 13:07:48 -08:00

69 lines
2.5 KiB
Python

"""
Migration script to create Musician, BandMembership, and PerformanceGuest tables.
"""
from sqlmodel import Session, text
from database import engine
def migrate_musicians():
with Session(engine) as session:
print("Running Musicians Migration...")
# Create Musician table
try:
session.exec(text("""
CREATE TABLE IF NOT EXISTS musician (
id SERIAL PRIMARY KEY,
name VARCHAR NOT NULL,
slug VARCHAR UNIQUE NOT NULL,
bio TEXT,
image_url VARCHAR,
primary_instrument VARCHAR,
notes TEXT
)
"""))
session.exec(text("CREATE INDEX IF NOT EXISTS idx_musician_name ON musician(name)"))
session.exec(text("CREATE INDEX IF NOT EXISTS idx_musician_slug ON musician(slug)"))
print("Created musician table")
except Exception as e:
print(f"musician table error: {e}")
session.rollback()
# Create BandMembership table
try:
session.exec(text("""
CREATE TABLE IF NOT EXISTS bandmembership (
id SERIAL PRIMARY KEY,
musician_id INTEGER NOT NULL REFERENCES musician(id),
artist_id INTEGER NOT NULL REFERENCES artist(id),
role VARCHAR,
start_date TIMESTAMP,
end_date TIMESTAMP,
notes TEXT
)
"""))
print("Created bandmembership table")
except Exception as e:
print(f"bandmembership table error: {e}")
session.rollback()
# Create PerformanceGuest table
try:
session.exec(text("""
CREATE TABLE IF NOT EXISTS performanceguest (
id SERIAL PRIMARY KEY,
performance_id INTEGER NOT NULL REFERENCES performance(id),
musician_id INTEGER NOT NULL REFERENCES musician(id),
instrument VARCHAR,
notes TEXT
)
"""))
print("Created performanceguest table")
except Exception as e:
print(f"performanceguest table error: {e}")
session.rollback()
session.commit()
print("Musicians Migration Complete!")
if __name__ == "__main__":
migrate_musicians()