#!/usr/bin/env bash set -euo pipefail if ! command -v docker >/dev/null || ! docker ps --format '{{.Names}}' | grep -qx 'wygj-mysql'; then echo "SKIP: AIHR BRD scenario migration test requires wygj-mysql" exit 0 fi ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" MYSQL_CONTAINER="wygj-mysql" DB="wygj_aihr_brd_scenario_test_$$" mysql() { docker exec -i "$MYSQL_CONTAINER" mysql -uroot -proot --default-character-set=utf8mb4 "$@" } cleanup() { mysql -e "DROP DATABASE IF EXISTS \`$DB\`;" >/dev/null 2>&1 || true } trap cleanup EXIT mysql -e "CREATE DATABASE \`$DB\` CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;" mysql "$DB" < "$ROOT_DIR/backend/script/sql/update/aihr_20260714_practice_catalog_schema_mysql8.sql" mysql "$DB" < "$ROOT_DIR/backend/script/sql/update/aihr_20260714_practice_catalog_schema_mysql8.sql" catalog_tables="$(mysql "$DB" -N -B -e "SELECT GROUP_CONCAT(table_name ORDER BY table_name) FROM information_schema.tables WHERE table_schema='$DB' AND table_name IN ('aihr_practice_rubric','aihr_practice_rubric_dimension','aihr_practice_scenario');")" test "$catalog_tables" = 'aihr_practice_rubric,aihr_practice_rubric_dimension,aihr_practice_scenario' mysql "$DB" < "$ROOT_DIR/backend/script/sql/update/aihr_20260714_practice_brd_scenarios_mysql8.sql" mysql "$DB" < "$ROOT_DIR/backend/script/sql/update/aihr_20260714_practice_brd_scenarios_mysql8.sql" mysql "$DB" < "$ROOT_DIR/backend/script/sql/aihr_practice_mysql8.sql" mysql "$DB" < "$ROOT_DIR/backend/script/sql/update/aihr_20260714_practice_brd_scenarios_mysql8.sql" counts="$(mysql "$DB" -N -B -e " SELECT (SELECT COUNT(*) FROM aihr_practice_scenario WHERE scenario_code IN ('service-promotion-needs', 'daily-service-followup')), (SELECT COUNT(*) FROM aihr_practice_rubric WHERE scenario_code IN ('service-promotion-needs', 'daily-service-followup')), (SELECT COUNT(*) FROM aihr_practice_rubric_dimension WHERE rubric_code IN ('rubric-service-promotion-needs', 'rubric-daily-service-followup')); ")" test "$counts" = $'2\t2\t10' echo "PASS: AIHR BRD practice scenarios migration is idempotent"