#!/bin/bash
# Master Data Sync - Primary entry point for all data synchronization
# This script coordinates the main data flow for all leagues and seasons
# Run: Every 30 minutes during active hours (10 AM - 2 AM EST)
# Cron: */30 10-23,0-2 * * * /var/www/html/eventheodds/scripts/cron-master-sync.sh

set -e

LOG_FILE="/var/log/eventheodds/master-sync.log"
SCRIPTS_DIR="/var/www/html/eventheodds/scripts"
export PATH="/usr/local/bin:/usr/bin:/bin:$PATH"

log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}

mkdir -p /var/log/eventheodds

log "=========================================="
log "MASTER DATA SYNC"
log "=========================================="

cd /var/www/html/eventheodds

# Load environment
if [ -f .env ]; then
    export $(grep -v '^#' .env | xargs)
fi

# Step 1: Sync games and props from SportsGameOdds SDK (primary source)
log "Step 1: Syncing from SportsGameOdds SDK..."
timeout 300 npx tsx scripts/sync-sgo-sdk.js >> "$LOG_FILE" 2>&1 || log "WARNING: SGO SDK sync had issues"

# Step 2: Normalize any new props from external feeds
log "Step 2: Normalizing SGO props..."
timeout 120 node scripts/normalize_sportsgameodds_player_props.js >> "$LOG_FILE" 2>&1 || log "WARNING: Props normalization had issues"

# Step 3: Quick canonical linking for new data
log "Step 3: Quick canonical linking..."
timeout 180 npx tsx "$SCRIPTS_DIR/link-by-name.ts" >> "$LOG_FILE" 2>&1 || log "WARNING: Name linking had issues"
timeout 120 npx tsx "$SCRIPTS_DIR/link-props-via-player-table.ts" >> "$LOG_FILE" 2>&1 || log "WARNING: Props linking had issues"

# Record completion
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
echo "$TIMESTAMP" > /var/www/html/eventheodds/logs/last-master-sync.txt

log "Master sync completed at $TIMESTAMP"
