lib/neo4j/active_rel/rel_wrapper.rb in neo4j-7.2.3 vs lib/neo4j/active_rel/rel_wrapper.rb in neo4j-8.0.0.alpha.1

- old
+ new

@@ -1,22 +1,30 @@ -class Neo4j::Relationship - module Wrapper - def wrapper - props.symbolize_keys! - begin - most_concrete_class = class_from_type - wrapped_rel = most_concrete_class.constantize.new - rescue NameError - return self - end +require 'neo4j/core/relationship' - wrapped_rel.init_on_load(self, self._start_node_id, self._end_node_id, self.rel_type) - wrapped_rel - end +wrapping_proc = proc do |relationship| + Neo4j::RelWrapping.wrapper(relationship) +end +Neo4j::Core::Relationship.wrapper_callback(wrapping_proc) - private +module Neo4j + module RelWrapping + class << self + def wrapper(rel) + rel.props.symbolize_keys! + begin + most_concrete_class = class_from_type(rel.rel_type) + most_concrete_class.constantize.new + rescue NameError => e + raise e unless e.message =~ /(uninitialized|wrong) constant/ - def class_from_type - Neo4j::ActiveRel::Types::WRAPPED_CLASSES[rel_type] || Neo4j::ActiveRel::Types::WRAPPED_CLASSES[rel_type] = rel_type.camelize + return rel + end.tap do |wrapped_rel| + wrapped_rel.init_on_load(rel, rel.start_node_id, rel.end_node_id, rel.type) + end + end + + def class_from_type(rel_type) + Neo4j::ActiveRel::Types::WRAPPED_CLASSES[rel_type] || Neo4j::ActiveRel::Types::WRAPPED_CLASSES[rel_type] = rel_type.to_s.camelize + end end end end