elmeg-demo/backend/seed.py

52 lines
1.7 KiB
Python

from sqlmodel import Session, select
from database import engine, create_db_and_tables
from models import Vertical, Venue, Show, Song, Performance, User
from datetime import datetime
def seed_data():
with Session(engine) as session:
# Check if data exists
existing_vertical = session.exec(select(Vertical)).first()
if existing_vertical:
print("Data already seeded.")
return
# Create Vertical
phish = Vertical(name="Phish", slug="phish", description="The band Phish.")
session.add(phish)
session.commit()
session.refresh(phish)
# Create Venue
msg = Venue(name="Madison Square Garden", city="New York", state="NY", country="USA", capacity=20000)
session.add(msg)
session.commit()
session.refresh(msg)
# Create Show
show = Show(date=datetime(2023, 12, 31), vertical_id=phish.id, venue_id=msg.id)
session.add(show)
session.commit()
session.refresh(show)
# Create Songs
song1 = Song(title="Gamehendge Time Phactory", vertical_id=phish.id)
song2 = Song(title="Auld Lang Syne", vertical_id=phish.id)
session.add(song1)
session.add(song2)
session.commit()
session.refresh(song1)
session.refresh(song2)
# Create Performances
p1 = Performance(show_id=show.id, song_id=song1.id, position=1, set_name="Set 1")
p2 = Performance(show_id=show.id, song_id=song2.id, position=2, set_name="Set 1", segue=True)
session.add(p1)
session.add(p2)
session.commit()
print("Seeding complete!")
if __name__ == "__main__":
# create_db_and_tables() # Alembic handles this now
seed_data()