Class: Activity::ResourceList::ResourceRetriever

Inherits:
Object
  • Object
show all
Defined in:
app/services/activity/resource_list.rb

Overview

Service object: resource retriever.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(party:, query: nil, page: nil, per_page: nil) ⇒ ResourceRetriever

Returns a new instance of ResourceRetriever.



64
65
66
67
68
69
70
71
72
# File 'app/services/activity/resource_list.rb', line 64

def initialize(party:, query: nil, page: nil, per_page: nil)
  @party = party
  @query = query
  @page = page.to_i
  @page = 1 if @page < 1
  @per_page = (per_page || 20).to_i
  @per_page = 20 if @per_page < 1
  @total_count = nil
end

Instance Attribute Details

#pageObject (readonly)

Returns the value of attribute page.



62
63
64
# File 'app/services/activity/resource_list.rb', line 62

def page
  @page
end

#partyObject (readonly)

Returns the value of attribute party.



62
63
64
# File 'app/services/activity/resource_list.rb', line 62

def party
  @party
end

#per_pageObject (readonly)

Returns the value of attribute per_page.



62
63
64
# File 'app/services/activity/resource_list.rb', line 62

def per_page
  @per_page
end

#queryObject (readonly)

Returns the value of attribute query.



62
63
64
# File 'app/services/activity/resource_list.rb', line 62

def query
  @query
end

Class Method Details

.build(resource_type, party:, query: nil, page: nil, per_page: nil) ⇒ Object



74
75
76
77
# File 'app/services/activity/resource_list.rb', line 74

def self.build(resource_type, party:, query: nil, page: nil, per_page: nil)
  retriever_class = "Activity::ResourceList::#{resource_type.to_s.classify}Retriever".constantize
  retriever_class.new(party: party, query: query, page: page, per_page: per_page)
end

Instance Method Details

#filter_results(_record_class, records) ⇒ Object



87
88
89
90
91
92
93
# File 'app/services/activity/resource_list.rb', line 87

def filter_results(_record_class, records)
  # Store the total count before applying pagination
  @total_count = records.count
  records.order(created_at: :desc)
         .limit(per_page)
         .offset((page - 1) * per_page)
end

#resourcesObject



79
80
81
# File 'app/services/activity/resource_list.rb', line 79

def resources
  raise 'Not Implemented'
end

#total_countObject



83
84
85
# File 'app/services/activity/resource_list.rb', line 83

def total_count
  @total_count || 0
end