fediversion/backend/seed.py
fullsizemalt b4cddf41ea feat: Initialize Fediversion multi-band platform
- Fork elmeg-demo codebase for multi-band support
- Add data importer infrastructure with base class
- Create band-specific importers:
  - phish.py: Phish.net API v5
  - grateful_dead.py: Grateful Stats API
  - setlistfm.py: Dead & Company, Billy Strings (Setlist.fm)
- Add spec-kit configuration for Gemini
- Update README with supported bands and architecture
2025-12-28 12:39:28 -08:00

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()