elmeg-demo/backend/quick_seed.py

118 lines
3.8 KiB
Python

#!/usr/bin/env python3
"""Quick demo seeder - creates users and basic data"""
import sys
sys.path.insert(0, '/Users/ten/ANTIGRAVITY/elmeg-demo/backend')
from datetime import datetime, timedelta
from sqlmodel import Session
from passlib.context import CryptContext
from database import engine
from models import User, Vertical, Venue, Show, Song, Performance, UserPreferences
pwd_context = CryptContext(schemes=["argon2"], deprecated="auto")
print("Starting demo seed...")
with Session(engine) as session:
# Create Goose vertical
vertical = Vertical(name="Goose", slug="goose", description="Jam band from CT")
session.add(vertical)
session.commit()
session.refresh(vertical)
print(f"✓ Created vertical: {vertical.name}")
# Create 12 users
users_data = [
("archivist@demo.com", "TheArchivist", "user", True),
("statnerd@demo.com", "StatNerd420", "user", False),
("reviewer@demo.com", "CriticalListener", "user", False),
("casual@demo.com", "CasualFan", "user", False),
("groupleader@demo.com", "NortheastHonkers", "user", False),
("mod@demo.com", "ModGoose", "moderator", False),
("admin@demo.com", "AdminBird", "admin", False),
("newbie@demo.com", "NewToGoose", "user", False),
("taper@demo.com", "TaperTom", "user", False),
("tourfollower@demo.com", "RoadWarrior", "user", False),
("lurker@demo.com", "SilentHonker", "user", True),
("hype@demo.com", "HypeGoose", "user", False),
]
users = []
for email, username, role, wiki_mode in users_data:
user = User(
email=email,
hashed_password=pwd_context.hash("demo123"),
is_active=True,
is_superuser=(role == "admin"),
role=role
)
session.add(user)
session.commit()
session.refresh(user)
prefs = UserPreferences(
user_id=user.id,
wiki_mode=wiki_mode,
show_ratings=not wiki_mode,
show_comments=not wiki_mode
)
session.add(prefs)
users.append(user)
print(f"✓ Created user: {username}")
session.commit()
# Create venues
venues = [
Venue(name="Red Rocks", city="Morrison", state="CO", country="USA"),
Venue(name="Capitol Theatre", city="Port Chester", state="NY", country="USA"),
]
for v in venues:
session.add(v)
session.commit()
print(f"✓ Created {len(venues)} venues")
# Create songs
songs = [
Song(title="Hungersite", vertical_id=vertical.id),
Song(title="Arcadia", vertical_id=vertical.id),
Song(title="Hot Tea", vertical_id=vertical.id),
]
for s in songs:
session.add(s)
session.commit()
print(f"✓ Created {len(songs)} songs")
# Create shows
shows = []
for i in range(5):
show = Show(
date=datetime(2024, 1, 1) + timedelta(days=i*30),
vertical_id=vertical.id,
venue_id=venues[i % len(venues)].id
)
session.add(show)
shows.append(show)
session.commit()
print(f"✓ Created {len(shows)} shows")
# Create performances
for show in shows:
for pos, song in enumerate(songs, 1):
perf = Performance(
show_id=show.id,
song_id=song.id,
position=pos,
set_name="Set 1"
)
session.add(perf)
session.commit()
print(f"✓ Created performances")
print("\n" + "="*60)
print("✓ DEMO DATA SEEDED!")
print("="*60)
print("\nAll passwords: demo123")
print("\nStart demo server:")
print(" cd /Users/ten/ANTIGRAVITY/elmeg-demo/backend")
print(" DATABASE_URL='sqlite:///./elmeg-demo.db' uvicorn main:app --reload --port 8001")