From f026cb242344d198bd5389ea3910c72838b76a4a Mon Sep 17 00:00:00 2001 From: fullsizemalt <106900403+fullsizemalt@users.noreply.github.com> Date: Tue, 30 Dec 2025 22:40:53 -0800 Subject: [PATCH] fix(backend): Robust duplicate handling and public API fallback for importer --- backend/import_elgoose.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/backend/import_elgoose.py b/backend/import_elgoose.py index cbdb27c..d322f22 100644 --- a/backend/import_elgoose.py +++ b/backend/import_elgoose.py @@ -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'),