#!/usr/bin/bash

IFS=$'\n'

units=(
  "mywrapper.service"
)

print () {
    N=$(eval printf "%s" '${#'"${1}"'[@]}')
    for ((a=0;a<N;a++))
    do
        bruh=$(printf "%s" "$(eval printf "%s" '${'"${1}"'[a]}')")
        printf "{%s} " "$(printf "%s" "${bruh}" | xargs)"
    done
}

for ((n=0;n<${#units[@]};n++))
do
  #echo "unit: ${units[n]}"
  # https://www.freedesktop.org/software/systemd/man/latest/systemctl.html#Exit%20status
  systemctl status "${units[n]}" >/dev/null 2>&1
  err=$?
  if [[ $err -eq 4 ]]
  then
    msg+=("$(printf "%s" "WARNING; job ${units[n]} does not exist!")")
    continue
  fi

  # if errors occur, we usually flush the logs, so this check would fire
  #loglines=$(journalctl -u "${units[n]}" --since "1 day ago" | wc -l)
  #if [ "$loglines" -lt "10" ]
  #then
  #  msg+=("$(printf "%s" "WARNING; no log for job ${units[n]}!")")
  #fi

  err=$(journalctl -u "${units[n]}" --since "1 day ago" \
    | grep -Ei "((dump|backup) failed|access denied|broken table|ERROR 2005 \(HY000\)|can't perform queries)")
  
  if [[ "${err}" ]]
  then
    msg+=("$(printf "%s" "WARNING; errors in backup log for job ${units[n]} found!")")
  fi
done

if [[ "${msg[*]}" ]]
then
  print msg
  printf "\n"
  exit 1
else
  printf "%s \n" "OK"
  exit 0
fi
