Class: Nazrin::DataAccessor
- Inherits:
-
Object
- Object
- Nazrin::DataAccessor
show all
- Defined in:
- lib/nazrin/data_accessor.rb,
lib/nazrin/data_accessor/struct.rb,
lib/nazrin/data_accessor/mongoid.rb,
lib/nazrin/data_accessor/active_record.rb
Defined Under Namespace
Classes: ActiveRecord, Mongoid, NoAccessorError, Struct
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(model, options) ⇒ DataAccessor
Returns a new instance of DataAccessor.
57
58
59
60
|
# File 'lib/nazrin/data_accessor.rb', line 57
def initialize(model, options)
@model = model
@options = options
end
|
Instance Attribute Details
#model ⇒ Object
Returns the value of attribute model.
54
55
56
|
# File 'lib/nazrin/data_accessor.rb', line 54
def model
@model
end
|
#options ⇒ Object
Returns the value of attribute options.
55
56
57
|
# File 'lib/nazrin/data_accessor.rb', line 55
def options
@options
end
|
Class Method Details
.accessor_for(clazz) ⇒ Object
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
# File 'lib/nazrin/data_accessor.rb', line 29
def accessor_for(clazz)
return nil if clazz.name.nil? || clazz.name.empty?
if clazz.respond_to?(:nazrin_searchable_config) && clazz.nazrin_searchable_config.domain_name
require 'nazrin/data_accessor/struct'
return Nazrin::DataAccessor::Struct[clazz.nazrin_searchable_config]
elsif defined?(::ActiveRecord::Base) && clazz.ancestors.include?(::ActiveRecord::Base)
require 'nazrin/data_accessor/active_record'
return Nazrin::DataAccessor::ActiveRecord
elsif defined?(::Mongoid::Document) && clazz.ancestors.include?(::Mongoid::Document)
require 'nazrin/data_accessor/mongoid'
return Nazrin::DataAccessor::Mongoid
end
nil
end
|
.accessors ⇒ Object
49
50
51
|
# File 'lib/nazrin/data_accessor.rb', line 49
def accessors
@accessor ||= {}
end
|
.for(clazz) ⇒ Object
8
9
10
11
12
|
# File 'lib/nazrin/data_accessor.rb', line 8
def for(clazz)
accessor = registered_accessor_for(clazz) || register_accessor(clazz)
return accessor if accessor
raise NoAccessorError, "No accessor for #{clazz.name}"
end
|
.register(accessor, clazz) ⇒ Object
45
46
47
|
# File 'lib/nazrin/data_accessor.rb', line 45
def register(accessor, clazz)
accessors[clazz.name.to_sym] = accessor
end
|
.register_accessor(clazz) ⇒ Object
19
20
21
22
23
24
25
26
27
|
# File 'lib/nazrin/data_accessor.rb', line 19
def register_accessor(clazz)
clazz.ancestors.each do |ancestor_class|
if accessor = accessor_for(ancestor_class)
register(accessor, clazz)
return accessor
end
end
nil
end
|
.registered_accessor_for(clazz) ⇒ Object
14
15
16
17
|
# File 'lib/nazrin/data_accessor.rb', line 14
def registered_accessor_for(clazz)
return nil if clazz.name.nil? || clazz.name.empty?
accessors[clazz.name.to_sym]
end
|
Instance Method Details
#data_from_response ⇒ Object
91
92
93
|
# File 'lib/nazrin/data_accessor.rb', line 91
def data_from_response
raise NotImplementedError
end
|
#load_all ⇒ Object
87
88
89
|
# File 'lib/nazrin/data_accessor.rb', line 87
def load_all
raise NotImplementedError
end
|
#results(client) ⇒ Object
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
# File 'lib/nazrin/data_accessor.rb', line 62
def results(client)
res = client.search
collection = load_all(data_from_response(res))
start = client.parameters[:start]
size = client.parameters[:size]
if size && start
total_count = res.data.hits.found
records = Nazrin::PaginationGenerator.generate(
collection,
current_page: current_page(start, size),
per_page: size,
total_count: total_count,
last_page: last_page(size, total_count))
else
records = collection
end
Result.new(
records,
res.facets
)
end
|