# ── Stage 1 : build ──────────────────────────────────────────────────────────
FROM node:20-alpine AS builder
WORKDIR /workspace

RUN corepack enable && corepack prepare pnpm@9.12.0 --activate

# package.json seuls d'abord (layer cache pnpm install)
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml turbo.json ./
COPY apps/api/package.json           apps/api/
COPY packages/shared/package.json    packages/shared/
COPY packages/db/package.json        packages/db/

RUN pnpm install --frozen-lockfile

# Sources complètes
COPY . .

# Build dans l'ordre des dépendances
RUN pnpm --filter @ordinarthur-os/shared build
RUN pnpm --filter @ordinarthur-os/db build
RUN pnpm --filter @ordinarthur-os/api build

# Deploy propre : pnpm résout les workspace packages compilés vers /deploy/api
RUN pnpm --filter @ordinarthur-os/api deploy --prod /deploy/api

# ── Stage 2 : runtime ────────────────────────────────────────────────────────
FROM node:20-alpine AS runtime
WORKDIR /app
ENV NODE_ENV=production

# Deps de prod isolées (inclut @ordinarthur-os/shared+db compilés)
COPY --from=builder /deploy/api/node_modules ./node_modules
COPY --from=builder /deploy/api/package.json ./

# Code compilé de l'API
COPY --from=builder /workspace/apps/api/dist ./dist

# Migrations SQL (pour le job K3s migrate)
COPY --from=builder /workspace/packages/db/migrations ./packages/db/migrations

EXPOSE 3000
CMD ["node", "dist/main.js"]
