Compare commits
2 commits
429858287f
...
be5921b6ee
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
be5921b6ee | ||
|
|
f026cb2423 |
2 changed files with 22 additions and 4 deletions
|
|
@ -5,7 +5,7 @@ Fetches ALL Goose data from El Goose API and populates demo database
|
||||||
import requests
|
import requests
|
||||||
import time
|
import time
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from sqlmodel import Session, select
|
from sqlmodel import Session, select, or_
|
||||||
from database import engine
|
from database import engine
|
||||||
from models import (
|
from models import (
|
||||||
Vertical, Venue, Tour, Show, Song, Performance, Artist,
|
Vertical, Venue, Tour, Show, Song, Performance, Artist,
|
||||||
|
|
@ -14,7 +14,7 @@ from models import (
|
||||||
from passlib.context import CryptContext
|
from passlib.context import CryptContext
|
||||||
from slugify import generate_slug, generate_show_slug
|
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
|
ARTIST_ID = 1 # Goose
|
||||||
pwd_context = CryptContext(schemes=["argon2"], deprecated="auto")
|
pwd_context = CryptContext(schemes=["argon2"], deprecated="auto")
|
||||||
|
|
||||||
|
|
@ -114,6 +114,10 @@ def create_users(session):
|
||||||
print(f"✓ Created/Found {len(users)} users")
|
print(f"✓ Created/Found {len(users)} users")
|
||||||
return users
|
return users
|
||||||
|
|
||||||
|
from sqlmodel import Session, select, or_
|
||||||
|
|
||||||
|
# ... (imports)
|
||||||
|
|
||||||
def import_venues(session):
|
def import_venues(session):
|
||||||
"""Import all venues"""
|
"""Import all venues"""
|
||||||
print("\n🏛️ Importing venues...")
|
print("\n🏛️ Importing venues...")
|
||||||
|
|
@ -123,8 +127,14 @@ def import_venues(session):
|
||||||
|
|
||||||
venue_map = {}
|
venue_map = {}
|
||||||
for v in venues_data:
|
for v in venues_data:
|
||||||
|
slug = generate_slug(v['venuename'])
|
||||||
existing = session.exec(
|
existing = session.exec(
|
||||||
select(Venue).where(Venue.name == v['venuename'])
|
select(Venue).where(
|
||||||
|
or_(
|
||||||
|
Venue.name == v['venuename'],
|
||||||
|
Venue.slug == slug
|
||||||
|
)
|
||||||
|
)
|
||||||
).first()
|
).first()
|
||||||
|
|
||||||
if existing:
|
if existing:
|
||||||
|
|
@ -132,7 +142,7 @@ def import_venues(session):
|
||||||
else:
|
else:
|
||||||
venue = Venue(
|
venue = Venue(
|
||||||
name=v['venuename'],
|
name=v['venuename'],
|
||||||
slug=generate_slug(v['venuename']),
|
slug=slug,
|
||||||
city=v.get('city'),
|
city=v.get('city'),
|
||||||
state=v.get('state'),
|
state=v.get('state'),
|
||||||
country=v.get('country'),
|
country=v.get('country'),
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,15 @@ def daily_import_job():
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Daily import failed: {e}")
|
logger.error(f"Daily import failed: {e}")
|
||||||
|
|
||||||
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
def start_scheduler():
|
def start_scheduler():
|
||||||
|
# Regular interval
|
||||||
scheduler.add_job(daily_import_job, 'interval', hours=12, id='goose_import')
|
scheduler.add_job(daily_import_job, 'interval', hours=12, id='goose_import')
|
||||||
|
|
||||||
|
# Run once on startup (with 10s delay to let server settle)
|
||||||
|
run_date = datetime.now() + timedelta(seconds=10)
|
||||||
|
scheduler.add_job(daily_import_job, 'date', run_date=run_date, id='goose_import_startup')
|
||||||
|
|
||||||
scheduler.start()
|
scheduler.start()
|
||||||
logger.info("Scheduler started with daily import job.")
|
logger.info("Scheduler started with daily import job.")
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue