#!/usr/bin/env sh set -eu # 仅用于测试基础设施容器。所有 SQL 均使用 CREATE ... IF NOT EXISTS 或幂等扩展语句, # 不删除已有业务数据;仓库样例数据使用固定 ID 重复写入。 MYSQL_CONTAINER="${TEST_MYSQL_CONTAINER:-firstleg-test-mysql}" if ! docker inspect --type container "$MYSQL_CONTAINER" >/dev/null 2>&1; then echo "测试 MySQL 容器不存在:$MYSQL_CONTAINER" >&2 echo "请先执行 docker compose -f docker-compose-infra.yml up -d" >&2 exit 1 fi if [ "$(docker inspect -f '{{.State.Running}}' "$MYSQL_CONTAINER")" != "true" ]; then echo "测试 MySQL 容器未运行:$MYSQL_CONTAINER" >&2 exit 1 fi for sql_file in \ auth/src/main/resources/db/auth.sql \ iam/src/main/resources/db/iam.sql \ auth/src/main/resources/db/phase1-admin-accounts.sql \ iam/src/main/resources/db/phase1-admin-rbac.sql \ iam/src/main/resources/db/phase1-onboarding.sql \ iam/src/main/resources/db/phase1-customer-profile-fields.sql \ iam/src/main/resources/db/phase1-member-permissions.sql \ iam/src/main/resources/db/rbac-role-management-v2.sql \ iam/src/main/resources/db/phase1-platform-master-data-and-permission-management.sql \ order/src/main/resources/db/order.sql \ order/src/main/resources/db/phase1-order-extension.sql \ order/src/main/resources/db/phase1-masterdata-extension.sql \ warehouse/src/main/resources/db/warehouse.sql \ warehouse/src/main/resources/db/warehouse-partner.sql \ warehouse/src/main/resources/db/warehouse-seed.sql do if [ ! -f "$sql_file" ]; then echo "找不到初始化 SQL:$sql_file" >&2 exit 1 fi echo "初始化测试数据库:$sql_file" docker exec -i "$MYSQL_CONTAINER" sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD" --default-character-set=utf8mb4' < "$sql_file" done echo "测试数据库初始化完成。"