From a6a9909bdb3ae269a1acfdc568e4a11a3324ddf9 Mon Sep 17 00:00:00 2001 From: bakaneko Date: Fri, 8 Sep 2023 17:29:06 +0900 Subject: [PATCH 1/2] add difficulty name search --- app/Libraries/Search/BeatmapsetQueryParser.php | 3 +++ app/Libraries/Search/BeatmapsetSearch.php | 8 ++++++++ app/Libraries/Search/BeatmapsetSearchParams.php | 1 + app/Libraries/Search/BeatmapsetSearchRequestParams.php | 1 + 4 files changed, 13 insertions(+) diff --git a/app/Libraries/Search/BeatmapsetQueryParser.php b/app/Libraries/Search/BeatmapsetQueryParser.php index 7d9c7aeee15..38b3c26baa7 100644 --- a/app/Libraries/Search/BeatmapsetQueryParser.php +++ b/app/Libraries/Search/BeatmapsetQueryParser.php @@ -64,6 +64,9 @@ public static function parse(?string $query): array case 'creator': $option = static::makeTextOption($op, $m['value']); break; + case 'difficulty' : + $option = static::makeTextOption($op, $m['value']); + break; case 'artist': $option = static::makeTextOption($op, $m['value']); break; diff --git a/app/Libraries/Search/BeatmapsetSearch.php b/app/Libraries/Search/BeatmapsetSearch.php index 02823aa17db..f38e4d09500 100644 --- a/app/Libraries/Search/BeatmapsetSearch.php +++ b/app/Libraries/Search/BeatmapsetSearch.php @@ -78,6 +78,7 @@ public function getQuery() $this->addSpotlightsFilter($query); $nested = new BoolQuery(); + $this->addDifficultyFilter($nested); $this->addStatusFilter($query, $nested); $this->addManiaKeysFilter($nested); $this->addModeFilter($nested); @@ -166,6 +167,13 @@ private function addCreatorFilter(BoolQuery $query, BoolQuery $nested): void } } + private function addDifficultyFilter(BoolQuery $nested) + { + if ($this->params->difficulty !== null) { + $nested->must(QueryHelper::queryString($this->params->difficulty, ['beatmaps.version'], 'and')); + } + } + private function addExtraFilter($query) { foreach ($this->params->extra as $val) { diff --git a/app/Libraries/Search/BeatmapsetSearchParams.php b/app/Libraries/Search/BeatmapsetSearchParams.php index 46b6c84ab4a..60a86977dc5 100644 --- a/app/Libraries/Search/BeatmapsetSearchParams.php +++ b/app/Libraries/Search/BeatmapsetSearchParams.php @@ -21,6 +21,7 @@ class BeatmapsetSearchParams extends SearchParams public ?array $created = null; public ?string $creator = null; public ?array $cs = null; + public ?string $difficulty = null; public ?array $difficultyRating = null; public ?array $drain = null; public array $extra = []; diff --git a/app/Libraries/Search/BeatmapsetSearchRequestParams.php b/app/Libraries/Search/BeatmapsetSearchRequestParams.php index c0f8bbfb62e..9917440c9c6 100644 --- a/app/Libraries/Search/BeatmapsetSearchRequestParams.php +++ b/app/Libraries/Search/BeatmapsetSearchRequestParams.php @@ -218,6 +218,7 @@ private function parseQuery(): void 'created' => 'created', 'creator' => 'creator', 'cs' => 'cs', + 'difficulty' => 'difficulty', 'dr' => 'drain', 'featured_artist' => 'featuredArtist', 'keys' => 'keys', From e03729955e294d02bca348aeb92bdf10ac9503f6 Mon Sep 17 00:00:00 2001 From: bakaneko Date: Fri, 8 Sep 2023 17:52:59 +0900 Subject: [PATCH 2/2] how did that get there --- app/Libraries/Search/BeatmapsetQueryParser.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Libraries/Search/BeatmapsetQueryParser.php b/app/Libraries/Search/BeatmapsetQueryParser.php index 38b3c26baa7..122e6855beb 100644 --- a/app/Libraries/Search/BeatmapsetQueryParser.php +++ b/app/Libraries/Search/BeatmapsetQueryParser.php @@ -64,7 +64,7 @@ public static function parse(?string $query): array case 'creator': $option = static::makeTextOption($op, $m['value']); break; - case 'difficulty' : + case 'difficulty': $option = static::makeTextOption($op, $m['value']); break; case 'artist':