Class: Activity::ResourceList::ResourceRetriever

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

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.



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

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.



60
61
62
# File 'app/services/activity/resource_list.rb', line 60

def page
  @page
end

#partyObject (readonly)

Returns the value of attribute party.



60
61
62
# File 'app/services/activity/resource_list.rb', line 60

def party
  @party
end

#per_pageObject (readonly)

Returns the value of attribute per_page.



60
61
62
# File 'app/services/activity/resource_list.rb', line 60

def per_page
  @per_page
end

#queryObject (readonly)

Returns the value of attribute query.



60
61
62
# File 'app/services/activity/resource_list.rb', line 60

def query
  @query
end

Class Method Details

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



72
73
74
75
# File 'app/services/activity/resource_list.rb', line 72

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



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

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



77
78
79
# File 'app/services/activity/resource_list.rb', line 77

def resources
  raise 'Not Implemented'
end

#total_countObject



81
82
83
# File 'app/services/activity/resource_list.rb', line 81

def total_count
  @total_count || 0
end