#!/bin/bash
# Health check script for rateright-app (Next.js on port 3000)
# Runs every 5 minutes via cron

LOG_FILE="/var/log/rateright-health.log"
APP_URL="http://localhost:3000"
SERVICE_NAME="rateright-app"
DATE=$(date '+%Y-%m-%d %H:%M:%S')

# Function to log messages
log_message() {
    echo "[$DATE] $1" | tee -a "$LOG_FILE"
}

# Perform health check with timeout
HTTP_STATUS=$(curl -s -o /dev/null -w "%{http_code}" --max-time 10 "$APP_URL" 2>/dev/null)

if [ "$HTTP_STATUS" != "200" ]; then
    log_message "ERROR: Health check failed. HTTP status: ${HTTP_STATUS:-'No response'}. Restarting $SERVICE_NAME..."
    
    # Attempt to restart the service
    if systemctl restart "$SERVICE_NAME" 2>/dev/null; then
        log_message "SUCCESS: $SERVICE_NAME restarted successfully."
        chown -R ccuser:ccuser /home/ccuser/the-50-dollar-app/.next/ /home/ccuser/the-50-dollar-app/.git/ 2>/dev/null
        
        # Wait a moment and verify it's back up
        sleep 5
        VERIFY_STATUS=$(curl -s -o /dev/null -w "%{http_code}" --max-time 10 "$APP_URL" 2>/dev/null)
        if [ "$VERIFY_STATUS" == "200" ]; then
            log_message "SUCCESS: Health check passed after restart."
        else
            log_message "WARNING: Service restarted but health check still failing (HTTP $VERIFY_STATUS)."
        fi
    else
        log_message "CRITICAL: Failed to restart $SERVICE_NAME. Manual intervention required."
    fi
else
    # Optional: Log successful checks (can be commented out to reduce log noise)
    : # No-op - uncomment below to log successes
    # log_message "OK: Health check passed (HTTP 200)"
fi
