Files
2026-02-21 12:01:36 -08:00

61 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
# Initializes the database schema from db/Objects SQL files.
# Runs in order: tables (FK checks off) → functions → views → procedures.
set -e
DB="${MYSQL_DATABASE}"
OBJECTS_DIR="/db-objects"
mysql_exec() {
mysql -u root -p"${MYSQL_ROOT_PASSWORD}" "$DB" "$@"
}
echo "=== Initializing database schema ==="
# ── Tables (all in one session with FK checks disabled) ──────────────────────
if [ -d "$OBJECTS_DIR/tables" ] && ls "$OBJECTS_DIR/tables"/*.sql &>/dev/null; then
echo "Loading tables..."
{
echo "SET FOREIGN_KEY_CHECKS=0;"
for f in "$OBJECTS_DIR/tables"/*.sql; do
[ -f "$f" ] || continue
cat "$f"
echo
done
echo "SET FOREIGN_KEY_CHECKS=1;"
} | mysql_exec
echo " Tables done."
fi
# ── Functions ─────────────────────────────────────────────────────────────────
if [ -d "$OBJECTS_DIR/functions" ] && ls "$OBJECTS_DIR/functions"/*.sql &>/dev/null; then
echo "Loading functions..."
for f in "$OBJECTS_DIR/functions"/*.sql; do
[ -f "$f" ] || continue
mysql_exec < "$f"
done
echo " Functions done."
fi
# ── Views ─────────────────────────────────────────────────────────────────────
if [ -d "$OBJECTS_DIR/views" ] && ls "$OBJECTS_DIR/views"/*.sql &>/dev/null; then
echo "Loading views..."
for f in "$OBJECTS_DIR/views"/*.sql; do
[ -f "$f" ] || continue
mysql_exec < "$f"
done
echo " Views done."
fi
# ── Stored Procedures ─────────────────────────────────────────────────────────
if [ -d "$OBJECTS_DIR/procedures" ] && ls "$OBJECTS_DIR/procedures"/*.sql &>/dev/null; then
echo "Loading procedures..."
for f in "$OBJECTS_DIR/procedures"/*.sql; do
[ -f "$f" ] || continue
mysql_exec < "$f"
done
echo " Procedures done."
fi
echo "=== Schema initialization complete ==="