#!/usr/bin/env bash
# 在部署（compose up）之后执行：将 web/promotion/视频发布 导入 data/uploads + MongoDB site_assets。
# 触发条件：环境变量或 server/.env 中设置了 YH_IMPORT_PROMOTION_SITE_ID（Mongo 站点 _id）。
# 使用 Docker 内 golang 执行 go run，与 compose 内 mongo 同网（mongodb://mongo:27017），宿主机无需安装 Go。
# 用法：由 pull-and-restart.sh / restart.sh 调用；勿单独在 compose 未启动时依赖 mongo 网络。
set +e
ROOT="${1:-}"
if [ -z "$ROOT" ] || [ ! -d "$ROOT/server" ]; then
  echo "run-promotion-import-on-deploy.sh: 无效项目根目录" >&2
  exit 0
fi
ROOT="$(cd "$ROOT" && pwd)"

SITE="${YH_IMPORT_PROMOTION_SITE_ID:-}"
if [ -z "$SITE" ] && [ -f "$ROOT/server/.env" ]; then
  SITE="$(grep -E '^[[:space:]]*YH_IMPORT_PROMOTION_SITE_ID=' "$ROOT/server/.env" 2>/dev/null | tail -1 | cut -d= -f2- | tr -d '\r' | sed "s/^[\"']//;s/[\"']$//" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')"
fi
if [ -z "$SITE" ]; then
  echo "跳过 promotion-import：未设置 YH_IMPORT_PROMOTION_SITE_ID（可在 server/.env 中配置）。"
  exit 0
fi

SRC_DIR="$ROOT/web/promotion/视频发布"
if [ ! -d "$SRC_DIR" ]; then
  echo "跳过 promotion-import：无源目录 $SRC_DIR"
  exit 0
fi

DOCKER="docker"
if ! docker info >/dev/null 2>&1; then
  if sudo docker info >/dev/null 2>&1; then
    DOCKER="sudo docker"
  else
    echo "警告: 无法使用 docker，跳过 promotion-import" >&2
    exit 0
  fi
fi

PROJECT_NAME="${COMPOSE_PROJECT_NAME:-$(basename "$ROOT")}"
NET="${PROJECT_NAME}_yh_net"
if ! $DOCKER network inspect "$NET" >/dev/null 2>&1; then
  echo "警告: 未找到 Docker 网络 $NET（COMPOSE_PROJECT_NAME 是否一致？），跳过 promotion-import" >&2
  exit 0
fi

REGISTRY_MIRROR="${REGISTRY_MIRROR:-docker.m.daocloud.io/library/}"
GOIMAGE="${REGISTRY_MIRROR}golang:1.21-alpine"
GOPROXY="${GOPROXY:-https://goproxy.cn,direct}"

ENV_FILE_ARG=()
if [ -f "$ROOT/server/.env" ]; then
  ENV_FILE_ARG=(--env-file "$ROOT/server/.env")
fi

echo ""
echo "promotion-import：site=$SITE（源=$SRC_DIR -> uploads=/uploads）..."
mkdir -p "$ROOT/data/uploads"

if ! $DOCKER run --rm \
  --network "$NET" \
  -v "$ROOT/server:/src" \
  -v "$ROOT/data/uploads:/uploads" \
  -v "$SRC_DIR:/import-src:ro" \
  "${ENV_FILE_ARG[@]}" \
  -e MONGODB_URI=mongodb://mongo:27017 \
  -e GOPROXY="$GOPROXY" \
  -e YH_PI_SITE="$SITE" \
  "$GOIMAGE" \
  sh -c 'cd /src && go run -mod=vendor ./cmd/promotion-import/ -site="$YH_PI_SITE" -src=/import-src -upload=/uploads'; then
  echo "警告: promotion-import 未成功，可手动执行: ./scripts/import-promotion-to-api.sh -site=$SITE" >&2
fi

chmod -R a+rX "$ROOT/data/uploads" 2>/dev/null || sudo chmod -R a+rX "$ROOT/data/uploads" 2>/dev/null || true

exit 0
