Skip to content

Commit

Permalink
streamline making the query and params for the search
Browse files Browse the repository at this point in the history
  • Loading branch information
notbakaneko committed Sep 18, 2024
1 parent 50f0d75 commit 50135d9
Show file tree
Hide file tree
Showing 5 changed files with 8 additions and 30 deletions.
8 changes: 1 addition & 7 deletions app/Models/BeatmapDiscussion.php
Original file line number Diff line number Diff line change
Expand Up @@ -73,14 +73,8 @@ class BeatmapDiscussion extends Model
// FIXME: This and other static search functions should be extracted out.
public static function search($rawParams = [])
{
$pagination = static::pagination(cursor_from_params($rawParams) ?? $rawParams);
[$query, $params] = static::searchQueryAndParams(cursor_from_params($rawParams) ?? $rawParams);

$params = [
'limit' => $pagination['limit'],
'page' => $pagination['page'],
];

$query = static::limit($params['limit'])->offset($pagination['offset']);
$isModerator = $rawParams['is_moderator'] ?? false;

if (present($rawParams['user'] ?? null)) {
Expand Down
8 changes: 1 addition & 7 deletions app/Models/BeatmapDiscussionPost.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,8 @@ class BeatmapDiscussionPost extends Model implements Traits\ReportableInterface

public static function search($rawParams = [])
{
$pagination = static::pagination(cursor_from_params($rawParams) ?? $rawParams);
[$query, $params] = static::searchQueryAndParams(cursor_from_params($rawParams) ?? $rawParams);

$params = [
'limit' => $pagination['limit'],
'page' => $pagination['page'],
];

$query = static::limit($params['limit'])->offset($pagination['offset']);
$isModerator = $rawParams['is_moderator'] ?? false;

if (isset($rawParams['user'])) {
Expand Down
8 changes: 1 addition & 7 deletions app/Models/BeatmapDiscussionVote.php
Original file line number Diff line number Diff line change
Expand Up @@ -59,14 +59,8 @@ public static function recentlyGivenByUser($userId, $timeframeMonths = 3)

public static function search($rawParams = [])
{
$pagination = static::pagination(cursor_from_params($rawParams) ?? $rawParams);
[$query, $params] = static::searchQueryAndParams(cursor_from_params($rawParams) ?? $rawParams);

$params = [
'limit' => $pagination['limit'],
'page' => $pagination['page'],
];

$query = static::limit($params['limit'])->offset($pagination['offset']);
$isModerator = $rawParams['is_moderator'] ?? false;

if (isset($rawParams['user'])) {
Expand Down
8 changes: 1 addition & 7 deletions app/Models/BeatmapsetEvent.php
Original file line number Diff line number Diff line change
Expand Up @@ -85,14 +85,8 @@ public static function log($type, $user, $object, $extraData = [])

public static function search($rawParams = [])
{
$pagination = static::pagination($rawParams);
[$query, $params] = static::searchQueryAndParams($rawParams);

$params = [
'limit' => $pagination['limit'],
'page' => $pagination['page'],
];

$query = static::limit($params['limit'])->offset($pagination['offset']);
$searchByUser = present($rawParams['user'] ?? null);
$isModerator = $rawParams['is_moderator'] ?? false;

Expand Down
6 changes: 4 additions & 2 deletions app/Models/Model.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,15 +35,17 @@ public static function booted()
static::addGlobalScope(new MacroableModelScope());
}

public static function pagination($params)
protected static function searchQueryAndParams(array $params)
{
$limit = clamp(get_int($params['limit'] ?? null) ?? static::PER_PAGE, 5, 50);
$page = max(get_int($params['page'] ?? null), 1);

$offset = max_offset($page, $limit);
$page = 1 + $offset / $limit;

return compact('limit', 'page', 'offset');
$query = static::limit($limit)->offset($offset);

return [$query, compact('limit', 'page')];
}

public function getForeignKey()
Expand Down

0 comments on commit 50135d9

Please sign in to comment.