# ---------- BUILD STAGE ----------
FROM node:20-alpine AS builder

WORKDIR /app

# Only install deps first (cache friendly)
COPY package*.json ./
RUN npm ci

# Copy source
COPY . .

# Generate prisma + build
RUN npx prisma generate
RUN npm run build


# ---------- PRODUCTION STAGE ----------
FROM node:20-alpine

WORKDIR /app

ENV NODE_ENV=production

# Only install production deps
COPY package*.json ./
RUN npm ci --omit=dev && npm cache clean --force

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

# Copy built app
COPY --from=builder /app/dist ./dist

# Uploads folder
RUN mkdir -p /app/uploads

EXPOSE 5000

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