#!/bin/bash

borgForgetApp()
{
    local idx="$1"
    local app_name="$2"

    if resticLocationAppendOnly "$idx"; then
        isNotice "$(resticLocationName "$idx") is append-only — skipping forget for $app_name"
        return 0
    fi

    local keep_last keep_daily keep_weekly keep_monthly keep_yearly
    keep_last=$(resticRetentionFor "$idx" KEEP_LAST)
    keep_daily=$(resticRetentionFor "$idx" KEEP_DAILY)
    keep_weekly=$(resticRetentionFor "$idx" KEEP_WEEKLY)
    keep_monthly=$(resticRetentionFor "$idx" KEEP_MONTHLY)
    keep_yearly=$(resticRetentionFor "$idx" KEEP_YEARLY)

    borgEnvExport "$idx" || return 1

    local host_tag="${CFG_INSTALL_NAME:-libreportal}"
    local args=(prune --glob-archives "${app_name}-${host_tag}-*")
    [[ -n "$keep_last"    ]] && args+=(--keep-last    "$keep_last")
    [[ -n "$keep_daily"   ]] && args+=(--keep-daily   "$keep_daily")
    [[ -n "$keep_weekly"  ]] && args+=(--keep-weekly  "$keep_weekly")
    [[ -n "$keep_monthly" ]] && args+=(--keep-monthly "$keep_monthly")
    [[ -n "$keep_yearly"  ]] && args+=(--keep-yearly  "$keep_yearly")

    isNotice "Applying retention for $app_name on $(resticLocationName "$idx")"
    runBackupOp borg "${args[@]}"
    local rc=$?

    if [[ "$CFG_BACKUP_PRUNE_AFTER_FORGET" == "true" && $rc -eq 0 ]]; then
        runBackupOp borg compact
    fi

    borgEnvUnset
    return $rc
}

borgForgetSystem()
{
    local idx="$1"

    if resticLocationAppendOnly "$idx"; then
        isNotice "$(resticLocationName "$idx") is append-only — skipping forget for system config"
        return 0
    fi

    local keep_last keep_daily keep_weekly keep_monthly keep_yearly
    keep_last=$(resticRetentionFor "$idx" KEEP_LAST)
    keep_daily=$(resticRetentionFor "$idx" KEEP_DAILY)
    keep_weekly=$(resticRetentionFor "$idx" KEEP_WEEKLY)
    keep_monthly=$(resticRetentionFor "$idx" KEEP_MONTHLY)
    keep_yearly=$(resticRetentionFor "$idx" KEEP_YEARLY)

    borgEnvExport "$idx" || return 1

    local host_tag="${CFG_INSTALL_NAME:-libreportal}"
    local args=(prune --glob-archives "system-${host_tag}-*")
    [[ -n "$keep_last"    ]] && args+=(--keep-last    "$keep_last")
    [[ -n "$keep_daily"   ]] && args+=(--keep-daily   "$keep_daily")
    [[ -n "$keep_weekly"  ]] && args+=(--keep-weekly  "$keep_weekly")
    [[ -n "$keep_monthly" ]] && args+=(--keep-monthly "$keep_monthly")
    [[ -n "$keep_yearly"  ]] && args+=(--keep-yearly  "$keep_yearly")

    isNotice "Applying retention for system config on $(resticLocationName "$idx")"
    runBackupOp borg "${args[@]}"
    local rc=$?

    if [[ "$CFG_BACKUP_PRUNE_AFTER_FORGET" == "true" && $rc -eq 0 ]]; then
        runBackupOp borg compact
    fi

    borgEnvUnset
    return $rc
}
