#!/bin/bash

resticCheckLocation()
{
    local idx="$1"
    local read_data="$2"

    resticEnvExport "$idx" || return 1

    local args=(check)
    if [[ "$read_data" == "full" ]]; then
        args+=(--read-data)
    elif [[ -n "$read_data" ]]; then
        args+=(--read-data-subset "${read_data}%")
    fi

    isNotice "Checking $(resticLocationName "$idx")${read_data:+ (sample: ${read_data}%)}"
    runBackupOp restic "${args[@]}"
    local rc=$?
    resticEnvUnset
    if [[ $rc -eq 0 ]]; then
        isSuccessful "$(resticLocationName "$idx") integrity OK"
    else
        isError "$(resticLocationName "$idx") integrity FAILED"
    fi
    return $rc
}

resticCheckAllLocations()
{
    local read_data="$1"
    local idx
    local failed=0
    while IFS= read -r idx; do
        [[ -z "$idx" ]] && continue
        resticCheckLocation "$idx" "$read_data" || failed=$((failed + 1))
    done < <(resticEnabledLocations)
    return $failed
}

resticLocationStats()
{
    local idx="$1"
    resticEnvExport "$idx" || return 1
    runBackupOp restic stats --json --no-lock 2>/dev/null
    local rc=$?
    resticEnvUnset
    return $rc
}
