Files
flyer-crawler.projectium.com/sql/verify_rollup.sh
Torben Sorensen 59ace9b31e
Some checks are pending
Deploy to Web Server flyer-crawler.projectium.com / deploy (push) Has started running
final initial database fixes - IT WORKS
2025-11-21 18:48:17 -08:00

54 lines
1.8 KiB
Bash

#!/bin/bash
# ============================================================================
# SQL ROLLUP VERIFICATION SCRIPT
# ============================================================================
# Purpose:
# This script verifies that the 'master_schema_rollup.sql' file is an exact
# concatenation of the individual SQL component files. This helps ensure
# that all database setup scripts are synchronized.
#
# Usage:
# From the root of the project, run:
# bash sql/verify_rollup.sh
#
# The script will exit with code 0 if they match, and 1 if they don't.
# ============================================================================
# Set the script to exit immediately if a command fails
set -e
# Define file paths relative to the project root
SQL_DIR="sql"
MASTER_FILE="$SQL_DIR/master_schema_rollup.sql"
# The individual files to concatenate, IN ORDER.
SOURCE_FILES=(
"$SQL_DIR/initial_schema.sql"
"$SQL_DIR/initial_data.sql"
"$SQL_DIR/initial_triggers_and_functions.sql"
)
# Create a temporary file to hold the concatenated content
TEMP_FILE=$(mktemp)
# Ensure the temporary file is removed when the script exits
trap 'rm -f "$TEMP_FILE"' EXIT
# Concatenate all source files into the temp file
echo "Concatenating source files into a temporary file..."
cat "${SOURCE_FILES[@]}" > "$TEMP_FILE"
echo "Comparing concatenated content with '$MASTER_FILE'..."
# Use 'diff' to compare the master file with the temporary concatenated file.
# The '-q' flag makes diff quiet and just exit with a status code.
if diff -q "$MASTER_FILE" "$TEMP_FILE"; then
echo "✅ Success: '$MASTER_FILE' is up to date with the individual SQL files."
exit 0
else
echo "❌ Error: '$MASTER_FILE' is out of sync. Differences found."
echo "To see the differences, run: diff -u \"$MASTER_FILE\" <(cat ${SOURCE_FILES[@]})"
exit 1
fi