Sha256: 213951466072382eb389b03f2d79ab143732de985748d764ed68e4fd285de091

Contents?: true

Size: 975 Bytes

Versions: 144

Compression:

Stored size: 975 Bytes

Contents

module CassandraObject
  module Identity
    class NaturalKeyFactory < AbstractKeyFactory
      class NaturalKey
        include Key

        attr_reader :value

        def initialize(value)
          @value = value
        end

        def to_s
          value
        end

        def to_param
          value
        end

        def ==(other)
          other.is_a?(NaturalKey) && other.value == value
        end

        def eql?(other)
          other == self
        end
      end

      attr_reader :attributes, :separator

      def initialize(options)
        @attributes = [*options[:attributes]]
        @separator  = options[:separator] || "-"
      end

      def next_key(object)
        NaturalKey.new(attributes.map { |a| object.attributes[a.to_s] }.join(separator))
      end

      def parse(paramized_key)
        NaturalKey.new(paramized_key)
      end

      def create(paramized_key)
        NaturalKey.new(paramized_key)
      end
    end
  end
end

Version data entries

144 entries across 144 versions & 3 rubygems

Version Path
sessionm-cassandra_object-4.0.32 lib/cassandra_object/identity/natural_key_factory.rb
sessionm-cassandra_object-4.0.31 lib/cassandra_object/identity/natural_key_factory.rb
sessionm-cassandra_object-4.0.30 lib/cassandra_object/identity/natural_key_factory.rb
sessionm-cassandra_object-4.0.29 lib/cassandra_object/identity/natural_key_factory.rb
sessionm-cassandra_object-4.0.28 lib/cassandra_object/identity/natural_key_factory.rb
sessionm-cassandra_object-4.0.27 lib/cassandra_object/identity/natural_key_factory.rb
sessionm-cassandra_object-4.0.26 lib/cassandra_object/identity/natural_key_factory.rb
sessionm-cassandra_object-4.0.25 lib/cassandra_object/identity/natural_key_factory.rb
sessionm-cassandra_object-4.0.24 lib/cassandra_object/identity/natural_key_factory.rb
sessionm-cassandra_object-4.0.23 lib/cassandra_object/identity/natural_key_factory.rb
sessionm-cassandra_object-4.0.22 lib/cassandra_object/identity/natural_key_factory.rb
sessionm-cassandra_object-4.0.21 lib/cassandra_object/identity/natural_key_factory.rb
sessionm-cassandra_object-4.0.20 lib/cassandra_object/identity/natural_key_factory.rb
sessionm-cassandra_object-2.7.5 lib/cassandra_object/identity/natural_key_factory.rb
sessionm-cassandra_object-2.7.4 lib/cassandra_object/identity/natural_key_factory.rb
sessionm-cassandra_object-4.0.18 lib/cassandra_object/identity/natural_key_factory.rb
sessionm-cassandra_object-4.0.17 lib/cassandra_object/identity/natural_key_factory.rb
sessionm-cassandra_object-4.0.16 lib/cassandra_object/identity/natural_key_factory.rb
sessionm-cassandra_object-4.0.15 lib/cassandra_object/identity/natural_key_factory.rb
sessionm-cassandra_object-4.0.14 lib/cassandra_object/identity/natural_key_factory.rb