elmeg-demo/backend/fix_tour_dates.py
fullsizemalt 47420b6e57
Some checks are pending
Deploy Elmeg / deploy (push) Waiting to run
feat(backend): Add script to fix tour dates
2025-12-21 01:06:51 -08:00

56 lines
1.7 KiB
Python

#!/usr/bin/env python3
"""
Fix Tour Dates Script
Iterates through all Tours, finds their associated shows, and updates
the tour's start_date and end_date based on the range of show dates.
"""
from sqlmodel import Session, select
from database import engine
from models import Tour, Show
from datetime import datetime
def fix_tour_dates():
print("="*60)
print("FIX TOUR DATES")
print("="*60)
with Session(engine) as session:
tours = session.exec(select(Tour)).all()
print(f"Found {len(tours)} tours to process.")
updated_count = 0
for tour in tours:
# Get all shows for this tour
shows = session.exec(
select(Show).where(Show.tour_id == tour.id)
).all()
if not shows:
print(f"Skipping '{tour.name}' - No shows found.")
continue
dates = [s.date for s in shows]
min_date = min(dates)
max_date = max(dates)
# Check if update is needed
needs_update = False
if tour.start_date != min_date:
tour.start_date = min_date
needs_update = True
if tour.end_date != max_date:
tour.end_date = max_date
needs_update = True
if needs_update:
session.add(tour)
updated_count += 1
print(f"Updated '{tour.name}': {min_date.date()} - {max_date.date()}")
session.commit()
print(f"\nSuccessfully updated {updated_count} tours.")
if __name__ == "__main__":
fix_tour_dates()