Sha256: e1fd9ed445fda74978ff346bae40eeb4139d3caa6d5126ed083e7582dc636621

Contents?: true

Size: 1.23 KB

Versions: 1

Compression:

Stored size: 1.23 KB

Contents

module Neo4j::Shared
  class DeclaredProperty
    # None of these methods interact with the database. They only keep track of property settings in models.
    # It could (should?) handle the actual indexing/constraining, but that's TBD.
    module Index
      def index_or_constraint?
        index?(:exact) || constraint?(:unique)
      end

      def index?(type = :exact)
        options.key?(:index) && options[:index] == type
      end

      def constraint?(type = :unique)
        options.key?(:constraint) && options[:constraint] == type
      end

      def index!(type = :exact)
        fail Neo4j::InvalidPropertyOptionsError, "Unable to set index on constrainted property #{name} (constraints get indexes automatically)" if constraint?(:unique)
        options[:index] = type
      end

      def constraint!(type = :unique)
        fail Neo4j::InvalidPropertyOptionsError, "Unable to set constraint on indexed property #{name} (constraints get indexes automatically)" if index?(:exact)
        options[:constraint] = type
      end

      def unindex!(type = :exact)
        options.delete(:index) if index?(type)
      end

      def unconstraint!(type = :unique)
        options.delete(:constraint) if constraint?(type)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
neo4j-7.0.6 lib/neo4j/shared/declared_property/index.rb