Class: TFSGraph::Repository::Neo4jRepository

Inherits:
TFSGraph::Repository show all
Defined in:
lib/tfs_graph/repository/neo4j_repository.rb

Constant Summary

Constants inherited from TFSGraph::Repository

NotFound

Instance Attribute Summary

Attributes inherited from TFSGraph::Repository

#type

Instance Method Summary collapse

Methods inherited from TFSGraph::Repository

#build, #create, #exists?, #find, #initialize, #inspect, #related?, #save

Methods included from Extensions

#base_class_name

Constructor Details

This class inherits a constructor from TFSGraph::Repository

Instance Method Details

#delete(obj) ⇒ Object



27
28
29
30
# File 'lib/tfs_graph/repository/neo4j_repository.rb', line 27

def delete(obj)
  obj.db_object.del
  super
end

#drop_allObject



32
33
34
35
# File 'lib/tfs_graph/repository/neo4j_repository.rb', line 32

def drop_all
  flush
  session.query("MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r")
end

#find_by_neo_id(id) ⇒ Object



15
16
17
# File 'lib/tfs_graph/repository/neo4j_repository.rb', line 15

def find_by_neo_id(id)
  Neo4j::Node.load(id)
end

#find_native(id) ⇒ Object

Raises:



7
8
9
10
11
12
13
# File 'lib/tfs_graph/repository/neo4j_repository.rb', line 7

def find_native(id)
  node = Neo4j::Label.query(type.base_class_name.downcase.to_sym, conditions: {id: id}).to_a.first
  node ||= find_by_neo_id(id)

  raise NotFound, id unless node
  node
end

#flushObject



23
24
25
# File 'lib/tfs_graph/repository/neo4j_repository.rb', line 23

def flush
  @root = nil
end

#get_nodes(entity, direction, relation, type) ⇒ Object



49
50
51
52
53
54
55
56
57
# File 'lib/tfs_graph/repository/neo4j_repository.rb', line 49

def get_nodes(entity, direction, relation, type)
  begin
    entity.nodes(dir: direction.to_sym, type: relation.to_sym).map do |node|
      type.repository.rebuild node
    end
  rescue Neo4j::Server::CypherResponse::ResponseError => e
    []
  end
end

#rebuild(db_object) ⇒ Object



59
60
61
62
63
64
# File 'lib/tfs_graph/repository/neo4j_repository.rb', line 59

def rebuild(db_object)
  attributes = normalize db_object.props

  obj = build attributes
  obj.persist get_id(db_object), db_object
end

#rebuild_from_query(attrs, id) ⇒ Object



66
67
68
69
# File 'lib/tfs_graph/repository/neo4j_repository.rb', line 66

def rebuild_from_query(attrs, id)
  obj = build normalize(attrs)
  obj.persist id, nil
end

#relate(relationship, parent, child) ⇒ Object



45
46
47
# File 'lib/tfs_graph/repository/neo4j_repository.rb', line 45

def relate(relationship, parent, child)
  Neo4j::Relationship.create relationship, parent, child unless related?(parent, child, relationship)
end

#rootObject



37
38
39
40
41
42
43
# File 'lib/tfs_graph/repository/neo4j_repository.rb', line 37

def root
  @root ||= begin
    node = Neo4j::Label.find_all_nodes(:root).first
    node = Neo4j::Node.create({name: "Root node"}, :root) if node.nil?
    node
  end
end

#sessionObject



19
20
21
# File 'lib/tfs_graph/repository/neo4j_repository.rb', line 19

def session
  Neo4j::Session.current
end