#!/usr/bin/env bash set -euo pipefail export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" LOG_DIR="/opt/minerops/logs" mkdir -p "$LOG_DIR" echo "============================================================" echo "MinerOps status retention dry-run" echo "Started: $(date -Is)" echo echo "Building hourly rollups..." docker exec -i minerops-postgres psql -U minerops -d minerops < /opt/minerops/sql/minerops-retention-hourly.sql echo echo "Building daily rollups..." docker exec -i minerops-postgres psql -U minerops -d minerops < /opt/minerops/sql/minerops-retention-daily.sql cat > /tmp/minerops-retention-log-dryrun.sql <<'SQL' INSERT INTO minerops_retention_runs ( mode, raw_status_retention_days, hourly_rollup_rows_before, hourly_rollup_rows_after, daily_rollup_rows_before, daily_rollup_rows_after, raw_status_rows_before, raw_status_rows_after, raw_status_rows_eligible_delete, raw_status_rows_deleted, started_at, finished_at, notes ) SELECT 'dry-run', 30, (SELECT COUNT(*) FROM miner_status_hourly_rollups), (SELECT COUNT(*) FROM miner_status_hourly_rollups), (SELECT COUNT(*) FROM miner_status_daily_rollups), (SELECT COUNT(*) FROM miner_status_daily_rollups), (SELECT COUNT(*) FROM miner_status_snapshots), (SELECT COUNT(*) FROM miner_status_snapshots), (SELECT COUNT(*) FROM miner_status_snapshots WHERE observed_at < now() - interval '30 days'), 0, now(), now(), 'Scheduled dry run: built or updated hourly and daily status rollups. No raw snapshots deleted.'; SELECT mode, raw_status_retention_days, raw_status_rows_before, raw_status_rows_eligible_delete, raw_status_rows_deleted, raw_status_rows_after, hourly_rollup_rows_after, daily_rollup_rows_after, started_at, finished_at, notes FROM minerops_retention_runs ORDER BY started_at DESC LIMIT 1; SQL echo echo "Logging dry-run retention pass..." docker exec -i minerops-postgres psql -U minerops -d minerops < /tmp/minerops-retention-log-dryrun.sql echo echo "Finished: $(date -Is)"