From f6eab834fc6e87179dc27cc14c36d786c6bef1d1 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Sat, 4 Jun 2022 11:39:23 +0200 Subject: [PATCH 1/3] Fetch servers with product to reduce SQL-Queries --- app/Models/User.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/app/Models/User.php b/app/Models/User.php index 3767cf4e..53a5eaa7 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -233,14 +233,18 @@ class User extends Authenticatable implements MustVerifyEmail */ public function creditUsage() { - $usage = 0; + $servers = Server::query() + ->where('user_id', '=', $this->id) + ->with('product') + ->get(); - foreach ($this->Servers as $server) { + $usage = 0; + foreach ($servers as $server) { $usage += $server->product->price; } return number_format($usage, 2, '.', ''); - } + } /** * @return array|string|string[] From 204629539f5d0988e4fc44ed36fba6a838f5ab10 Mon Sep 17 00:00:00 2001 From: Tobiletsmc Date: Sun, 5 Jun 2022 12:22:26 +0200 Subject: [PATCH 2/3] Clean code and fetch servers with product in unSuspend method --- app/Models/User.php | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/app/Models/User.php b/app/Models/User.php index 53a5eaa7..38b9c103 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -179,7 +179,7 @@ class User extends Authenticatable implements MustVerifyEmail */ public function suspend() { - foreach ($this->servers as $server) { + foreach ($this->servers() as $server) { $server->suspend(); } @@ -195,7 +195,7 @@ class User extends Authenticatable implements MustVerifyEmail */ public function unSuspend() { - foreach ($this->servers as $server) { + foreach ($this->getServersWithProduct() as $server) { if ($this->credits >= $server->product->getHourlyPrice()) { $server->unSuspend(); } @@ -232,20 +232,21 @@ class User extends Authenticatable implements MustVerifyEmail * @return string */ public function creditUsage() - { - $servers = Server::query() - ->where('user_id', '=', $this->id) - ->with('product') - ->get(); - + { $usage = 0; - foreach ($servers as $server) { + foreach ($this->getServersWithProduct() as $server) { $usage += $server->product->price; } return number_format($usage, 2, '.', ''); } + private function getServersWithProduct() { + return $this->servers() + ->with('product') + ->get(); + } + /** * @return array|string|string[] */ From 7ff3540ad87f3da78c0968d0befdd17fa7aa0100 Mon Sep 17 00:00:00 2001 From: Tobiletsmc Date: Sun, 5 Jun 2022 12:49:53 +0200 Subject: [PATCH 3/3] Undo change in suspend Method --- app/Models/User.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Models/User.php b/app/Models/User.php index 38b9c103..a8242c5f 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -179,7 +179,7 @@ class User extends Authenticatable implements MustVerifyEmail */ public function suspend() { - foreach ($this->servers() as $server) { + foreach ($this->servers as $server) { $server->suspend(); }