From 5ea912137b6e7f6764b313e9ad48d1c042c575cd Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sun, 19 Feb 2023 16:55:19 +0100 Subject: [PATCH] app/Models/Card.php: in getBySettings() move settings stuff to its own function settingsQuery() --- app/Models/Card.php | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/app/Models/Card.php b/app/Models/Card.php index 5b3028d..1c4adc1 100644 --- a/app/Models/Card.php +++ b/app/Models/Card.php @@ -9,6 +9,7 @@ use Kirschbaum\PowerJoins\PowerJoins; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Support\Str; @@ -79,6 +80,21 @@ class Card extends Model */ public static function getBySettings(GameSettings $settings, ?int $max = null) { + $query = self::settingsQuery($settings) + ->inRandomOrder(); + + if ($max !== null) { + $query->limit($max); + } + + return $query->get() + ->makeHidden(['character', 'class', 'deleted_at']); + } + + protected static function settingsQuery(GameSettings $settings): Builder + { + $query = self::query(); + // Map type of setting to database column. $type_map = [ 'characters' => 'character_id', @@ -87,9 +103,6 @@ class Card extends Model 'roles' => 'role' ]; - $query = self::query() - ->inRandomOrder(); - // Run through all settings and apply filter. foreach ($settings->all() as $type => $values) { @@ -100,11 +113,6 @@ class Card extends Model }); } - if ($max !== null) { - $query->limit($max); - } - - return $query->get() - ->makeHidden(['character', 'class', 'deleted_at']); + return $query; } }