Sha256: 92f825ff9a43fa2546ea5cac1bbbedd6a5e307f0816275fa7e2f998f09a4e191

Contents?: true

Size: 1.07 KB

Versions: 3

Compression:

Stored size: 1.07 KB

Contents

module CassandraObject
  module Tasks
    class Keyspace
      def exists?(name)
        connection.keyspaces.include? name.to_s
      end

      def create(name, options = {})
        keyspace = Cassandra::Keyspace.new
        keyspace.name           = name.to_s
        keyspace.replication_factor = options[:replication_factor] || 1
        keyspace.strategy_class = options[:strategy_class] || 'org.apache.cassandra.locator.SimpleStrategy'
        keyspace.cf_defs        = options[:cf_defs] || []

        connection.add_keyspace keyspace
      end

      def drop(name)
        connection.drop_keyspace name.to_s
      end

      def set(name)
        connection.keyspace = name.to_s
      end

      def get
        connection.keyspace
      end

      def clear
        return puts 'Cannot clear system keyspace' if connection.keyspace == 'system'

        connection.clear_keyspace!
      end

      private
        def connection
          @connection ||= begin
            Cassandra.new('system', CassandraObject::Base.connection.servers)
          end
        end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
gotime-cassandra_object-3.0.5 lib/cassandra_object/tasks/keyspace.rb
gotime-cassandra_object-3.0.4 lib/cassandra_object/tasks/keyspace.rb
gotime-cassandra_object-3.0.3 lib/cassandra_object/tasks/keyspace.rb