Sha256: e6294b5d8be18800fdb7d1cf14291b3a63482c45a83c204a519a22100b919b0f

Contents?: true

Size: 1.42 KB

Versions: 4

Compression:

Stored size: 1.42 KB

Contents

module Neo4j
  module Core

    # A mixin which adds indexing behaviour to your own Ruby class
    # You are expected to implement the method `wrapped_entity` returning the underlying Neo4j Node or Relationship
    module Index

      # Adds an index on the given property
      # Notice that you normally don't have to do that since you simply can declare
      # that the property and index should be updated automatically by using the class method #index.
      #
      # The index operation will take place immediately unlike when using the Neo4j::Core::Index::ClassMethods#index
      # method which instead will guarantee that the neo4j database and the lucene database will be consistent.
      # It uses a two phase commit when the transaction is about to be committed.
      #
      # @see Neo4j::Core::Index::ClassMethods#add_index
      #
      def add_index(field, value=self[field])
        converted_value = Neo4j::TypeConverters.convert(value, field, self.class)
        self.class.add_index(wrapped_entity, field.to_s, converted_value)
      end

      # Removes an index on the given property.
      # Just like #add_index this is normally not needed since you instead can declare it with the
      # #index class method instead.
      #
      # @see Neo4j::Core::Index::ClassMethods#rm_index
      #
      def rm_index(field, value=self[field])
        self.class.rm_index(wrapped_entity, field.to_s, value)
      end

    end
  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
neo4j-core-0.0.3-java lib/neo4j-core/index/index.rb
neo4j-core-0.0.2-java lib/neo4j-core/index/index.rb
neo4j-core-0.0.1-java lib/neo4j-core/index/index.rb
neo4j-core-2.0.0.alpha.1-java lib/neo4j-core/index/index.rb