#!/usr/bin/env bash

set -eo pipefail

MIGRATION_NAME="$1"

DIR="$(cd "$(dirname "$0")" && pwd)"
cd "$DIR"

if [[ -z "${MIGRATION_NAME}" ]]; then
  echo 'MIGRATION_NAME argument ($1) missing'
  exit 1
fi

if [[ -z "${POSTGRES_HOST}" ]]; then
  echo 'POSTGRES_HOST env-var missing'
  exit 1
fi

if [[ -z "${POSTGRES_USER}" ]]; then
  echo 'POSTGRES_USER env-var missing'
  exit 1
fi

if [[ -z "${POSTGRES_PASSWORD}" ]]; then
  echo 'POSTGRES_PASSWORD env-var missing'
  exit 1
fi

if [[ -z "${ECR_ACCOUNT_ID}" ]]; then
  echo 'ECR_ACCOUNT_ID env-var missing'
  exit 1
fi

if [[ -z "${GIT_COMMIT}" ]]; then
  echo 'GIT_COMMIT env-var missing'
  exit 1
fi

ECR_REGISTRY="${ECR_ACCOUNT_ID}.dkr.ecr.${AWS_REGION:-us-east-1}.amazonaws.com"
ECR_IMAGE="${ECR_REGISTRY}/songwhip-api:${GIT_COMMIT}"

echo 'Logging in to ECR'
aws ecr get-login-password --region "${AWS_REGION:-us-east-1}" | docker login --username AWS --password-stdin "${ECR_REGISTRY}"

echo 'Pulling image'
docker pull "${ECR_IMAGE}"

docker run \
  --network host \
  -e PORT=NOT_REQUIRED \
  -e SONGWHIP_LOOKUP_URL=NOT_REQUIRED \
  -e POSTGRES_PORT=5432 \
  -e POSTGRES_DB=songwhip_api \
  -e "POSTGRES_HOST=${POSTGRES_HOST}" \
  -e "POSTGRES_USER=${POSTGRES_USER}" \
  -e "POSTGRES_PASSWORD=${POSTGRES_PASSWORD}" \
  -e "POSTGRES_SSL=true" \
  "${ECR_IMAGE}" \
  ./migrations/scripts/rollbackDataMigration.sh \
  "${MIGRATION_NAME}"
