ARG PARENT_IMAGE=086679231553.dkr.ecr.us-east-1.amazonaws.com/docker-parent-images:debian12
FROM $PARENT_IMAGE AS parent

USER root

# Run updates and install packages
RUN apt-get update && \
  apt-get -y upgrade && \
  apt-get -y install \
    apt-transport-https \
    awscli \
    curl \
    debian-archive-keyring \
    gnupg \
    readline-common

RUN mkdir -p /etc/apt/keyrings/ && \
  curl -fsSL https://packagecloud.io/orchardit/snowflake/gpgkey | gpg --dearmor > /etc/apt/keyrings/orchardit_snowflake-archive-keyring.gpg && \
  curl -fsSL https://packagecloud.io/orchardit/sqlrelay/gpgkey | gpg --dearmor > /etc/apt/keyrings/orchardit_sqlrelay-archive-keyring.gpg

COPY deploy/orchard_snowflake.list /etc/apt/sources.list.d/orchard_snowflake.list
COPY deploy/orchard_sqlrelay.list /etc/apt/sources.list.d/orchard_sqlrelay.list

RUN apt-get update && \
  apt-get -y install \
    cron \
    libedit-dev \
    libkrb5-dev \
    libltdl7 \
    libodbc2 \
    libodbcinst2 \
    libreadline8 \
    libssl-dev \
    lsb-release \
    odbcinst \
    odbc-sqlrelay \
    rudiments \
    rudiments-dbgsym \
    rudiments-dev \
    sqlrelay \
    sqlrelay-c++ \
    sqlrelay-c++-dev \
    sqlrelay-c \
    sqlrelay-c-dev \
    sqlrelay-cachemanager \
    sqlrelay-clients \
    sqlrelay-common \
    sqlrelay-common-dev \
    sqlrelay-dbgsym \
    sqlrelay-odbc \
    sqlrelay-router \
    sqlrelay-server-dev \
    unixodbc \
    unixodbc-common \
    unixodbc-dev \
    unzip \
    zip

ARG SNOWFLAKE_ODBC_VERSION=3.1.0
RUN apt-get -y install snowflake-odbc=${SNOWFLAKE_ODBC_VERSION} && \
  apt-get -y clean && \
  rm -rf /var/lib/apt/lists/*

# Snowflake ODBC driver is linked to an older libodbcinst by default. Vendor the config file to use a newer version
COPY configs/simba.snowflake.ini /usr/lib/snowflake/odbc/lib/simba.snowflake.ini

COPY deploy/entry_point.sh /usr/local/bin/entry_point.sh

# Cleanup job
COPY deploy/cron /etc/cron.d/sqlrelay_cron
RUN crontab /etc/cron.d/sqlrelay_cron

EXPOSE 9000

ENTRYPOINT  ["/usr/local/bin/entry_point.sh"]
