# Stage 1: Build
FROM node:22-alpine AS builder

WORKDIR /app

COPY finops-query-gateway/package.json finops-query-gateway/package-lock.json* ./
RUN npm install

COPY finops-query-gateway/prisma ./prisma
RUN npx prisma generate

COPY finops-query-gateway/tsconfig.json ./
COPY finops-query-gateway/src ./src
RUN npm run build

# Stage 2: Run
FROM node:22-alpine AS runner

WORKDIR /app

# Install only production dependencies
COPY finops-query-gateway/package.json finops-query-gateway/package-lock.json* ./
RUN npm install --omit=dev

# Copy generated Prisma client
COPY --from=builder /app/node_modules/.prisma ./node_modules/.prisma
COPY --from=builder /app/node_modules/@prisma ./node_modules/@prisma

# Copy Prisma schema (needed for migrations at runtime)
COPY finops-query-gateway/prisma ./prisma

# Copy compiled output
COPY --from=builder /app/dist ./dist

# Copy skill files (served via /skill/SKILL.md route)
COPY skills/cloudcost ./skills/cloudcost

EXPOSE 4000

CMD ["node", "dist/server.js"]
