Files
toir-light/server/docker-entrypoint.sh
Первов Артем 327d3a95a3 Refactor Prisma migration handling in docker-entrypoint.sh
- 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.
2026-04-21 00:55:29 +03:00

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