FROM node:20-slim AS build

WORKDIR /usr/src/app

COPY package*.json ./
RUN npm ci

COPY . .
RUN npm run build
RUN npm prune --omit=dev

# Production stage
FROM node:20-slim

# Install dependencies for Oracle Instant Client
RUN apt-get update && \
    apt-get install -y --no-install-recommends libaio1 wget unzip ca-certificates && \
    rm -rf /var/lib/apt/lists/*

# Install Oracle Instant Client Basic Light (using permanent link to latest)
# Dynamically detect the installed version for LD_LIBRARY_PATH
RUN wget -q https://download.oracle.com/otn_software/linux/instantclient/instantclient-basiclite-linuxx64.zip -O /tmp/instantclient.zip && \
    unzip /tmp/instantclient.zip -d /opt/oracle && \
    rm /tmp/instantclient.zip && \
    INSTANT_CLIENT_DIR=$(ls -d /opt/oracle/instantclient_* | head -1) && \
    echo $INSTANT_CLIENT_DIR > /etc/ld.so.conf.d/oracle-instantclient.conf && \
    ldconfig && \
    ln -s $INSTANT_CLIENT_DIR /opt/oracle/instantclient

ENV LD_LIBRARY_PATH=/opt/oracle/instantclient
ENV ORACLE_INSTANT_CLIENT_PATH=/opt/oracle/instantclient

WORKDIR /usr/src/app

COPY --from=build /usr/src/app/node_modules ./node_modules
COPY --from=build /usr/src/app/dist ./dist
COPY --from=build /usr/src/app/package*.json ./

EXPOSE 3000
CMD ["node", "dist/main.js"]
