Class: LlmCostTracker::Pagination

Inherits:
Object
  • Object
show all
Defined in:
app/services/llm_cost_tracker/pagination.rb

Constant Summary collapse

DEFAULT_PER =
50
MAX_PER =
200
MIN_PAGE =
1

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(page:, per:) ⇒ Pagination

Returns a new instance of Pagination.



37
38
39
40
41
# File 'app/services/llm_cost_tracker/pagination.rb', line 37

def initialize(page:, per:)
  @page = page
  @per = per
  freeze
end

Instance Attribute Details

#pageObject (readonly)

Returns the value of attribute page.



9
10
11
# File 'app/services/llm_cost_tracker/pagination.rb', line 9

def page
  @page
end

#perObject (readonly)

Returns the value of attribute per.



9
10
11
# File 'app/services/llm_cost_tracker/pagination.rb', line 9

def per
  @per
end

Class Method Details

.call(params) ⇒ Object



11
12
13
14
15
16
17
# File 'app/services/llm_cost_tracker/pagination.rb', line 11

def self.call(params)
  params = normalize_params(params)
  new(
    page: integer_param(params, :page, default: MIN_PAGE, min: MIN_PAGE),
    per: integer_param(params, :per, default: DEFAULT_PER, min: 1, max: MAX_PER)
  )
end

Instance Method Details

#limitObject



43
44
45
# File 'app/services/llm_cost_tracker/pagination.rb', line 43

def limit
  per
end

#next_page?(total_count) ⇒ Boolean

Returns:

  • (Boolean)


55
56
57
# File 'app/services/llm_cost_tracker/pagination.rb', line 55

def next_page?(total_count)
  offset + per < total_count.to_i
end

#offsetObject



47
48
49
# File 'app/services/llm_cost_tracker/pagination.rb', line 47

def offset
  (page - 1) * per
end

#prev_page?Boolean

Returns:

  • (Boolean)


51
52
53
# File 'app/services/llm_cost_tracker/pagination.rb', line 51

def prev_page?
  page > MIN_PAGE
end