#!/usr/bin/env bash set -euo pipefail # Find uploads past expiry (status=active AND now > expires_at), unpin & mark expired mapfile -t CIDS < <(sudo -u postgres psql ipfsapp -Atc \ "SELECT cid FROM uploads WHERE status='active' AND now() > expires_at") if ((${#CIDS[@]}==0)); then echo "$(date -Is) nothing to do" exit 0 fi for cid in "${CIDS[@]}"; do echo "$(date -Is) expiring $cid" ipfs pin rm "$cid" || true sudo -u postgres psql ipfsapp -c \ "UPDATE uploads SET status='expired' WHERE cid='${cid}'" >/dev/null done # light gc to free space (safe if nothing is fetched right now) ipfs repo gc --quiet || true echo "$(date -Is) done"