Sha256: 213f1aa69cbf993c105e3410f9b11a86287a9dcc2b84b694df899c6d97935caf

Contents?: true

Size: 1.22 KB

Versions: 4

Compression:

Stored size: 1.22 KB

Contents

module Neo4j
  module ActiveNode
    module DependentCallbacks
      extend ActiveSupport::Concern

      def dependent_delete_callback(association, ids)
        association_query_proxy(association.name).where(id: ids).delete_all
      end

      def dependent_delete_orphans_callback(association, ids)
        unique_query = as(:self).unique_nodes(association, :self, :n, :other_rel, ids)
        unique_query.query.optional_match('(n)-[r]-()').delete(:n, :r).exec if unique_query
      end

      def dependent_destroy_callback(association, ids)
        unique_query = association_query_proxy(association.name).where(id: ids)
        unique_query.each_for_destruction(self, &:destroy) if unique_query
      end

      def dependent_destroy_orphans_callback(association, ids)
        unique_query = as(:self).unique_nodes(association, :self, :n, :other_rel, ids)
        unique_query.each_for_destruction(self, &:destroy) if unique_query
      end

      def callbacks_from_active_rel(active_rel, direction, other_node)
        rel = active_rel_corresponding_rel(active_rel, direction, other_node.class).try(:last)
        public_send("dependent_#{rel.dependent}_callback", rel, [other_node.id]) if rel && rel.dependent
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
activegraph-10.0.0.pre.alpha.11 lib/neo4j/active_node/dependent_callbacks.rb
activegraph-10.0.0.pre.alpha.10 lib/neo4j/active_node/dependent_callbacks.rb
activegraph-10.0.0.pre.alpha.9 lib/neo4j/active_node/dependent_callbacks.rb
activegraph-10.0.0.pre.alpha.8 lib/neo4j/active_node/dependent_callbacks.rb