#!/usr/bin/with-contenv bash
# shellcheck shell=bash

MIGRATIONS_DIR="/migrations"
MIGRATIONS_HISTORY="/config/.migrations"

echo "[migrations] started"

if [[ ! -d ${MIGRATIONS_DIR} ]]; then
    echo "[migrations] no migrations found"
    exit
fi

for MIGRATION in $(find ${MIGRATIONS_DIR}/* | sort -n); do
    NAME="$(basename "${MIGRATION}")"
    if [[ -f ${MIGRATIONS_HISTORY} ]] && grep -Fxq "${NAME}" ${MIGRATIONS_HISTORY}; then
        echo "[migrations] ${NAME}: skipped"
        continue
    fi
    echo "[migrations] ${NAME}: executing..."
    chmod +x "${MIGRATION}"
    # Execute migration script in a subshell to prevent it from modifying the current environment
    ("${MIGRATION}")
    EXIT_CODE=$?
    if [[ ${EXIT_CODE} -ne 0 ]]; then
        echo "[migrations] ${NAME}: failed with exit code ${EXIT_CODE}, contact support"
        exit "${EXIT_CODE}"
    fi
    echo "${NAME}" >>${MIGRATIONS_HISTORY}
    echo "[migrations] ${NAME}: succeeded"
done

echo "[migrations] done"
