#!/usr/bin/env bash
# Executa a limpeza de retenção do OMRCheck uma vez por semana via cron.
# O diretório do projeto pode ser informado por DEPLOY_PATH; sem ele, o
# caminho é calculado a partir deste próprio script.
set -euo pipefail

APP_DIR="${DEPLOY_PATH:-$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)}"
PYTHON_BIN="${APP_DIR}/.venv/bin/python"
LOG_DIR="${APP_DIR}/logs"
LOG_FILE="${LOG_DIR}/limpeza_semanal.log"
LOCK_DIR="${APP_DIR}/runtime"
LOCK_FILE="${LOCK_DIR}/limpeza_semanal.lock"

if [[ ! -x "${PYTHON_BIN}" ]]; then
  echo "[ERRO] Python da virtualenv não encontrado: ${PYTHON_BIN}" >&2
  exit 1
fi 

mkdir -p "${LOG_DIR}" "${LOCK_DIR}"
cd "${APP_DIR}"

# Evita duas limpezas simultâneas caso uma execução anterior ainda esteja ativa.
exec 9>"${LOCK_FILE}"
if ! flock -n 9; then
  echo "[$(date '+%Y-%m-%d %H:%M:%S')] Limpeza já está em execução; ignorando." >> "${LOG_FILE}"
  exit 0
fi

{
  echo "[$(date '+%Y-%m-%d %H:%M:%S')] Início da limpeza semanal"
  "${PYTHON_BIN}" scripts/maintenance.py cleanup
  echo "[$(date '+%Y-%m-%d %H:%M:%S')] Limpeza semanal concluída"
} >> "${LOG_FILE}" 2>&1
