fix(backend): Robust duplicate handling and public API fallback for importer

This commit is contained in:
fullsizemalt 2025-12-30 22:40:53 -08:00
parent 429858287f
commit f026cb2423

View file

@ -5,7 +5,7 @@ Fetches ALL Goose data from El Goose API and populates demo database
import requests
import time
from datetime import datetime
from sqlmodel import Session, select
from sqlmodel import Session, select, or_
from database import engine
from models import (
Vertical, Venue, Tour, Show, Song, Performance, Artist,
@ -14,7 +14,7 @@ from models import (
from passlib.context import CryptContext
from slugify import generate_slug, generate_show_slug
BASE_URL = "http://elmeg-legacy-api:8000/api/v2"
BASE_URL = "https://elgoose.net/api/v2"
ARTIST_ID = 1 # Goose
pwd_context = CryptContext(schemes=["argon2"], deprecated="auto")
@ -114,6 +114,10 @@ def create_users(session):
print(f"✓ Created/Found {len(users)} users")
return users
from sqlmodel import Session, select, or_
# ... (imports)
def import_venues(session):
"""Import all venues"""
print("\n🏛️ Importing venues...")
@ -123,8 +127,14 @@ def import_venues(session):
venue_map = {}
for v in venues_data:
slug = generate_slug(v['venuename'])
existing = session.exec(
select(Venue).where(Venue.name == v['venuename'])
select(Venue).where(
or_(
Venue.name == v['venuename'],
Venue.slug == slug
)
)
).first()
if existing:
@ -132,7 +142,7 @@ def import_venues(session):
else:
venue = Venue(
name=v['venuename'],
slug=generate_slug(v['venuename']),
slug=slug,
city=v.get('city'),
state=v.get('state'),
country=v.get('country'),