vaultLoop: use MAX(running_balance) per user instead of SUM(amount)

This commit is contained in:
Keith Solomon
2026-08-03 22:17:11 -05:00
parent 214891d957
commit a9e443eeb2
+13 -5
View File
@@ -200,14 +200,22 @@ function fetchVaultRecords($user = null) {
* @return int The total balance of the given user (or all users if no user is given). * @return int The total balance of the given user (or all users if no user is given).
*/ */
function vaultLoop ($name=null) { function vaultLoop ($name=null) {
$vault = fetchVaultRecords($name); $pdo = getDatabaseConnection();
$balance = 0;
foreach ($vault as $entry) { if ($name === null) {
$balance += $entry['amount']; $stmt = $pdo->query(
'SELECT COALESCE(SUM(max_balance), 0) FROM '
. '(SELECT MAX(running_balance) AS max_balance FROM vault GROUP BY user)'
);
return (int)$stmt->fetchColumn();
} }
return $balance; $stmt = $pdo->prepare('SELECT MAX(running_balance) FROM vault WHERE user = :user');
$stmt->bindValue(':user', $name);
$stmt->execute();
return (int)$stmt->fetchColumn();
} }
/** /**