- Introduced a function to handle schema synchronization with prisma db push. - Enhanced migration logic to fall back to db push if migration fails with P3005 error. - Improved logging for migration processes to aid in debugging.
38 lines
1.0 KiB
Bash
38 lines
1.0 KiB
Bash
#!/bin/sh
|
|
set -eu
|
|
|
|
run_db_push() {
|
|
echo "Syncing schema with prisma db push..."
|
|
npx prisma db push
|
|
}
|
|
|
|
if [ ! -d "prisma/migrations" ] || [ -z "$(find prisma/migrations -mindepth 1 -maxdepth 1 -type d 2>/dev/null)" ]; then
|
|
echo "No Prisma migrations found, syncing schema with db push..."
|
|
run_db_push
|
|
else
|
|
echo "Applying Prisma migrations with migrate deploy..."
|
|
MIGRATE_LOG="$(mktemp)"
|
|
set +e
|
|
npx prisma migrate deploy >"$MIGRATE_LOG" 2>&1
|
|
MIGRATE_EXIT=$?
|
|
set -e
|
|
|
|
if [ "$MIGRATE_EXIT" -eq 0 ]; then
|
|
cat "$MIGRATE_LOG"
|
|
rm -f "$MIGRATE_LOG"
|
|
elif grep -q P3005 "$MIGRATE_LOG"; then
|
|
cat "$MIGRATE_LOG" >&2
|
|
echo "" >&2
|
|
echo "prisma migrate deploy failed with P3005: database already has schema but no migration history (typical after prisma db push)." >&2
|
|
echo "Falling back to prisma db push so the schema stays in sync." >&2
|
|
rm -f "$MIGRATE_LOG"
|
|
run_db_push
|
|
else
|
|
cat "$MIGRATE_LOG" >&2
|
|
rm -f "$MIGRATE_LOG"
|
|
exit "$MIGRATE_EXIT"
|
|
fi
|
|
fi
|
|
|
|
exec node dist/src/main.js
|