#!/bin/bash
# ══════════════════════════════════════════════════════════════
#  PromoBot Safe Update Script
#  - Backs up the SQLite DB before any change
#  - Restarts the bot
#  - Migration runs automatically on startup (init_db)
#  Usage: bash update.sh
# ══════════════════════════════════════════════════════════════

set -e

DIR="$(cd "$(dirname "$0")" && pwd)"
DB="$DIR/promobot.db"
BACKUP_DIR="$DIR/backups"
TS="$(date +%Y%m%d_%H%M%S)"

RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
CYAN='\033[0;36m'
NC='\033[0m'

echo -e "${CYAN}══════════════════════════════════════════════════${NC}"
echo -e "   🔄 PromoBot Safe Update"
echo -e "${CYAN}══════════════════════════════════════════════════${NC}"
echo ""

# ── Step 1: Backup DB ────────────────────────────────────────
if [ -f "$DB" ]; then
    mkdir -p "$BACKUP_DIR"
    BACKUP_FILE="$BACKUP_DIR/promobot_$TS.db"
    cp "$DB" "$BACKUP_FILE"
    echo -e "${GREEN}✅ DB backup:${NC} $BACKUP_FILE"
    # Keep only the 10 latest backups
    ls -1t "$BACKUP_DIR"/promobot_*.db 2>/dev/null | tail -n +11 | xargs -r rm -f
else
    echo -e "${YELLOW}⚠️  No DB yet (first run?). Skipping backup.${NC}"
fi
echo ""

# ── Step 2: Python syntax check (fail fast) ──────────────────
echo -e "${YELLOW}🔍 Syntax check...${NC}"
PY="$DIR/venv/bin/python"
if [ ! -x "$PY" ]; then
    PY="$(command -v python3 || true)"
fi
if [ -n "$PY" ]; then
    "$PY" -m py_compile "$DIR/bot.py" "$DIR/database.py" "$DIR/texts.py"
    echo -e "${GREEN}✅ Syntax OK.${NC}"
else
    echo -e "${YELLOW}⚠️  Python not found for syntax check. Skipping.${NC}"
fi
echo ""

# ── Step 3: Restart bot (migration runs on init_db) ──────────
echo -e "${YELLOW}🔄 Restarting bot...${NC}"
if [ -f "$DIR/bot.sh" ]; then
    bash "$DIR/bot.sh" restart
else
    echo -e "${RED}❌ bot.sh not found. Run install.sh first.${NC}"
    exit 1
fi
echo ""

# ── Step 4: Tail logs briefly ────────────────────────────────
sleep 2
echo -e "${CYAN}── Recent log lines ──${NC}"
if [ -f "$DIR/bot.log" ]; then
    tail -15 "$DIR/bot.log"
fi
echo ""
echo -e "${GREEN}✅ Update complete.${NC}"
