gotime-cassandra_object 4.0.2 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Gemfile CHANGED
@@ -1,7 +1,4 @@
1
1
  source "http://rubygems.org"
2
2
  gemspec
3
3
 
4
- group :test do
5
- gem 'cassandra', require: 'cassandra/1.0'
6
- gem 'cassandra-cql'
7
- end
4
+ gem 'rake'
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'gotime-cassandra_object'
5
- s.version = '4.0.2'
5
+ s.version = '4.1.0'
6
6
  s.description = 'Cassandra ActiveModel'
7
7
  s.summary = 'Cassandra ActiveModel'
8
8
  s.authors = ["Michael Koziarski", "gotime"]
@@ -18,7 +18,6 @@ Gem::Specification.new do |s|
18
18
  s.require_paths = ['lib']
19
19
 
20
20
  s.add_runtime_dependency('activemodel', '>= 3.0')
21
- s.add_runtime_dependency('cassandra', '>= 0.14.0')
22
21
  s.add_runtime_dependency('cassandra-cql')
23
22
  s.add_runtime_dependency('thrift_client', '~> 0.8.0')
24
23
 
@@ -29,7 +29,6 @@ module CassandraObject
29
29
  extend ActiveSupport::DescendantsTracker
30
30
 
31
31
  include Connection
32
- include Consistency
33
32
  include Identity
34
33
  include Inspect
35
34
  include FinderMethods
@@ -3,27 +3,31 @@ module CassandraObject
3
3
  extend ActiveSupport::Concern
4
4
 
5
5
  module ClassMethods
6
- def find_each
7
- connection.each(column_family, count: 500) do |k, v|
8
- yield instantiate(k, v)
6
+ def find_each(options = {})
7
+ find_in_batches(options) do |records|
8
+ records.each { |record| yield record }
9
9
  end
10
10
  end
11
11
 
12
12
  def find_in_batches(options = {})
13
13
  batch_size = options.delete(:batch_size) || 1000
14
+ start_key = nil
14
15
 
15
- batch = []
16
+ statement = "select * from #{column_family} limit #{batch_size + 1}"
17
+ records = instantiate_from_cql statement
16
18
 
17
- find_each do |record|
18
- batch << record
19
- if batch.size == batch_size
20
- yield(batch)
21
- batch = []
19
+ while records.any?
20
+ if records.size > batch_size
21
+ next_record = records.pop
22
+ else
23
+ next_record = nil
22
24
  end
23
- end
24
25
 
25
- if batch.size > 0
26
- yield batch
26
+ yield records
27
+ break if next_record.nil?
28
+
29
+ statement = "SELECT * FROM #{column_family} WHERE KEY >= ? LIMIT #{batch_size + 1}"
30
+ records = instantiate_from_cql statement, next_record.id
27
31
  end
28
32
  end
29
33
  end
@@ -33,12 +33,8 @@ module CassandraObject
33
33
  self.connection_config = spec.reverse_merge(DEFAULT_OPTIONS)
34
34
  end
35
35
 
36
- def connection
37
- @@connection ||= Cassandra.new(connection_config[:keyspace], connection_config[:servers], connection_config[:thrift].symbolize_keys)
38
- end
39
-
40
36
  def cql
41
- @@cql ||= CassandraCQL::Database.new(connection_config[:servers], keyspace: connection_config[:keyspace], connection_config[:thrift].symbolize_keys)
37
+ @@cql ||= CassandraCQL::Database.new(connection_config[:servers], {keyspace: connection_config[:keyspace]}, connection_config[:thrift].symbolize_keys)
42
38
  end
43
39
 
44
40
  def execute_cql(cql_string, *bind_vars)
@@ -9,7 +9,6 @@ module CassandraObject
9
9
  autoload :Connection
10
10
  autoload :AttributeMethods
11
11
  autoload :BelongsTo
12
- autoload :Consistency
13
12
  autoload :Persistence
14
13
  autoload :Callbacks
15
14
  autoload :Validations
@@ -9,23 +9,22 @@ class CassandraObject::ConnectionTest < CassandraObject::TestCase
9
9
  end
10
10
 
11
11
  test 'establish_connection' do
12
- # TestObject.establish_connection(
13
- # keyspace: 'place_directory_development',
14
- # servers: '192.168.0.100:9160',
15
- # thrift: {'timeout' => 10}
16
- # )
12
+ TestObject.establish_connection(
13
+ keyspace: 'place_directory_development',
14
+ servers: '192.168.0.100:9160',
15
+ thrift: {'timeout' => 10}
16
+ )
17
17
  #
