Sha256: e59f0d5b55213cb5923ae62a69898038b06fc918c60682903c5e39352ffe91b2

Contents?: true

Size: 1.99 KB

Versions: 59

Compression:

Stored size: 1.99 KB

Contents

module Neo4j
  module Shared
    module Callbacks #:nodoc:
      extend ActiveSupport::Concern

      module ClassMethods
        include ActiveModel::Callbacks
      end

      included do
        include ActiveModel::Validations::Callbacks
        # after_find is triggered by the `find` method defined in lib/neo4j/active_node/id_property.rb
        define_model_callbacks :initialize, :find, only: :after
        define_model_callbacks :create_commit, :update_commit, :destroy_commit, only: :after
        define_model_callbacks :save, :create, :update, :destroy, :touch
      end

      def initialize(args = nil)
        run_callbacks(:initialize) { super }
      end

      def destroy #:nodoc:
        tx = Neo4j::ActiveBase.new_transaction
        tx.root.after_commit { run_callbacks(:destroy_commit) {} }
        run_callbacks(:destroy) { super }
      rescue
        @_deleted = false
        @attributes = @attributes.dup
        tx.mark_failed if tx
        raise
      ensure
        tx.close if tx
      end

      def touch #:nodoc:
        run_callbacks(:touch) { super }
      end

      # Allows you to perform a callback if a condition is not satisfied.
      # @param [Symbol] kind The callback type to execute unless the guard is true
      # @param [TrueClass,FalseClass] guard When this value is true, the block is yielded without executing callbacks.
      def conditional_callback(kind, guard)
        return yield if guard
        run_callbacks(kind) { yield }
      end

      private

      def create_or_update #:nodoc:
        run_callbacks(:save) { super }
      end

      def create_model #:nodoc:
        self.class.run_transaction do |tx|
          tx.root.after_commit { run_callbacks(:create_commit) {} }
          run_callbacks(:create) { super }
        end
      end

      def update_model(*) #:nodoc:
        self.class.run_transaction do |tx|
          tx.root.after_commit { run_callbacks(:update_commit) {} }
          run_callbacks(:update) { super }
        end
      end
    end
  end
end

Version data entries

59 entries across 59 versions & 2 rubygems

Version Path
neo4j-9.6.2 lib/neo4j/shared/callbacks.rb
activegraph-10.0.0.pre.alpha.11 lib/neo4j/shared/callbacks.rb
activegraph-10.0.0.pre.alpha.10 lib/neo4j/shared/callbacks.rb
activegraph-10.0.0.pre.alpha.9 lib/neo4j/shared/callbacks.rb
activegraph-10.0.0.pre.alpha.8 lib/neo4j/shared/callbacks.rb
activegraph-10.0.0.pre.alpha.7 lib/neo4j/shared/callbacks.rb
activegraph-10.0.0.pre.alpha.6 lib/neo4j/shared/callbacks.rb
neo4j-10.0.0.pre.alpha.5 lib/neo4j/shared/callbacks.rb
neo4j-10.0.0.pre.alpha.4 lib/neo4j/shared/callbacks.rb
neo4j-10.0.0.pre.alpha.3 lib/neo4j/shared/callbacks.rb
neo4j-10.0.0.pre.alpha.2 lib/neo4j/shared/callbacks.rb
neo4j-10.0.0.pre.alpha.1 lib/neo4j/shared/callbacks.rb
neo4j-9.6.1 lib/neo4j/shared/callbacks.rb
neo4j-9.6.0 lib/neo4j/shared/callbacks.rb
neo4j-9.5.3 lib/neo4j/shared/callbacks.rb
neo4j-9.5.2 lib/neo4j/shared/callbacks.rb
neo4j-9.5.0 lib/neo4j/shared/callbacks.rb
neo4j-9.4.0 lib/neo4j/shared/callbacks.rb
neo4j-9.3.0 lib/neo4j/shared/callbacks.rb
neo4j-9.2.4 lib/neo4j/shared/callbacks.rb