diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2022-03-26 00:26:50 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-26 00:26:50 +0100 |
commit | e3a220306181f9aeda41940bfb11e4350d113e77 (patch) | |
tree | 7945182e56f68d73a9730a6dfb881bd6c39540ac /app/controllers/api/v1/trends/tags_controller.rb | |
parent | f572a68a0cec49551948858dc0957bc7703e580d (diff) |
Add offset pagination to trends in REST API (#17872)
Diffstat (limited to 'app/controllers/api/v1/trends/tags_controller.rb')
-rw-r--r-- | app/controllers/api/v1/trends/tags_controller.rb | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/app/controllers/api/v1/trends/tags_controller.rb b/app/controllers/api/v1/trends/tags_controller.rb index 1334b72d2..d77857871 100644 --- a/app/controllers/api/v1/trends/tags_controller.rb +++ b/app/controllers/api/v1/trends/tags_controller.rb @@ -3,6 +3,10 @@ class Api::V1::Trends::TagsController < Api::BaseController before_action :set_tags + after_action :insert_pagination_headers + + DEFAULT_TAGS_LIMIT = 10 + def index render json: @tags, each_serializer: REST::TagSerializer end @@ -12,10 +16,30 @@ class Api::V1::Trends::TagsController < Api::BaseController def set_tags @tags = begin if Setting.trends - Trends.tags.query.allowed.limit(limit_param(10)) + Trends.tags.query.allowed.limit(limit_param(DEFAULT_TAGS_LIMIT)) else [] end end end + + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + + def pagination_params(core_params) + params.slice(:limit).permit(:limit).merge(core_params) + end + + def next_path + api_v1_trends_tags_url pagination_params(offset: offset_param + limit_param(DEFAULT_TAGS_LIMIT)) + end + + def prev_path + api_v1_trends_tags_url pagination_params(offset: offset_param - limit_param(DEFAULT_TAGS_LIMIT)) if offset_param > limit_param(DEFAULT_TAGS_LIMIT) + end + + def offset_param + params[:offset].to_i + end end |