Sha256: 0c51d459cca737eae1d9a7c55ee42b60628026de351d2ead519c196014fc36a6

Contents?: true

Size: 1.27 KB

Versions: 3

Compression:

Stored size: 1.27 KB

Contents

module Cadet
  module BatchInserter
    class Session < Cadet::Session
      include_package "org.neo4j.graphdb"
      include_package "org.neo4j.unsafe.batchinsert"
      include_package "org.neo4j.index.impl.lucene"
      include_package "org.neo4j.helpers.collection"

      def initialize(db)
        @db = db
        @index_provider = Cadet::CadetIndex::IndexProvider.new(db)
      end

      def close
        @index_provider.shutdown
        super
      end

      def self.open(location)
        new BatchInserters.inserter(location)
      end

      def transaction
        yield
      end

      def constraint(label, property)
        index = @index_provider.nodeIndex label, {"type" => "exact"}
      end

      def find_node(label, property, value)
        index = @index_provider.nodeIndex label, {"type" => "exact"}
        result = IteratorUtil.firstOrNull(index.get(property, value))
        if result
          return Node.new(result, @db)
        else
          return nil
        end
      end

      def create_node(label, prop, value)
        node = @db.createNode props, DynamicLabel.label(label)
        n = Node.new node, @db

        index = @index_provider.nodeIndex label, {"type" => "exact"}
        index.add(n.underlying, prop, value)
        n
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
cadet-0.0.4-java lib/cadet/batch_inserter/batch_inserter.rb
cadet-0.0.3-java lib/cadet/batch_inserter/batch_inserter.rb
cadet-0.0.2-java lib/cadet/batch_inserter/batch_inserter.rb