#!/usr/bin/env bash
# JSONL-Rotation fuer DSGVO Tier-3 (KAR-228 Mitigation #1).
# Loescht /root/.claude/projects/-/*.jsonl Files aelter als 30 Tage.
# Append-Log nach /root/aria/logs/jsonl-rotate.log.
set -euo pipefail

TARGET_DIR="/root/.claude/projects/-"
KEEP_DAYS=30
LOG_FILE="/root/aria/logs/jsonl-rotate.log"
mkdir -p "$(dirname "$LOG_FILE")"

NOW="$(date -Iseconds)"

# Count + list candidates BEFORE delete (dry-run-style accounting)
CANDIDATES="$(find "$TARGET_DIR" -maxdepth 2 -name '*.jsonl' -type f -mtime "+$KEEP_DAYS" 2>/dev/null | wc -l)"
echo "[$NOW] candidates older than ${KEEP_DAYS}d: $CANDIDATES" >> "$LOG_FILE"

if [ "$CANDIDATES" -gt 0 ]; then
  TOTAL_BYTES="$(find "$TARGET_DIR" -maxdepth 2 -name '*.jsonl' -type f -mtime "+$KEEP_DAYS" -printf '%s\n' 2>/dev/null | awk '{sum+=$1} END {print sum+0}')"
  echo "[$NOW] freeing ~${TOTAL_BYTES} bytes" >> "$LOG_FILE"
  ARCHIVE_DIR="/root/.claude/projects/-/.archive-$(date +%Y%m%d)"
  mkdir -p "$ARCHIVE_DIR"
  find "$TARGET_DIR" -maxdepth 2 -name '*.jsonl' -type f -mtime "+$KEEP_DAYS" -exec mv {} "$ARCHIVE_DIR/" \;
  if [ -n "$(ls -A "$ARCHIVE_DIR" 2>/dev/null)" ]; then
    tar -czf "${ARCHIVE_DIR}.tar.gz" -C "$(dirname "$ARCHIVE_DIR")" "$(basename "$ARCHIVE_DIR")"
    rm -rf "$ARCHIVE_DIR"
    echo "[$NOW] archived to ${ARCHIVE_DIR}.tar.gz" >> "$LOG_FILE"
  fi
fi

echo "[$NOW] done" >> "$LOG_FILE"
