<?php
// API cache writer — runs every minute via Varaverk scheduler.
// Builds monitor + arrs payloads and writes them to /tmp/vv_cache/ so page
// loads can serve instantly from the file instead of making live HTTP calls.
//
// Called by api_cache_writer.sh (bash wrapper required by the scheduler).

$_base = dirname(__DIR__);
require_once $_base . '/include/monitor.php';
require_once $_base . '/include/vms.php';
require_once $_base . '/include/docker_folders.php';
require_once $_base . '/include/arrs.php';

$t = microtime(true);

// ── Monitor payload ───────────────────────────────────────────────────────────
// Call vv_api_data() once — result is static-cached for the rest of this process.
vv_api_data();

$monitor = [
    'system'          => vv_system_info(),
    'fallback'        => vv_fallback_state(),
    'fallback_active' => vv_fallback_active(),
    'partner'         => vv_partner_state(),
    'resources'       => vv_system_resources(),
    'cpu'             => vv_cpu_per_core(),
    'mem'             => vv_memory_breakdown(),
    'net'             => vv_network_stats(),
    'gpu'             => vv_gpu_stats(),
    'gpu_procs'       => vv_gpu_processes(),
    'containers'      => vv_docker_containers(),
    'stopped'         => vv_docker_stopped(),
    'transcode'       => vv_transcode_sessions(),
    'ups'             => vv_ups_stats(),
    'parity'          => vv_parity_status(),
    'storage'         => vv_storage_pools(),
    'array_disks'     => vv_array_disks(),
    'disk_io'         => vv_disk_io_rates(),
    'watchdog'        => vv_watchdog_summary(),
    'scripts'         => vv_scripts_status(),
    'rsync'           => vv_rsync_status(),
    'thresholds'      => vv_disk_thresholds(),
    'vms'             => vv_get_vms(),
    'docker_folders'  => vv_get_docker_folders(),
    'remote_hosts'    => vv_remote_hosts_stats(),
    '_api_status'     => vv_api_get_status(),
    'ts'              => time(),
];
vv_cache_write('monitor', $monitor);

// ── Arrs payload ──────────────────────────────────────────────────────────────
$arrs = vv_arrs_all();
vv_cache_write('arrs', $arrs);

$elapsed = round((microtime(true) - $t) * 1000);
echo "Cache written in {$elapsed}ms — monitor + arrs\n";
