Sha256: d135fe332dec5abc94488a7e62010859f93a2dfa34e2d8b1a737b08f12840081

Contents?: true

Size: 1.3 KB

Versions: 32

Compression:

Stored size: 1.3 KB

Contents

module CassandraObject
  module Consistency
    extend ActiveSupport::Concern

    included do
      class_attribute :write_consistency
      class_attribute :read_consistency
    end

    module ClassMethods
      THRIFT_LEVELS = {
        :one    => :one,
        :quorum => :quorum,
        :local_quorum => :local_quorum,
        :each_quorum => :each_quorum,
        :all    => :all
      }
      
      DEFAULT_OPTIONS = {
        :read_default => :quorum,
        :write_default => :quorum,
      }

      @@default_read_consistency = DEFAULT_OPTIONS[:read_default]
      @@default_write_consistency = DEFAULT_OPTIONS[:write_default]
      def set_default_consistencies(config)
        config = (config[:consistency] || {}).reverse_merge(DEFAULT_OPTIONS)
        @@default_read_consistency = config[:read_default].to_sym
        @@default_write_consistency = config[:write_default].to_sym
      end

      def thrift_read_consistency
        consistency = read_consistency || @@default_read_consistency
        THRIFT_LEVELS[consistency] || (raise "Invalid consistency level #{consistency}")
      end

      def thrift_write_consistency
        consistency = write_consistency || @@default_write_consistency
        THRIFT_LEVELS[consistency] || (raise "Invalid consistency level #{consistency}")
      end
    end
  end
end

Version data entries

32 entries across 32 versions & 1 rubygems

Version Path
sessionm-cassandra_object-4.0.32 lib/cassandra_object/consistency.rb
sessionm-cassandra_object-4.0.31 lib/cassandra_object/consistency.rb
sessionm-cassandra_object-4.0.30 lib/cassandra_object/consistency.rb
sessionm-cassandra_object-4.0.29 lib/cassandra_object/consistency.rb
sessionm-cassandra_object-4.0.28 lib/cassandra_object/consistency.rb
sessionm-cassandra_object-4.0.27 lib/cassandra_object/consistency.rb
sessionm-cassandra_object-4.0.26 lib/cassandra_object/consistency.rb
sessionm-cassandra_object-4.0.25 lib/cassandra_object/consistency.rb
sessionm-cassandra_object-4.0.24 lib/cassandra_object/consistency.rb
sessionm-cassandra_object-4.0.23 lib/cassandra_object/consistency.rb
sessionm-cassandra_object-4.0.22 lib/cassandra_object/consistency.rb
sessionm-cassandra_object-4.0.21 lib/cassandra_object/consistency.rb
sessionm-cassandra_object-4.0.20 lib/cassandra_object/consistency.rb
sessionm-cassandra_object-4.0.18 lib/cassandra_object/consistency.rb
sessionm-cassandra_object-4.0.17 lib/cassandra_object/consistency.rb
sessionm-cassandra_object-4.0.16 lib/cassandra_object/consistency.rb
sessionm-cassandra_object-4.0.15 lib/cassandra_object/consistency.rb
sessionm-cassandra_object-4.0.14 lib/cassandra_object/consistency.rb
sessionm-cassandra_object-4.0.13 lib/cassandra_object/consistency.rb
sessionm-cassandra_object-4.0.12 lib/cassandra_object/consistency.rb