From dd5d513534c73fce176b8002d4d6732136fb75b0 Mon Sep 17 00:00:00 2001 From: fullsizemalt <106900403+fullsizemalt@users.noreply.github.com> Date: Tue, 30 Dec 2025 23:45:05 -0800 Subject: [PATCH] fix(backend): Handle duplicates in songs and tours imports --- 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 d322f22..84616ba 100644 --- a/backend/import_elgoose.py +++ b/backend/import_elgoose.py @@ -165,10 +165,14 @@ def import_songs(session, vertical_id): song_map = {} for s in songs_data: + slug = generate_slug(s['name']) # Check if song exists existing = session.exec( select(Song).where( - Song.title == s['name'], + or_( + Song.title == s['name'], + Song.slug == slug + ), Song.vertical_id == vertical_id ) ).first() @@ -178,7 +182,7 @@ def import_songs(session, vertical_id): else: song = Song( title=s['name'], - slug=generate_slug(s['name']), + slug=slug, original_artist=s.get('original_artist'), vertical_id=vertical_id # API doesn't include debut_date or times_played in base response @@ -217,8 +221,14 @@ def import_shows(session, vertical_id, venue_map): if s.get('tour_id') and s['tour_id'] != 1: # 1 = "Not Part of a Tour" if s['tour_id'] not in tour_map: # Check if tour exists + slug = generate_slug(s['tourname']) existing_tour = session.exec( - select(Tour).where(Tour.name == s['tourname']) + select(Tour).where( + or_( + Tour.name == s['tourname'], + Tour.slug == slug + ) + ) ).first() if existing_tour: @@ -226,7 +236,7 @@ def import_shows(session, vertical_id, venue_map): else: tour = Tour( name=s['tourname'], - slug=generate_slug(s['tourname']) + slug=slug ) session.add(tour) session.commit()