FROM 086679231553.dkr.ecr.us-east-1.amazonaws.com/docker-parent-images:node22 AS base

USER root

WORKDIR /var/app

ARG GIT_HASH=
ENV GIT_HASH=${GIT_HASH}

COPY package.json ./
COPY package-lock.json ./
COPY prisma ./prisma

RUN npm ci

COPY src ./src
COPY tests ./tests
COPY index.ts ./
COPY tsconfig.json ./
COPY jest.config.js ./
COPY set-pg-url.sh ./
COPY prisma.config.ts ./

RUN npm run build

FROM 086679231553.dkr.ecr.us-east-1.amazonaws.com/docker-parent-images:node22 AS deploy

USER root

ARG GIT_HASH=
ENV GIT_HASH=${GIT_HASH}

# Install Amazon RDS root CA certificate
RUN apt update \
    && apt upgrade -y \
    && apt install -y curl \
    && curl https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem \
          -o /etc/ssl/certs/rds-global-bundle.pem \
    && update-ca-certificates

ENV NODE_EXTRA_CA_CERTS=/etc/ssl/certs/rds-global-bundle.pem

USER node

WORKDIR /var/app

COPY --chown=node:node --from=base /var/app /var/app

RUN npm prune --omit=dev

CMD ["npm", "run", "api"]

FROM 086679231553.dkr.ecr.us-east-1.amazonaws.com/docker-parent-images:node22 AS lint-and-test

WORKDIR /var/app

COPY --chown=node:node --from=base /var/app /var/app

USER root

RUN touch .env

CMD ["npm", "test"]
