Class: Api::V6::BaseController
- Inherits:
-
ActionController::API
- Object
- ActionController::API
- Api::V6::BaseController
- Includes:
- CustomPagy::ArrayExtra, ElasticApmContext, LogrageCustomLogger, Pagy::Backend, ResponseCacheConcern
- Defined in:
- app/controllers/api/v6/base_controller.rb
Direct Known Subclasses
Instance Method Summary collapse
- #identity_cache_memoization(&block) ⇒ Object
- #pagy_custom(collection, vars = {}) ⇒ Object
- #set_options(pagy = {}, meta_options = {}) ⇒ Object
Methods included from LogrageCustomLogger
Methods included from ResponseCacheConcern
Instance Method Details
#identity_cache_memoization(&block) ⇒ Object
22 23 24 |
# File 'app/controllers/api/v6/base_controller.rb', line 22 def identity_cache_memoization(&block) IdentityCache.cache.with_memoization(&block) end |
#pagy_custom(collection, vars = {}) ⇒ Object
28 29 30 31 32 33 34 35 |
# File 'app/controllers/api/v6/base_controller.rb', line 28 def pagy_custom(collection, vars = {}) page = params.fetch(:page, {}) page_size = page.fetch(:size, 10) page_number = page.fetch(:number, 1) pagy = Pagy.new(count: collection.count(:all), page: page_number, items: page_size, **vars) [pagy, collection.offset(pagy.offset).limit(pagy.items)] end |
#set_options(pagy = {}, meta_options = {}) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'app/controllers/api/v6/base_controller.rb', line 37 def (pagy = {}, = {}) = {} if pagy.present? [:meta] = { total: (pagy).fetch(:count), page: (pagy).fetch(:page), total_page: (pagy).fetch(:pages), default_page: 1, }.merge() [:links] = { self: (pagy).fetch(:page_url), first: (pagy).fetch(:first_url), next: (pagy).fetch(:next_url), prev: (pagy).fetch(:prev_url), last: (pagy).fetch(:last_url), } end [:include] = params.fetch(:include, '').split(',') || [] [:fields] = params.fetch(:fields, {}).to_unsafe_hash.map do |rel, fields| { rel => fields.split(',').map(&:to_sym) } end.reduce({}, :merge) || {} () end |