# Build stage
FROM node:20-alpine AS builder

WORKDIR /app

# Copy workspace root files
COPY package*.json ./
COPY packages/shared ./packages/shared
COPY packages/api ./packages/api

# Install dependencies
RUN npm install

# Build shared package
WORKDIR /app/packages/shared
RUN npm run build

# Build API
WORKDIR /app/packages/api
RUN npm run prisma:generate
RUN npm run build

# Production stage
FROM node:20-alpine

# Install OpenSSL for Prisma and Python for recipe-scrapers
RUN apk add --no-cache openssl python3 py3-pip

# Install recipe-scrapers Python package
RUN pip3 install --break-system-packages recipe-scrapers

WORKDIR /app

# Copy built files and dependencies
COPY --from=builder /app/package*.json ./
COPY --from=builder /app/packages/shared/package.json ./packages/shared/
COPY --from=builder /app/packages/shared/dist ./packages/shared/dist
COPY --from=builder /app/packages/api/package.json ./packages/api/
COPY --from=builder /app/packages/api/dist ./packages/api/dist
COPY --from=builder /app/packages/api/prisma ./packages/api/prisma
COPY --from=builder /app/packages/api/scripts ./packages/api/scripts
COPY --from=builder /app/node_modules ./node_modules

WORKDIR /app/packages/api

# Create uploads directory and make Python script executable
RUN mkdir -p /app/uploads && chmod +x scripts/scrape_recipe.py

EXPOSE 3001

CMD ["sh", "-c", "npx prisma migrate deploy && node dist/index.js"]
