Sessions 5-7a: 955 tests, deployment ready

This commit is contained in:
Kev
2026-06-08 18:35:13 -04:00
parent 06b82624a2
commit 1fa04dc776
371 changed files with 49366 additions and 955 deletions
+89
View File
@@ -0,0 +1,89 @@
#!/usr/bin/env bash
#
# Run all VYNDR migrations (011 onward) against Supabase in order.
#
# Every statement in the migrations is idempotent (IF NOT EXISTS, CREATE
# OR REPLACE, DROP IF EXISTS), so this script is safe to re-run.
#
# Usage:
# scripts/run-migrations.sh # runs against $SUPABASE_DB_URL
# scripts/run-migrations.sh --dry-run # prints concatenated SQL to stdout
# (paste into Supabase SQL Editor)
# scripts/run-migrations.sh --from 015 # only run migrations >= 015
#
# Requires for live run:
# psql (PostgreSQL client) and SUPABASE_DB_URL env var.
# Dry run requires only bash + the files in supabase/migrations/.
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
MIGRATIONS_DIR="$ROOT/supabase/migrations"
DRY_RUN=0
FROM_PREFIX=""
while [[ $# -gt 0 ]]; do
case "$1" in
--dry-run) DRY_RUN=1; shift ;;
--from) FROM_PREFIX="$2"; shift 2 ;;
--help)
sed -n '/^# Usage:/,/^# Requires/p' "$0"
exit 0
;;
*) echo "Unknown arg: $1" >&2; exit 2 ;;
esac
done
# Migrations 001-010 were applied to production long before the VYNDR
# rebuild. Default skipping straight to 011. Use --from to override.
DEFAULT_FROM="011"
FROM="${FROM_PREFIX:-$DEFAULT_FROM}"
# Collect files >= FROM in numeric order.
MIGRATIONS=()
while IFS= read -r f; do
base="$(basename "$f")"
prefix="${base%%_*}"
# Bash [[ ]] doesn't have a portable >= for strings; use numeric compare.
# Strip leading zeros to avoid octal interpretation.
pnum=$((10#$prefix))
fnum=$((10#$FROM))
if (( pnum >= fnum )); then
MIGRATIONS+=("$f")
fi
done < <(find "$MIGRATIONS_DIR" -maxdepth 1 -type f -name '*.sql' | sort)
if [[ ${#MIGRATIONS[@]} -eq 0 ]]; then
echo "No migrations found at $MIGRATIONS_DIR matching --from $FROM" >&2
exit 1
fi
# Concatenate with header banners so output is auditable.
concat_sql() {
for f in "${MIGRATIONS[@]}"; do
printf -- '-- ============================================================\n'
printf -- '-- %s\n' "$(basename "$f")"
printf -- '-- ============================================================\n\n'
cat "$f"
printf '\n\n'
done
}
if [[ "$DRY_RUN" -eq 1 ]]; then
concat_sql
exit 0
fi
if [[ -z "${SUPABASE_DB_URL:-}" ]]; then
echo "ERROR: SUPABASE_DB_URL is not set. Re-run with --dry-run to inspect SQL." >&2
exit 1
fi
if ! command -v psql >/dev/null 2>&1; then
echo "ERROR: psql is not installed. Install postgresql-client or use --dry-run." >&2
exit 1
fi
echo "[migrations] applying ${#MIGRATIONS[@]} files to $(echo "$SUPABASE_DB_URL" | sed 's/:[^:@]*@/:***@/')"
concat_sql | psql "$SUPABASE_DB_URL" -v ON_ERROR_STOP=1
echo "[migrations] complete"