#!/bin/bash
set -e

CONTAINER_NAME="config-center-schema-dump"
DB_NAME="config_center"
MYSQL_PWD="root"
OUTPUT_FILE="schema.sql"

cleanup() {
  docker rm -f "$CONTAINER_NAME" 2>/dev/null || true
}
trap cleanup EXIT

# Start temporary MySQL
echo "Starting temporary MySQL container..."
docker run -d --name "$CONTAINER_NAME" \
  -e MYSQL_ROOT_PASSWORD="$MYSQL_PWD" \
  -e MYSQL_DATABASE="$DB_NAME" \
  mysql:8.0 >/dev/null

# Wait for MySQL to be ready
echo "Waiting for MySQL to be ready..."
for i in {1..30}; do
  if docker exec "$CONTAINER_NAME" mysqladmin ping -u root -p"$MYSQL_PWD" --silent 2>/dev/null; then
    break
  fi
  sleep 1
done

# Run migrations
echo "Running migrations..."
for f in migration/*.up.sql; do
  echo "  $f"
  docker exec -i "$CONTAINER_NAME" mysql -u root -p"$MYSQL_PWD" "$DB_NAME" < "$f"
done

# Dump schema with header comment
echo "Dumping schema to $OUTPUT_FILE..."
{
  echo "-- AUTO-GENERATED FILE. DO NOT EDIT MANUALLY."
  echo "-- This file is generated by 'make dump-schema' from migration/*.up.sql files."
  echo "-- To regenerate, run: make dump-schema"
  echo ""
  docker exec "$CONTAINER_NAME" mysqldump -u root -p"$MYSQL_PWD" --no-data --skip-comments "$DB_NAME" 2>/dev/null | \
    grep -v "^/\*!" | \
    grep -v "^--" | \
    grep -v "^$" | \
    sed 's/ AUTO_INCREMENT=[0-9]*//'
} > "$OUTPUT_FILE"

echo "Done. Schema written to $OUTPUT_FILE"
