#!/bin/sh set -eu MAX_MIGRATION_RETRIES="${MIGRATION_MAX_RETRIES:-30}" MIGRATION_RETRY_DELAY_SECONDS="${MIGRATION_RETRY_DELAY_SECONDS:-2}" ATTEMPT=1 echo "==> Running database migrations (with retry)..." until npx prisma migrate deploy; do if [ "$ATTEMPT" -ge "$MAX_MIGRATION_RETRIES" ]; then echo "ERROR: Migration failed after ${MAX_MIGRATION_RETRIES} attempts." exit 1 fi echo "Migration attempt ${ATTEMPT} failed. Retrying in ${MIGRATION_RETRY_DELAY_SECONDS}s..." ATTEMPT=$((ATTEMPT + 1)) sleep "$MIGRATION_RETRY_DELAY_SECONDS" done echo "==> Generating Prisma client..." npx prisma generate # Auto-seed on first startup: check if Users table is empty USER_COUNT=$(node -e " const { PrismaClient } = require('@prisma/client'); const p = new PrismaClient(); p.user.count().then(c => { console.log(c); p.\$disconnect(); }).catch(() => { console.log('0'); p.\$disconnect(); }); " 2>/dev/null || echo "0") if [ "$USER_COUNT" = "0" ]; then echo "==> Empty database detected — running seed..." npx prisma db seed || echo "WARNING: Seed script failed." else echo "==> Database already seeded ($USER_COUNT users found), skipping seed." fi echo "==> Starting application..." exec node server.js