Class: Noiseless::ResponseFactory

Inherits:
Object
  • Object
show all
Defined in:
lib/noiseless/response_factory.rb

Class Method Summary collapse

Class Method Details

.create(raw_response, model_class: nil, response_type: nil, query_hash: nil) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/noiseless/response_factory.rb', line 5

def self.create(raw_response, model_class: nil, response_type: nil, query_hash: nil)
  # Auto-detect response type based on model class and preferences
  response_type ||= detect_response_type(model_class)

  response = case response_type
             when :records
               Response::Records.new(raw_response, model_class)
             else # :results or unknown
               Response::Results.new(raw_response, model_class)
             end

  # Include pagination information if query hash is provided
  response.include_pagination_info(query_hash) if query_hash

  response
end

.detect_response_type(model_class) ⇒ Object



22
23
24
25
26
27
28
29
30
# File 'lib/noiseless/response_factory.rb', line 22

def self.detect_response_type(model_class)
  # If model_class responds to ActiveRecord-like methods, default to :records
  if model_class.respond_to?(:where) &&
     model_class.respond_to?(:find)
    :records
  else
    :results
  end
end