#!/usr/bin/env bash
# onx-account-disk-usage — Hesabın home dizini disk kullanımı (du -sb). MİNİMAL + ROBUST.
#
# Neden ayrı script: onx-du-account (breakdown + top-files + top-dirs) modern/karmaşık
# homelar'da `jq: invalid JSON --argjson` ile patlıyor (top-dirs jq'i boş dönünce final
# jq çöküyor) → göç/transfer hesapları 0 B dönüyordu. refreshDiskUsage yalnız TOTAL'a
# ihtiyaç duyar; bu sade script TEK bir du -sb yapar, kırılgan jq pipeline YOK.
#
# Input  (stdin JSON):  {"username":"onx_xxx"[, "home":"/home/users/onx_xxx"]}
# Output (stdout JSON): {"username":"...","home":"...","total_bytes":N}
# exit: 0=ok 1=bad input
# Deployed to: /usr/local/onoxsoft/bin/onx-account-disk-usage

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# shellcheck source=_lib/common.sh
source "${SCRIPT_DIR}/_lib/common.sh"

require_cmd du
require_cmd jq
require_cmd awk

onx_json_input

USERNAME=$(onx_json_field "username")
onx_validate_username "${USERNAME}"

HOME_DIR=$(onx_json_field "home")
if [[ -z "${HOME_DIR}" ]]; then
    HOME_DIR=$(onx_resolve_home "${USERNAME}" 2>/dev/null || echo "/home/${USERNAME}")
fi

# Güvenlik: home /home altında olmalı + basename == username (path traversal guard)
case "${HOME_DIR}" in
    /home/*) ;;
    *) onx_die 1 "home /home altında olmalı: ${HOME_DIR}" ;;
esac
if [[ "$(basename "${HOME_DIR}")" != "${USERNAME}" ]]; then
    onx_die 1 "home basename uyuşmazlığı: ${HOME_DIR}"
fi

# du -sb home (sudo→root ile çalışır; FS-quota'dan BAĞIMSIZ gerçek boyut). Home yoksa 0.
TOTAL=0
if [[ -d "${HOME_DIR}" ]]; then
    TOTAL=$(du -sb "${HOME_DIR}" 2>/dev/null | awk 'NR==1{print $1}')
fi
# --argjson'a YALNIZ geçerli tamsayı geçsin (jq invalid-json crash'i önle)
[[ "${TOTAL}" =~ ^[0-9]+$ ]] || TOTAL=0

jq -nc \
    --arg username "${USERNAME}" \
    --arg home "${HOME_DIR}" \
    --argjson total "${TOTAL}" \
    '{username:$username, home:$home, total_bytes:$total}'
