class TFSGraph::Repository::Neo4jRepository
Public Instance Methods
delete(obj)
click to toggle source
Calls superclass method
TFSGraph::Repository#delete
# File lib/tfs_graph/repository/neo4j_repository.rb, line 27 def delete(obj) obj.db_object.del super end
drop_all()
click to toggle source
# 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)
click to toggle source
# File lib/tfs_graph/repository/neo4j_repository.rb, line 15 def find_by_neo_id(id) Neo4j::Node.load(id) end
find_native(id)
click to toggle source
# 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()
click to toggle source
# File lib/tfs_graph/repository/neo4j_repository.rb, line 23 def flush @root = nil end
get_nodes(entity, direction, relation, type)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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()
click to toggle source
# 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()
click to toggle source
# File lib/tfs_graph/repository/neo4j_repository.rb, line 19 def session Neo4j::Session.current end
Private Instance Methods
get_id(object)
click to toggle source
# File lib/tfs_graph/repository/neo4j_repository.rb, line 91 def get_id(object) return 0 if object.nil? object.neo_id end
persist(object)
click to toggle source
create the DB object
# File lib/tfs_graph/repository/neo4j_repository.rb, line 76 def persist(object) begin Neo4j::Node.create(object.to_hash, object.base_class_name.downcase) rescue Neo4j::Server::CypherResponse::ResponseError => e # assume all errors come from constraint errors... probably a bad idea fetch_existing_record(object) end end
update(object)
click to toggle source
update the DB object
# File lib/tfs_graph/repository/neo4j_repository.rb, line 86 def update(object) object.db_object.update_props object.attributes object.db_object end