#!/bin/bash
set -e

# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

echo -e "${GREEN}🚀 Deploying IA Service to Production${NC}"

# Check if required environment variables are set
required_vars=("APP_SECRET" "DATABASE_URL" "OPENAI_API_KEY" "POSTGRES_PASSWORD")
for var in "${required_vars[@]}"; do
    if [ -z "${!var}" ]; then
        echo -e "${RED}❌ Error: Environment variable $var is not set${NC}"
        exit 1
    fi
done

echo -e "${YELLOW}📦 Building Docker images...${NC}"
docker-compose build --no-cache

echo -e "${YELLOW}🔄 Stopping existing containers...${NC}"
docker-compose down

echo -e "${YELLOW}🗄️ Starting database...${NC}"
docker-compose up -d database redis

echo -e "${YELLOW}⏳ Waiting for database to be ready...${NC}"
sleep 10

echo -e "${YELLOW}🔧 Running database migrations...${NC}"
docker-compose exec -T database psql -U ${POSTGRES_USER:-app} -d ${POSTGRES_DB:-app} -c "SELECT 1;" > /dev/null 2>&1 || {
    echo -e "${RED}❌ Database is not ready${NC}"
    exit 1
}

echo -e "${YELLOW}🚀 Starting application...${NC}"
docker-compose up -d app

echo -e "${YELLOW}⏳ Waiting for application to be ready...${NC}"
sleep 15

# Health check
echo -e "${YELLOW}🔍 Performing health check...${NC}"
if curl -f http://localhost:8080/health > /dev/null 2>&1; then
    echo -e "${GREEN}✅ Application is healthy and running!${NC}"
    echo -e "${GREEN}🌐 Application is available at: http://localhost:8080${NC}"
else
    echo -e "${RED}❌ Health check failed!${NC}"
    echo -e "${YELLOW}📋 Checking application logs...${NC}"
    docker-compose logs app
    exit 1
fi

echo -e "${GREEN}🎉 Deployment completed successfully!${NC}"