18
- # assert_equal 'place_directory_development', TestObject.connection.keyspace
19
- # assert_equal ["192.168.0.100:9160"], TestObject.connection.servers
20
- # assert_equal 10, TestObject.connection.thrift_client_options[:timeout]
18
+ assert_equal 'place_directory_development', TestObject.connection_config[:keyspace]
19
+ assert_equal 10, TestObject.connection_config[:thrift]['timeout']
21
20
  end
22
21
 
23
22
  test 'establish_connection defaults' do
24
- # TestObject.establish_connection(
25
- # keyspace: 'place_directory_development'
26
- # )
23
+ TestObject.establish_connection(
24
+ keyspace: 'place_directory_development'
25
+ )
27
26
  #
28
27
  # assert_equal 'place_directory_development', TestObject.connection.keyspace
29
- # assert_equal ["127.0.0.1:9160"], TestObject.connection.servers
28
+ assert_equal "127.0.0.1:9160", TestObject.connection_config[:servers]
30
29
  end
31
30
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gotime-cassandra_object
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.2
4
+ version: 4.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -28,22 +28,6 @@ dependencies:
28
28
  - - ! '>='
29
29
  - !ruby/object:Gem::Version
30
30
  version: '3.0'
31
- - !ruby/object:Gem::Dependency
32
- name: cassandra
33
- requirement: !ruby/object:Gem::Requirement
34
- none: false
35
- requirements:
36
- - - ! '>='
37
- - !ruby/object:Gem::Version
38
- version: 0.14.0
39
- type: :runtime
40
- prerelease: false
41
- version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
- requirements:
44
- - - ! '>='
45
- - !ruby/object:Gem::Version
46
- version: 0.14.0
47
31
  - !ruby/object:Gem::Dependency
48
32
  name: cassandra-cql
49
33
  requirement: !ruby/object:Gem::Requirement
@@ -121,7 +105,6 @@ files:
121
105
  - lib/cassandra_object/belongs_to/reflection.rb
122
106
  - lib/cassandra_object/callbacks.rb
123
107
  - lib/cassandra_object/connection.rb
124
- - lib/cassandra_object/consistency.rb
125
108
  - lib/cassandra_object/errors.rb
126
109
  - lib/cassandra_object/finder_methods.rb
127
110
  - lib/cassandra_object/identity.rb
@@ -163,7 +146,6 @@ files:
163
146
  - test/unit/belongs_to_test.rb
164
147
  - test/unit/callbacks_test.rb
165
148
  - test/unit/connection_test.rb
166
- - test/unit/consistency_test.rb
167
149
  - test/unit/finder_methods_test.rb
168
150
  - test/unit/identity_test.rb
169
151
  - test/unit/inspect_test.rb
@@ -1,31 +0,0 @@
1
- module CassandraObject
2
- module Consistency
3
- extend ActiveSupport::Concern
4
-
5
- included do
6
- cattr_accessor :consistency_levels
7
- self.consistency_levels = [:one, :quorum, :all]
8
-
9
- class_attribute :write_consistency
10
- class_attribute :read_consistency
11
- self.write_consistency = :quorum
12
- self.read_consistency = :quorum
13
- end
14
-
15
- module ClassMethods
16
- THRIFT_LEVELS = {
17
- one: Cassandra::Consistency::ONE,
18
- quorum: Cassandra::Consistency::QUORUM,
19
- all: Cassandra::Consistency::ALL
20
- }
21
-
22
- def thrift_read_consistency
23
- THRIFT_LEVELS[read_consistency] || (raise "Invalid consistency level #{read_consistency}")
24
- end
25
-
26
- def thrift_write_consistency
27
- THRIFT_LEVELS[write_consistency] || (raise "Invalid consistency level #{write_consistency}")
28
- end
29
- end
30
- end
31
- end
@@ -1,20 +0,0 @@
1
- require 'test_helper'
2
-
3
- class CassandraObject::ConsistencyTest < CassandraObject::TestCase
4
- class TestModel < CassandraObject::Base
5
- end
6
-
7
- test 'consistency_levels' do
8
- assert_equal [:one, :quorum, :all].to_set, TestModel.consistency_levels.to_set
9
- end
10
-
11
- test 'thrift_write_consistency' do
12
- TestModel.write_consistency = :all
13
- assert_equal Cassandra::Consistency::ALL, TestModel.thrift_write_consistency
14
- end
15
-
16
- test 'thrift_read_consistency' do
17
- TestModel.read_consistency = :all
18
- assert_equal Cassandra::Consistency::ALL, TestModel.thrift_read_consistency
19
- end
20
- end