export-stage3-sql.sh 1.5 KB

123456789101112131415161718192021222324252627282930313233343536
  1. #!/usr/bin/env bash
  2. set -euo pipefail
  3. project_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
  4. source_path="$project_root/database/zhibaotong-stage1-stage2-stage3-mysql.sql"
  5. target_path="$project_root/database/zhibaotong-stage3-mysql.sql"
  6. uv run --project "$project_root/backend" python - "$source_path" "$target_path" <<'PY'
  7. from pathlib import Path
  8. import sys
  9. source_path = Path(sys.argv[1])
  10. target_path = Path(sys.argv[2])
  11. content = source_path.read_text(encoding="utf-8")
  12. session_start_marker = "/*!40101 SET @OLD_CHARACTER_SET_CLIENT"
  13. first_database_marker = "-- Current Database: `insurance_s1_core`"
  14. stage3_marker = "-- Current Database: `insurance_s3_core`"
  15. session_start = content.find(session_start_marker)
  16. first_database_start = content.find(first_database_marker)
  17. stage3_start = content.find(stage3_marker)
  18. if min(session_start, first_database_start, stage3_start) < 0:
  19. raise RuntimeError("Expected stage boundaries were not found in the unified SQL.")
  20. session_preamble = content[session_start:first_database_start]
  21. stage3_body = content[stage3_start:]
  22. header = """-- Zhibaotong Stage 3 MySQL initialization script
  23. -- Source: zhibaotong-stage1-stage2-stage3-mysql.sql
  24. -- Databases: insurance_s3_core, insurance_s3_agent, insurance_s3_analytics
  25. -- Warning: importing this file rebuilds same-named tables in these databases.
  26. """
  27. target_path.write_text(header + session_preamble + stage3_body, encoding="utf-8", newline="")
  28. print(f"Generated: {target_path}")
  29. PY