#!/usr/bin/env bash
# Setup via Docker: PHP-FPM + Nginx em containers; MySQL na rede (DB_HOST no .env)
set -euo pipefail

cd "$(dirname "$0")"

if ! command -v docker >/dev/null; then
    echo "Erro: Docker não encontrado."
    exit 1
fi

echo "==> Colégio Vinícius — setup Docker"
echo "    MySQL: servidor em DB_HOST | Redis: serviço Docker (REDIS_HOST=redis)"
echo "    PHP + Nginx: Docker (site em http://localhost:\${HTTP_PORT:-8080})"
echo ""

if [ ! -f .env ]; then
    cp .env.example .env
fi

echo "1) Build..."
docker compose build app

echo "2) Composer install..."
docker compose run --rm app composer install --no-interaction

echo "3) APP_KEY..."
docker compose run --rm app php artisan key:generate --force

echo "4) Assets (Vite build)..."
docker compose --profile build run --rm node-build

echo "5) Subindo app + nginx + redis + queue..."
docker compose up -d app nginx redis queue

echo "   Permissões storage (www-data)..."
docker compose exec -u root app sh /var/www/html/docker/fix-permissions.sh

echo ""
echo "Ajuste DB_* no .env se ainda não fez (banco no servidor MySQL)."
read -r -p "Pressione Enter quando o MySQL estiver acessível..." _

echo "6) Migrations + seed (admin)..."
docker compose exec -u www-data app php artisan migrate --seed --force
docker compose exec -u www-data app php artisan db:seed --class=DemoDataSeeder --force
docker compose exec -u www-data app php artisan storage:link --force 2>/dev/null || docker compose exec -u www-data app php artisan storage:link
docker compose exec -u www-data app php artisan sitemap:generate
docker compose exec -u www-data app php artisan config:clear

echo ""
echo "Pronto!"
echo "  Site:   http://localhost:${HTTP_PORT:-8080}/"
echo "  Admin:  http://localhost:${HTTP_PORT:-8080}/login"
echo "  E-mail: admin@colegiovinicius.local"
echo "  Senha:  password"
