FROM node:20-alpine AS base
RUN corepack enable && corepack prepare pnpm@9.15.9 --activate
WORKDIR /app

# ---------------------------------------------------------------------------
# Development (used by docker-compose.yml)
# ---------------------------------------------------------------------------
FROM base AS development
COPY package.json pnpm-workspace.yaml ./
COPY packages/shared/package.json ./packages/shared/
COPY apps/worker/package.json ./apps/worker/
RUN pnpm install --filter @ai-cms/worker... --frozen-lockfile=false
COPY packages/shared ./packages/shared
COPY apps/worker ./apps/worker
EXPOSE 3010
CMD ["pnpm", "--filter", "@ai-cms/worker", "dev"]

# ---------------------------------------------------------------------------
# Production build
# ---------------------------------------------------------------------------
FROM base AS build
COPY package.json pnpm-workspace.yaml ./
COPY packages/shared/package.json ./packages/shared/
COPY apps/worker/package.json ./apps/worker/
RUN pnpm install --filter @ai-cms/worker... --frozen-lockfile=false
COPY packages/shared ./packages/shared
COPY apps/worker ./apps/worker
RUN pnpm --filter @ai-cms/shared build \
 && pnpm --filter @ai-cms/worker build

# ---------------------------------------------------------------------------
# Production runtime
# ---------------------------------------------------------------------------
FROM base AS production
ENV NODE_ENV=production
COPY --from=build /app/node_modules ./node_modules
COPY --from=build /app/package.json ./package.json
COPY --from=build /app/pnpm-workspace.yaml ./pnpm-workspace.yaml
COPY --from=build /app/packages/shared ./packages/shared
COPY --from=build /app/apps/worker/node_modules ./apps/worker/node_modules
COPY --from=build /app/apps/worker/dist ./apps/worker/dist
COPY --from=build /app/apps/worker/package.json ./apps/worker/package.json
WORKDIR /app/apps/worker
CMD ["node", "dist/main.js"]
