FROM node:22.22.0-alpine 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 node:22.22.0-alpine AS deploy

USER root

RUN apk add --no-cache curl

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 node:22.22.0-alpine 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"]
