#!/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
