Class: Lexster::SearchSession
- Inherits:
-
Object
- Object
- Lexster::SearchSession
- Defined in:
- lib/lexster/search_session.rb
Instance Method Summary collapse
- #hits ⇒ Object
- #ids ⇒ Object
-
#initialize(response, *models) ⇒ SearchSession
constructor
A new instance of SearchSession.
- #results ⇒ Object
Constructor Details
#initialize(response, *models) ⇒ SearchSession
Returns a new instance of SearchSession.
3 4 5 6 |
# File 'lib/lexster/search_session.rb', line 3 def initialize(response, *models) @response = response || [] @models = models end |
Instance Method Details
#hits ⇒ Object
8 9 10 |
# File 'lib/lexster/search_session.rb', line 8 def hits @response.map { |x| Neography::Node.new(x) } end |
#ids ⇒ Object
12 13 14 |
# File 'lib/lexster/search_session.rb', line 12 def ids @response.collect { |x| x['data']['ar_id'] } end |
#results ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/lexster/search_session.rb', line 16 def results models_by_name = @models.inject({}) { |all, curr| all[curr.name] = curr; all } ids_by_klass = @response.inject({}) do |all, curr| klass_name = curr['data']['ar_type'] (all[models_by_name[klass_name]] ||= []) << curr['data']['ar_id'] all end ids_by_klass.map { |klass, ids| klass.where(id: ids) }.flatten end |