#!/usr/bin/env bash
# 启动内部 app 平台 MinIO 对象存储桶
#
# 用法：
#   bash scripts/internal-app-platform/setup-minio.sh        # 启动 + init 桶
#   bash scripts/internal-app-platform/setup-minio.sh down   # 停止（保留数据卷）
#   bash scripts/internal-app-platform/setup-minio.sh nuke   # 停止 + 删卷（数据全丢）
#
# 前置：
#   - .env 已设 MINIO_ROOT_PASSWORD（详见 backend/.env.example）
#   - ffoa-network docker network 已存在（dev.sh up 会创建）

set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
COMPOSE_FILE="$SCRIPT_DIR/docker-compose.minio.yml"
ENV_FILE="$(cd "$SCRIPT_DIR/../.." && pwd)/backend/.env"

if [ ! -f "$ENV_FILE" ]; then
  echo "❌ 找不到 backend/.env，请先按 docs/setup 配置 .env 后重试" >&2
  exit 1
fi

ACTION="${1:-up}"

case "$ACTION" in
  up)
    echo "🚀 启动 MinIO..."
    docker compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" up -d minio
    echo "⏳ 等待 MinIO 健康..."
    docker compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" up minio-init
    echo "✅ MinIO 已就绪 — API: http://localhost:9000  Console: http://localhost:9001"
    ;;
  down)
    docker compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" down
    echo "✅ MinIO 已停止（数据卷保留）"
    ;;
  nuke)
    read -p "⚠️ 这将删除所有 MinIO 数据卷，不可恢复，确认输入 'NUKE': " confirm
    [ "$confirm" = "NUKE" ] || { echo "已取消"; exit 0; }
    docker compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" down -v
    echo "💥 MinIO + 数据卷已删除"
    ;;
  *)
    echo "用法: $0 {up|down|nuke}" >&2
    exit 1
    ;;
esac
