#!/usr/bin/env bash
set -euo pipefail

cd "$(dirname "$0")/.."

# Worker container starts from clean image.
# Install deps without frontend postinstall hooks (nuxt prepare) to keep worker lean/stable.
npm install --ignore-scripts --legacy-peer-deps
ARCH="$(uname -m)"
if [ "$ARCH" = "aarch64" ] || [ "$ARCH" = "arm64" ]; then
  npm rebuild sharp --platform=linux --arch=arm64v8 \
    || npm rebuild sharp --platform=linux --arch=arm64 \
    || npm install sharp --platform=linux --arch=arm64v8 --save-exact=false \
    || npm install sharp --platform=linux --arch=arm64 --save-exact=false
elif [ "$ARCH" = "x86_64" ] || [ "$ARCH" = "amd64" ]; then
  npm rebuild sharp --platform=linux --arch=x64 \
    || npm install sharp --platform=linux --arch=x64 --save-exact=false
else
  npm rebuild sharp || true
fi
npx prisma generate

# Ensure DB is reachable before the worker starts consuming jobs.
until node -e "const u=new URL(process.env.DATABASE_URL||''); const net=require('net'); const s=net.createConnection({host:u.hostname,port:Number(u.port||5432)}); s.on('connect',()=>{s.end(); process.exit(0);}); s.on('error',()=>process.exit(1));" ; do
  echo "Waiting for PostgreSQL..."
  sleep 1
done

exec npm run worker:delivery
