#!/bin/sh
# Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.

if [ $# -ne 1 ]; then
  echo "entrypoint requires the handler name to be the first argument" 1>&2
  exit 142
fi
export _HANDLER="$1"

RUNTIME_ENTRYPOINT="/usr/local/bin/python3 -m awslambdaric ${_HANDLER}"
if [ -z "${AWS_LAMBDA_RUNTIME_API}" ]; then
  exec /usr/local/bin/aws-lambda-rie ${RUNTIME_ENTRYPOINT}
else
  export SENTRY_DSN=$(aws secretsmanager get-secret-value --secret-id ${SENTRY_DSN} | jq -r '.SecretString' | jq -r '.slz_backfill_lambda')

  # delphi/dev/slz/apollo_mysql
  APOLLO_DB_CREDENTIALS=$(aws secretsmanager get-secret-value --secret-id ${APOLLO_DB_CREDENTIALS_SECRET_NAME} | jq -r '.SecretString')
  export APOLLO_DB_HOST=$(echo "${APOLLO_DB_CREDENTIALS}" | jq -r '.host')
  export APOLLO_DB_USER=$(echo "${APOLLO_DB_CREDENTIALS}" | jq -r '.username')
  export APOLLO_DB_PASS=$(echo "${APOLLO_DB_CREDENTIALS}" | jq -r '.password')
  export APOLLO_DB_PORT=$(echo "${APOLLO_DB_CREDENTIALS}" | jq -r '.port')
  export APOLLO_DB_NAME=$(echo "${APOLLO_DB_CREDENTIALS}" | jq -r '.database')
  export apollo_uri="mysql+pymysql://${APOLLO_DB_USER}:${APOLLO_DB_PASS}@${APOLLO_DB_HOST}:${APOLLO_DB_PORT}/${APOLLO_DB_NAME}"
  # delphi/dev/workflowdb/pg/user
  DELPHI_WORKFLOW_DB_CREDENTIALS=$(aws secretsmanager get-secret-value --secret-id ${DELPHI_WORKFLOW_DB_CREDENTIALS_SECRET_NAME} | jq -r '.SecretString')
  export DELPHI_WORKFLOW_DB_HOST=$(echo "${DELPHI_WORKFLOW_DB_CREDENTIALS}" | jq -r '.active_endpoint')
  export DELPHI_WORKFLOW_DB_USER=$(echo "${DELPHI_WORKFLOW_DB_CREDENTIALS}" | jq -r '.username')
  export DELPHI_WORKFLOW_DB_PASS=$(echo "${DELPHI_WORKFLOW_DB_CREDENTIALS}" | jq -r '.password')
  export DELPHI_WORKFLOW_DB_PORT=$(echo "${DELPHI_WORKFLOW_DB_CREDENTIALS}" | jq -r '.port')
  export DELPHI_WORKFLOW_DB_NAME=$(echo "${DELPHI_WORKFLOW_DB_CREDENTIALS}" | jq -r '.database')
  export workflow_uri="postgresql://${DELPHI_WORKFLOW_DB_USER}:${DELPHI_WORKFLOW_DB_PASS}@${DELPHI_WORKFLOW_DB_HOST}:${DELPHI_WORKFLOW_DB_PORT}/${DELPHI_WORKFLOW_DB_NAME}"
  # delphi/dev/api/pg/user
  DELPHI_MAIN_DB_CREDENTIALS=$(aws secretsmanager get-secret-value --secret-id ${DELPHI_MAIN_DB_CREDENTIALS_SECRET_NAME} | jq -r '.SecretString')
  export DELPHI_MAIN_DB_HOST=$(echo "${DELPHI_MAIN_DB_CREDENTIALS}" | jq -r '.active_endpoint')
  export DELPHI_MAIN_DB_USER=$(echo "${DELPHI_MAIN_DB_CREDENTIALS}" | jq -r '.username')
  export DELPHI_MAIN_DB_PASS=$(echo "${DELPHI_MAIN_DB_CREDENTIALS}" | jq -r '.password')
  export DELPHI_MAIN_DB_PORT=$(echo "${DELPHI_MAIN_DB_CREDENTIALS}" | jq -r '.port')
  export DELPHI_MAIN_DB_NAME=$(echo "${DELPHI_MAIN_DB_CREDENTIALS}" | jq -r '.database')
  export delphi_uri="postgresql://${DELPHI_MAIN_DB_USER}:${DELPHI_MAIN_DB_PASS}@${DELPHI_MAIN_DB_HOST}:${DELPHI_MAIN_DB_PORT}/${DELPHI_MAIN_DB_NAME}"

  exec ${RUNTIME_ENTRYPOINT}
fi