Class: TFSGraph::Repository::Neo4jRepository
Constant Summary
NotFound
Instance Attribute Summary
#type
Instance Method Summary
collapse
#build, #create, #exists?, #find, #initialize, #inspect, #related?, #save
Methods included from Extensions
#base_class_name
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_all ⇒ Object
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
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
|
#flush ⇒ Object
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
|
#root ⇒ Object
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
|
#session ⇒ Object
19
20
21
|
# File 'lib/tfs_graph/repository/neo4j_repository.rb', line 19
def session
Neo4j::Session.current
end
|