#!/bin/bash

# Backend Startup Script for cPanel
# This script starts the FastAPI backend with Gunicorn

# Configuration
BACKEND_DIR="/home/$(whoami)/backend"
VENV_DIR="$BACKEND_DIR/venv"
LOG_DIR="$BACKEND_DIR/logs"
PID_FILE="$BACKEND_DIR/backend.pid"
LOG_FILE="$LOG_DIR/backend.log"
ERROR_LOG="$LOG_DIR/error.log"

# Create logs directory if it doesn't exist
mkdir -p "$LOG_DIR"

# Navigate to backend directory
cd "$BACKEND_DIR" || exit 1

# Activate virtual environment
source "$VENV_DIR/bin/activate" || exit 1

# Check if backend is already running
if [ -f "$PID_FILE" ]; then
    PID=$(cat "$PID_FILE")
    if ps -p "$PID" > /dev/null 2>&1; then
        echo "Backend is already running (PID: $PID)"
        exit 1
    else
        echo "Removing stale PID file"
        rm "$PID_FILE"
    fi
fi

# Start backend with Gunicorn
echo "Starting backend..."
nohup gunicorn backend.server:app \
    --host 0.0.0.0 \
    --port 8000 \
    --workers 4 \
    --worker-class uvicorn.workers.UvicornWorker \
    --access-logfile "$LOG_FILE" \
    --error-logfile "$ERROR_LOG" \
    --daemon \
    --pid "$PID_FILE"

# Check if backend started successfully
sleep 3
if [ -f "$PID_FILE" ]; then
    PID=$(cat "$PID_FILE")
    if ps -p "$PID" > /dev/null 2>&1; then
        echo "Backend started successfully (PID: $PID)"
        echo "Logs: $LOG_FILE"
        echo "Error logs: $ERROR_LOG"
    else
        echo "Backend failed to start. Check $ERROR_LOG"
        exit 1
    fi
else
    echo "Backend failed to start. Check $ERROR_LOG"
    exit 1
fi
