#!/usr/bin/env bash

log_container_verbose() {
  if [[ $IMMICH_LOG_LEVEL == verbose ]]; then
    echo "$1" > /proc/1/fd/2
  fi
}

if [[ ( $IMMICH_WORKERS_INCLUDE != '' && $IMMICH_WORKERS_INCLUDE != *api* ) || $IMMICH_WORKERS_EXCLUDE == *api* ]]; then
  echo "API worker excluded, skipping"
  exit 0
fi

IMMICH_HOST="${IMMICH_HOST:-localhost}"
IMMICH_PORT="${IMMICH_PORT:-2283}"

result=$(curl -fsS -m 2 http://"$IMMICH_HOST":"$IMMICH_PORT"/api/server/ping)
result_exit=$?

if [ $result_exit != 0 ]; then
  echo "Fail: exit code is $result_exit"
  log_container_verbose "Healthcheck failed: exit code $result_exit"
  exit 1
fi

if [ "$result" != '{"res":"pong"}' ]; then
  echo "Fail: didn't reply with pong"
  log_container_verbose "Healthcheck failed: didn't reply with pong"
  exit 1
fi
