# Build stage
FROM node:20-alpine AS builder

WORKDIR /app

# Copy root package files for workspace install
COPY package*.json ./
COPY backend/package*.json ./backend/
COPY backend/prisma ./backend/prisma/

# Install dependencies using npm install (no individual lockfile in workspace)
RUN npm install --legacy-peer-deps

# Copy backend source
COPY backend/ ./backend/

# Generate Prisma client and build
WORKDIR /app/backend
RUN npx prisma generate
RUN npm run build

# Production stage
FROM node:20-alpine

WORKDIR /app

# Install OpenSSL for Prisma
RUN apk add --no-cache openssl

# Copy package files
COPY package*.json ./
COPY backend/package*.json ./backend/

# Install production dependencies
RUN npm install --legacy-peer-deps --omit=dev

# Copy built files from builder
COPY --from=builder /app/backend/dist ./backend/dist
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/backend/prisma ./backend/prisma

# Ensure correct Prisma engine is available
RUN ls -la /app/node_modules/.prisma/client/ | grep engine

WORKDIR /app/backend

# Expose port
EXPOSE 3001

# Start application
CMD ["npm", "start"]
