69 lines
2.5 KiB
Python
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()
|