#!/usr/bin/env bash
set -euo pipefail

REGION="${1:-}"
SERVICE="${2:-}"
ACTION="${3:-}"
DOCKER="/usr/bin/docker"

case "$REGION" in
  rn|sp|ba) ;;
  *) echo "Região inválida" >&2; exit 20 ;;
esac
case "$SERVICE" in
  car|foot) ;;
  *) echo "Serviço inválido" >&2; exit 21 ;;
esac
case "$ACTION" in
  start|stop|restart) ;;
  *) echo "Ação inválida" >&2; exit 22 ;;
esac

case "${REGION}:${SERVICE}" in
  rn:car)  CONTAINER="chip7tech-osrm-rn" ;;
  rn:foot) CONTAINER="chip7tech-osrm-foot-rn" ;;
  sp:car)  CONTAINER="centri-osrm-sp-car" ;;
  sp:foot) CONTAINER="centri-osrm-sp-foot" ;;
  ba:car)  CONTAINER="centri-osrm-ba-car" ;;
  ba:foot) CONTAINER="centri-osrm-ba-foot" ;;
  *) echo "Mapeamento não permitido" >&2; exit 23 ;;
esac

if ! "$DOCKER" inspect "$CONTAINER" >/dev/null 2>&1; then
  echo "Container não encontrado: $CONTAINER" >&2
  exit 24
fi

case "$ACTION" in
  start)
    "$DOCKER" start "$CONTAINER" >/dev/null
    ;;
  stop)
    "$DOCKER" stop -t 15 "$CONTAINER" >/dev/null
    ;;
  restart)
    "$DOCKER" restart -t 15 "$CONTAINER" >/dev/null
    ;;
esac

printf '%s %s %s OK\n' "$REGION" "$SERVICE" "$ACTION"
