Module: A2::Paginated

Instance Method Summary collapse

Methods included from Filtered

#generate_json_filters, #generate_query_filters, #parse_filters, #query_filter?, #set_custom_opts!, #set_filter_optparse_options!, #with_filter_query

Instance Method Details

#generate_paginated_json_filtersObject



25
26
27
# File 'lib/a2/mixins/paginated.rb', line 25

def generate_paginated_json_filters
  generate_json_filters
end

#generate_paginated_query_stringObject



34
35
36
37
38
39
40
41
# File 'lib/a2/mixins/paginated.rb', line 34

def generate_paginated_query_string
  query = generate_query_filters
  query << "&pagination.page=#{@opt[:page]}" if @opt[:page]
  query << "&pagination.page=#{@opt[:per_page]}" if @opt[:per_page]
  query << "&sorting.field=#{@opt[:sort]}" if @opt[:sort]
  query << "&sorting.order=#{@opt[:order]}" if @opt[:order]
  query
end

#initialize(name, opts = {}) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/a2/mixins/paginated.rb', line 4

def initialize(name, opts = {})
  set_custom_opts!(opts)
  super(name, opts)
  @opt = {
    order: 'ASC'
  }
  options.on('-o', '--order ORDER', 'Return the results in ascending or descending order. Default is "ASC".') do |order|
    @opt[:order] = order
  end
  options.on('-p', '--page PAGE', Integer, 'Starting page for the results. Default is 0') do |page|
    @opt[:page] = page
  end
  options.on('-P', '--per-page PER_PAGE', Integer, 'The number of results on each page. Default is 100') do |per_page|
    @opt[:per_page] = per_page
  end
  options.on('-s', '--sort SORT', 'Sort the results on a specific field.') do |sort|
    @opt[:sort] = sort
  end
  set_filter_optparse_options!(options)
end

#with_paginated_filter_json {|json| ... } ⇒ Object

Yields:

  • (json)


29
30
31
32
# File 'lib/a2/mixins/paginated.rb', line 29

def with_paginated_filter_json(&block)
  json = generate_paginated_json_filters
  yield(json)
end

#with_paginated_filter_query {|query_string| ... } ⇒ Object

Yields:

  • (query_string)


43
44
45
46
# File 'lib/a2/mixins/paginated.rb', line 43

def with_paginated_filter_query(&block)
  query_string = generate_paginated_query_string
  yield(query_string)
end