Class: Neo4j::Shared::QueryFactory

Inherits:
Object
  • Object
show all
Defined in:
lib/neo4j/shared/query_factory.rb

Overview

Acts as a bridge between the node and rel models and Neo4j::Core::Query. If the object is persisted, it returns a query matching; otherwise, it returns a query creating it. This class does not execute queries, so it keeps no record of what identifiers have been set or what has happened in previous factories.

Direct Known Subclasses

NodeQueryFactory, RelQueryFactory

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(graph_object, identifier) ⇒ QueryFactory

Returns a new instance of QueryFactory.



8
9
10
11
# File 'lib/neo4j/shared/query_factory.rb', line 8

def initialize(graph_object, identifier)
  @graph_object = graph_object
  @identifier = identifier.to_sym
end

Instance Attribute Details

#graph_objectObject (readonly)

Returns the value of attribute graph_object.



6
7
8
# File 'lib/neo4j/shared/query_factory.rb', line 6

def graph_object
  @graph_object
end

#identifierObject (readonly)

Returns the value of attribute identifier.



6
7
8
# File 'lib/neo4j/shared/query_factory.rb', line 6

def identifier
  @identifier
end

Class Method Details

.create(graph_object, identifier) ⇒ Object



13
14
15
# File 'lib/neo4j/shared/query_factory.rb', line 13

def self.create(graph_object, identifier)
  factory_for(graph_object).new(graph_object, identifier)
end

.factory_for(graph_obj) ⇒ Object



17
18
19
20
21
22
23
24
25
26
# File 'lib/neo4j/shared/query_factory.rb', line 17

def self.factory_for(graph_obj)
  case
  when graph_obj.respond_to?(:labels_for_create)
    NodeQueryFactory
  when graph_obj.respond_to?(:rel_type)
    RelQueryFactory
  else
    fail "Unable to find factory for #{graph_obj}"
  end
end

Instance Method Details

#base_queryObject



38
39
40
# File 'lib/neo4j/shared/query_factory.rb', line 38

def base_query
  @base_query || Neo4j::ActiveBase.new_query
end

#base_query=(query) ⇒ Object

Parameters:

  • query (Neo4j::Core::Query)

    An instance of Neo4j::Core::Query upon which methods will be chained.



33
34
35
36
# File 'lib/neo4j/shared/query_factory.rb', line 33

def base_query=(query)
  return if query.blank?
  @base_query = query
end

#queryObject



28
29
30
# File 'lib/neo4j/shared/query_factory.rb', line 28

def query
  graph_object.persisted? ? match_query : create_query
end