#!/usr/bin/env bash
# 07-migrate — schema, bucket e caches depois do up (com backup já validado).
# Falha de migração NÃO desfaz o código nem restaura o banco automaticamente: o app
# continua no ar, o dump está registrado no log e a intervenção é consciente.
set -Eeuo pipefail
# shellcheck source=../lib/common.sh
. "$(dirname "$0")/../lib/common.sh"

phase_begin "07-migrate"

run "${COMPOSE[@]}" exec -T php-fpm php artisan optimize:clear
run "${COMPOSE[@]}" exec -T php-fpm composer dump-autoload --optimize --classmap-authoritative --no-dev
# O update é de instalação existente, mas a tabela pode faltar num banco recém-adotado.
# O status é evidência; o `migrate` abaixo é a operação que importa.
if ! "${COMPOSE[@]}" exec -T php-fpm php artisan migrate:status; then
    warn "migrate:status indisponível (tabela de migrations ausente); seguindo para o migrate."
fi
run "${COMPOSE[@]}" exec -T php-fpm php artisan migrate --force --isolated

run "${COMPOSE[@]}" exec -T php-fpm php artisan storage:ensure-bucket --no-interaction
if [ -n "$OFFSITE_MEDIA_BUCKET_V" ]; then
    run "${COMPOSE[@]}" exec -T php-fpm php artisan storage:ensure-bucket --disk=offsite-media --optional
fi

run "${COMPOSE[@]}" exec -T php-fpm php artisan core:cache-modules
run "${COMPOSE[@]}" exec -T php-fpm php artisan optimize
run "${COMPOSE[@]}" exec -T php-fpm sh -c 'kill -USR2 1'
run "${COMPOSE[@]}" exec -T php-fpm php artisan queue:restart

phase_end
