From be7c8bee06512d7c0b00989e4d54d925beac2b24 Mon Sep 17 00:00:00 2001 From: Doge Date: Tue, 7 Nov 2023 08:23:19 +0300 Subject: [PATCH] fix(Database): balance sufficiency checks not working Closes https://github.com/cooldogepm/BedrockEconomy/issues/114 --- src/cooldogedev/BedrockEconomy/database/mysql/TransferQuery.php | 2 +- src/cooldogedev/BedrockEconomy/database/mysql/UpdateQuery.php | 2 +- .../BedrockEconomy/database/sqlite/TransferQuery.php | 2 +- src/cooldogedev/BedrockEconomy/database/sqlite/UpdateQuery.php | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/cooldogedev/BedrockEconomy/database/mysql/TransferQuery.php b/src/cooldogedev/BedrockEconomy/database/mysql/TransferQuery.php index 0cc8252..999bf7b 100644 --- a/src/cooldogedev/BedrockEconomy/database/mysql/TransferQuery.php +++ b/src/cooldogedev/BedrockEconomy/database/mysql/TransferQuery.php @@ -89,7 +89,7 @@ public function onRun(mysqli $connection): void } // subtract the money from the source account - $sourceUpdateQuery = $connection->prepare("UPDATE " . $this->table . " SET amount = amount - ?, decimals = ? WHERE xuid = ? OR username = ? AND amount >= ? AND decimals >= ?"); + $sourceUpdateQuery = $connection->prepare("UPDATE " . $this->table . " SET amount = amount - ?, decimals = ? WHERE (xuid = ? OR username = ?) AND amount >= ? AND decimals >= ?"); $sourceUpdateQuery->bind_param("iissii", $this->amount, $this->decimals, $this->xuid, $this->username, $this->amount, $this->decimals); $sourceUpdateQuery->execute(); diff --git a/src/cooldogedev/BedrockEconomy/database/mysql/UpdateQuery.php b/src/cooldogedev/BedrockEconomy/database/mysql/UpdateQuery.php index b590dd6..dfcddcb 100644 --- a/src/cooldogedev/BedrockEconomy/database/mysql/UpdateQuery.php +++ b/src/cooldogedev/BedrockEconomy/database/mysql/UpdateQuery.php @@ -73,7 +73,7 @@ public function onRun(mysqli $connection): void $updateQuery = match ($this->mode) { UpdateMode::ADD => "UPDATE " . $this->table . " SET amount = amount + ?, decimals = decimals + ? WHERE xuid = ? OR username = ?", - UpdateMode::SUBTRACT => "UPDATE " . $this->table . " SET amount = amount - ?, decimals = decimals - ? WHERE xuid = ? OR username = ? AND amount >= ? AND decimals >= ?", + UpdateMode::SUBTRACT => "UPDATE " . $this->table . " SET amount = amount - ?, decimals = decimals - ? WHERE (xuid = ? OR username = ?) AND amount >= ? AND decimals >= ?", UpdateMode::SET => "UPDATE " . $this->table . " SET amount = ?, decimals = ? WHERE xuid = ? OR username = ?", default => throw new InvalidArgumentException("Invalid mode " . $this->mode) diff --git a/src/cooldogedev/BedrockEconomy/database/sqlite/TransferQuery.php b/src/cooldogedev/BedrockEconomy/database/sqlite/TransferQuery.php index 12adc00..cbfbdfa 100644 --- a/src/cooldogedev/BedrockEconomy/database/sqlite/TransferQuery.php +++ b/src/cooldogedev/BedrockEconomy/database/sqlite/TransferQuery.php @@ -87,7 +87,7 @@ public function onRun(SQLite3 $connection): void } // subtract the money from the source account - $sourceUpdateQuery = $connection->prepare("UPDATE " . $this->table . " SET amount = amount - ?, decimals = decimals - ? WHERE xuid = ? OR username = ? AND amount >= ? AND decimals >= ?"); + $sourceUpdateQuery = $connection->prepare("UPDATE " . $this->table . " SET amount = amount - ?, decimals = decimals - ? WHERE (xuid = ? OR username = ?) AND amount >= ? AND decimals >= ?"); $sourceUpdateQuery->bindValue(1, $this->amount, SQLITE3_INTEGER); $sourceUpdateQuery->bindValue(2, $this->decimals, SQLITE3_INTEGER); $sourceUpdateQuery->bindValue(3, $this->xuid); diff --git a/src/cooldogedev/BedrockEconomy/database/sqlite/UpdateQuery.php b/src/cooldogedev/BedrockEconomy/database/sqlite/UpdateQuery.php index 9a9c399..5f7ba8b 100644 --- a/src/cooldogedev/BedrockEconomy/database/sqlite/UpdateQuery.php +++ b/src/cooldogedev/BedrockEconomy/database/sqlite/UpdateQuery.php @@ -70,7 +70,7 @@ public function onRun(SQLite3 $connection): void $updateQuery = match ($this->mode) { UpdateMode::ADD => "UPDATE " . $this->table . " SET amount = amount + ?, decimals = decimals + ? WHERE xuid = ? OR username = ?", - UpdateMode::SUBTRACT => "UPDATE " . $this->table . " SET amount = amount - ?, decimals = decimals - ? WHERE xuid = ? OR username = ? AND amount >= ? AND decimals >= ?", + UpdateMode::SUBTRACT => "UPDATE " . $this->table . " SET amount = amount - ?, decimals = decimals - ? WHERE (xuid = ? OR username = ?) AND amount >= ? AND decimals >= ?", UpdateMode::SET => "UPDATE " . $this->table . " SET amount = ?, decimals = ? WHERE xuid = ? OR username = ?", default => throw new InvalidArgumentException("Invalid mode " . $this->mode)