Sha256: 3786d52e31c29f793ebd68e8178bfcbbdaa0740aeb79d23e3daa99995c662e6f

Contents?: true

Size: 1.75 KB

Versions: 17

Compression:

Stored size: 1.75 KB

Contents

require 'active_graph/core/querable'
require 'active_graph/core/schema'

module ActiveGraph
  # To contain any base login for Node/Relationship which
  # is external to the main classes
  module Base
    include ActiveGraph::Transactions
    include ActiveGraph::Core::Querable
    extend ActiveGraph::Core::Schema

    at_exit do
      @driver&.close
    end

    class << self
      # private?
      def driver
        (@driver ||= establish_driver).tap do |driver|
          fail 'No driver defined!' if driver.nil?
        end
      end

      def on_establish_driver(&block)
        @establish_driver_block = block
      end

      def establish_driver
        @establish_driver_block.call if @establish_driver_block
      end

      def query(*args)
        transaction(implicit: true) do
          super(*args)
        end
      end

      # Should support setting driver via config options
      def driver=(driver)
        @driver&.close
        @driver = driver
      end

      def validating_transaction(&block)
        validate_model_schema!
        transaction(&block)
      end

      def new_query(options = {})
        validate_model_schema!
        ActiveGraph::Core::Query.new(options)
      end

      def magic_query(*args)
        if args.empty? || args.map(&:class) == [Hash]
          new_query(*args)
        else
          query(*args)
        end
      end

      def label_object(label_name)
        ActiveGraph::Core::Label.new(label_name)
      end

      def logger
        @logger ||= (ActiveGraph::Config[:logger] || ActiveSupport::Logger.new(STDOUT))
      end

      private

      def validate_model_schema!
        ActiveGraph::ModelSchema.validate_model_schema! unless ActiveGraph::Migrations.currently_running_migrations
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
activegraph-11.4.0 lib/active_graph/base.rb
activegraph-11.3.1 lib/active_graph/base.rb
activegraph-11.3.0 lib/active_graph/base.rb
activegraph-11.2.0 lib/active_graph/base.rb
activegraph-11.1.0 lib/active_graph/base.rb
activegraph-11.1.0.beta.1 lib/active_graph/base.rb
activegraph-11.1.0.alpha.4 lib/active_graph/base.rb
activegraph-11.1.0.alpha.3 lib/active_graph/base.rb
activegraph-11.1.0.alpha.2 lib/active_graph/base.rb
activegraph-11.1.0.alpha.1 lib/active_graph/base.rb
activegraph-11.0.2-java lib/active_graph/base.rb
activegraph-11.0.1-java lib/active_graph/base.rb
activegraph-11.0.0-java lib/active_graph/base.rb
activegraph-11.0.0.beta.4-java lib/active_graph/base.rb
activegraph-11.0.0.beta.3-java lib/active_graph/base.rb
activegraph-11.0.0.beta.2-java lib/active_graph/base.rb
activegraph-11.0.0.beta.1-java lib/active_graph/base.rb