datastax_rails 1.0.14.2 → 1.0.14.10

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.
@@ -12,7 +12,7 @@ module DatastaxRails
12
12
  value ||= coder.default
13
13
  return unless value
14
14
 
15
- value = (value.kind_of?(String) || value.kind_of?(Array)) ? coder.decode(value) : value
15
+ value = coder.decode(value)
16
16
  coder.wrap(record, name, value)
17
17
  end
18
18
 
@@ -100,9 +100,9 @@ module DatastaxRails
100
100
  def encode_attributes(attributes, schema_version)
101
101
  encoded = {"schema_version" => schema_version.to_s}
102
102
  attributes.each do |column_name, value|
103
- if value.nil?
104
- encoded[column_name.to_s] = ""
105
- else
103
+ # if value.nil?
104
+ # encoded[column_name.to_s] = ""
105
+ # else
106
106
  encoded_value = attribute_definitions[column_name.to_sym].coder.encode(value)
107
107
  if(encoded_value.is_a?(Array))
108
108
  encoded_value.each_with_index do |chunk,i|
@@ -111,7 +111,7 @@ module DatastaxRails
111
111
  else
112
112
  encoded[column_name.to_s] = encoded_value
113
113
  end
114
- end
114
+ # end
115
115
  end
116
116
  encoded
117
117
  end
@@ -71,7 +71,7 @@ module DatastaxRails
71
71
  # end
72
72
  def limit(value)
73
73
  clone.tap do |r|
74
- r.per_page_value = value
74
+ r.per_page_value = value.to_i
75
75
  end
76
76
  end
77
77
  alias :per_page :limit
@@ -81,7 +81,7 @@ module DatastaxRails
81
81
  # Model.page(2)
82
82
  def page(value)
83
83
  clone.tap do |r|
84
- r.page_value = value
84
+ r.page_value = value.to_i
85
85
  end
86
86
  end
87
87
 
@@ -104,7 +104,7 @@ module DatastaxRails
104
104
  return self if attrs.blank?
105
105
 
106
106
  clone.tap do |r|
107
- r.group_values += args.flatten
107
+ r.group_values += attrs.flatten
108
108
  end
109
109
  end
110
110
 
@@ -86,7 +86,7 @@ module DatastaxRails
86
86
  result
87
87
  end
88
88
 
89
- VALID_FIND_OPTIONS = [:conditions, :limit, :offset, :order, :group, :page, :per_page]
89
+ VALID_FIND_OPTIONS = [:conditions, :limit, :select, :offset, :order, :group, :page, :per_page]
90
90
  def apply_finder_options(options) #:nodoc:
91
91
  relation = clone
92
92
  return relation unless options
@@ -95,12 +95,11 @@ module DatastaxRails
95
95
  finders = options.dup
96
96
  finders.delete_if { |key, value| value.nil? }
97
97
 
98
- ([:group, :order, :limit, :offset, :page, :per_page] & finders.keys).each do |finder|
98
+ ([:group, :order, :limit, :offset, :page, :per_page, :select] & finders.keys).each do |finder|
99
99
  relation = relation.send(finder, finders[finder])
100
100
  end
101
101
 
102
102
  relation = relation.where(finders[:conditions]) if options.has_key?(:conditions)
103
-
104
103
  relation
105
104
  end
106
105
  end
@@ -172,6 +172,9 @@ module DatastaxRails
172
172
  # end
173
173
  # end
174
174
  def to_xml(options = {}, &block)
175
+ options[:methods] ||= []
176
+ options[:methods] << :id
177
+ options[:methods].uniq!
175
178
  XmlSerializer.new(self, options).serialize(&block)
176
179
  end
177
180
  end
@@ -110,19 +110,19 @@ module DatastaxRails
110
110
  uri = URI.parse(solr_url)
111
111
  Net::HTTP.start(uri.host, uri.port) do |http|
112
112
  if force || solrconfig_digest != sm_digests['solrconfig']
113
- puts "Posting Solr Config file to '#{uri.path}/solrconfig.xml'"
113
+ puts "Posting Solr Config file to '#{solr_url}/solrconfig.xml'"
114
114
  http.post(uri.path+"/solrconfig.xml", solrconfig)
115
115
  sleep(5) if Rails.env.production?
116
116
  DatastaxRails::Cql::Update.new(SchemaMigration, model.column_family).columns(:solrconfig => solrconfig_digest).execute
117
117
  end
118
118
  if force || stopwords_digest != sm_digests['stopwords']
119
- puts "Posting Solr Stopwords file to '#{uri.path}/stopwords.txt'"
119
+ puts "Posting Solr Stopwords file to '#{solr_url}/stopwords.txt'"
120
120
  http.post(uri.path+"/stopwords.txt", stopwords)
121
121
  sleep(5) if Rails.env.production?
122
122
  DatastaxRails::Cql::Update.new(SchemaMigration, model.column_family).columns(:stopwords => stopwords_digest).execute
123
123
  end
124
124
  if force || schema_digest != sm_digests['digest']
125
- puts "Posting Solr Schema file to '#{uri.path}/schema.xml'"
125
+ puts "Posting Solr Schema file to '#{solr_url}/schema.xml'"
126
126
  http.post(uri.path+"/schema.xml", schema)
127
127
  sleep(5) if Rails.env.production?
128
128
  DatastaxRails::Cql::Update.new(SchemaMigration, model.column_family).columns(:digest => schema_digest).execute
@@ -5,11 +5,12 @@ module DatastaxRails
5
5
  FORMAT = '%Y-%m-%dT%H:%M:%SZ'
6
6
 
7
7
  def encode(value)
8
- raise ArgumentError.new("#{self} requires a Date") unless value.to_date
8
+ raise ArgumentError.new("#{self} requires a Date") unless value.kind_of?(Date) || value.kind_of?(Time)
9
9
  value.to_date.strftime(FORMAT)
10
10
  end
11
11
 
12
12
  def decode(str)
13
+ return str if str.kind_of?(Date)
13
14
  Date.parse(str) rescue nil
14
15
  end
15
16
  end
@@ -4,14 +4,14 @@ module DatastaxRails
4
4
  DEFAULTS = {:solr_type => 'float', :indexed => true, :stored => true, :multi_valued => false, :sortable => true, :tokenized => false, :fulltext => false}
5
5
  REGEX = /\A[-+]?(\d+(\.\d+)?|\.\d+)\Z/
6
6
  def encode(float)
7
- raise ArgumentError.new("#{self} requires a Float") unless float.kind_of?(Float)
8
- float.to_s
7
+ return -10191980.0 if float.blank?
8
+ raise ArgumentError.new("#{self} requires a Float. You passed #{float.to_s}") unless float.kind_of?(Float) || (float.kind_of?(String) && float.match(REGEX))
9
+ float.to_f
9
10
  end
10
11
 
11
- def decode(str)
12
- return nil if str.empty?
13
- return nil unless str.kind_of?(String) && str.match(REGEX)
14
- str.to_f
12
+ def decode(float)
13
+ return nil if float.blank? || float == -10191980.0
14
+ float.to_f
15
15
  end
16
16
  end
17
17
  end
@@ -4,14 +4,14 @@ module DatastaxRails
4
4
  DEFAULTS = {:solr_type => 'int', :indexed => true, :stored => true, :multi_valued => false, :sortable => true, :tokenized => false, :fulltext => false}
5
5
  REGEX = /\A[-+]?\d+\Z/
6
6
  def encode(int)
7
- raise ArgumentError.new("#{self} requires an Integer. You passed #{int.inspect}") unless int.kind_of?(Integer)
8
- int.to_s
7
+ return -10191980 if int.blank?
8
+ raise ArgumentError.new("#{self} requires an Integer. You passed #{int.to_s}") unless int.kind_of?(Integer) || (int.kind_of?(String) && int.match(REGEX))
9
+ int.to_i
9
10
  end
10
11
 
11
- def decode(str)
12
- return nil if str.empty?
13
- return nil unless str.kind_of?(String) && str.match(REGEX)
14
- str.to_i
12
+ def decode(int)
13
+ return nil if int.blank? || int.to_i == -10191980
14
+ int.to_i
15
15
  end
16
16
  end
17
17
  end
@@ -3,6 +3,7 @@ module DatastaxRails
3
3
  class StringType < BaseType
4
4
  DEFAULTS = {:solr_type => 'string', :indexed => true, :stored => true, :multi_valued => false, :sortable => true, :tokenized => false, :fulltext => true}
5
5
  def encode(str)
6
+ str = "" unless str
6
7
  raise ArgumentError.new("#{self} requires a String") unless str.kind_of?(String)
7
8
  str.dup
8
9
  end
@@ -10,6 +10,7 @@ module DatastaxRails
10
10
  end
11
11
 
12
12
  def decode(str)
13
+ return str if str.kind_of?(Time)
13
14
  Time.parse(str) rescue nil
14
15
  end
15
16
  end
@@ -1,4 +1,4 @@
1
1
  module DatastaxRails
2
2
  # The current version of the gem
3
- VERSION = "1.0.14.2"
3
+ VERSION = "1.0.14.10"
4
4
  end
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+
3
+ describe DatastaxRails::Types::IntegerType do
4
+ before(:each) do
5
+ @coder = DatastaxRails::Types::IntegerType.new
6
+ end
7
+
8
+ describe "#encode" do
9
+ it "should store integers as Fixnums" do
10
+ @coder.encode(12).should be_a_kind_of(Fixnum)
11
+ end
12
+
13
+ it "should convert properly formatted strings to Fixnums" do
14
+ @coder.encode("12").should be_a_kind_of(Fixnum)
15
+ end
16
+
17
+ it "should raise an exception on improperly formatted strings" do
18
+ lambda { @coder.encode("foo") }.should raise_exception(ArgumentError)
19
+ end
20
+
21
+ it "should store a sentinel value for nils" do
22
+ @coder.encode(nil).should == -10191980
23
+ end
24
+ end
25
+
26
+ describe "#decode" do
27
+ it "should return integers" do
28
+ @coder.decode(12).should == 12
29
+ end
30
+
31
+ it "should return nil if the sentinel value is found" do
32
+ @coder.decode(-10191980).should be_nil
33
+ end
34
+ end
35
+ end
@@ -1,2 +1,66 @@
1
1
  update people using consistency QUORUM SET birthdate = '2012-09-10T00:00:00Z', updated_at = '2012-09-12T19:59:57Z', schema_version = '0' WHERE KEY IN ('ea5d4cec-d679-11e1-90fc-d988657988ea')
2
2
  people insert (4.1ms) ea5d4cec-d679-11e1-90fc-d988657988ea {"birthdate"=>"2012-09-10T00:00:00Z", "updated_at"=>"2012-09-12T19:59:57Z", "schema_version"=>"0"}
3
+ update jobs using consistency QUORUM SET created_at = '2012-09-25T18:49:10Z', title = 'Engineer', updated_at = '2012-09-25T18:49:10Z', schema_version = '0', position_number = 12345 WHERE KEY IN ('b157168c-0741-11e2-9e4f-87f5d0ef990d')
4
+ jobs insert (44.0ms) b157168c-0741-11e2-9e4f-87f5d0ef990d {"created_at"=>"2012-09-25T18:49:10Z", "title"=>"Engineer", "updated_at"=>"2012-09-25T18:49:10Z", "schema_version"=>"0", "position_number"=>12345}
5
+ DELETE FROM jobs USING CONSISTENCY QUORUM WHERE KEY IN ('85c6e32c-9f8a-11e1-8316-f893c43ba585')
6
+ jobs remove (22.7ms) #<DatastaxRails::Identity::UUIDKeyFactory:0x7b115f0>
7
+ update jobs using consistency QUORUM SET created_at = '2012-09-25T18:49:10Z', title = 'Engineer', updated_at = '2012-09-25T18:51:39Z', schema_version = '0', position_number = 12345 WHERE KEY IN ('b157168c-0741-11e2-9e4f-87f5d0ef990d')
8
+ jobs insert (2.8ms) b157168c-0741-11e2-9e4f-87f5d0ef990d {"created_at"=>"2012-09-25T18:49:10Z", "title"=>"Engineer", "updated_at"=>"2012-09-25T18:51:39Z", "schema_version"=>"0", "position_number"=>12345}
9
+ update jobs using consistency QUORUM SET created_at = '2012-09-25T18:49:10Z', title = 'Engineer', updated_at = '2012-09-25T18:51:57Z', schema_version = '0', position_number = 123456 WHERE KEY IN ('b157168c-0741-11e2-9e4f-87f5d0ef990d')
10
+ jobs insert (2.3ms) b157168c-0741-11e2-9e4f-87f5d0ef990d {"created_at"=>"2012-09-25T18:49:10Z", "title"=>"Engineer", "updated_at"=>"2012-09-25T18:51:57Z", "schema_version"=>"0", "position_number"=>123456}
11
+ update jobs using consistency QUORUM SET created_at = '2012-09-25T18:49:10Z', title = 'Engineer', updated_at = '2012-09-25T18:52:15Z', schema_version = '0', position_number = '' WHERE KEY IN ('b157168c-0741-11e2-9e4f-87f5d0ef990d')
12
+ jobs insert (10002.2ms) b157168c-0741-11e2-9e4f-87f5d0ef990d {"created_at"=>"2012-09-25T18:49:10Z", "title"=>"Engineer", "updated_at"=>"2012-09-25T18:52:15Z", "schema_version"=>"0", "position_number"=>""}
13
+ update jobs using consistency QUORUM SET created_at = '2012-09-25T18:49:10Z', title = 'Engineer', updated_at = '2012-09-25T18:53:20Z', schema_version = '0', position_number = '' WHERE KEY IN ('b157168c-0741-11e2-9e4f-87f5d0ef990d')
14
+ jobs insert (10001.9ms) b157168c-0741-11e2-9e4f-87f5d0ef990d {"created_at"=>"2012-09-25T18:49:10Z", "title"=>"Engineer", "updated_at"=>"2012-09-25T18:53:20Z", "schema_version"=>"0", "position_number"=>""}
15
+ SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'people'
16
+ update schema_migrations using consistency QUORUM SET digest = 'ad9a586c6685ac554d946069b03380beb4262237' WHERE KEY IN ('people')
17
+ SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'cars'
18
+ update schema_migrations using consistency QUORUM SET digest = '464a9743d7eb329077b695664663d5f37807e3c8' WHERE KEY IN ('cars')
19
+ SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'jobs'
20
+ update schema_migrations using consistency QUORUM SET digest = '888a6c5c997a428d9090ae9485e0414ab90be548' WHERE KEY IN ('jobs')
21
+ SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'boats'
22
+ update schema_migrations using consistency QUORUM SET digest = 'a62063d2c216babfe5b0a961e6f45cd020277aac' WHERE KEY IN ('boats')
23
+ SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'hobbies'
24
+ update schema_migrations using consistency QUORUM SET digest = 'a2d743c761b9bcdbc787d433452edea0e41867cd' WHERE KEY IN ('hobbies')
25
+ update jobs using consistency QUORUM SET updated_at = '2012-09-25T20:00:56Z', schema_version = '0', position_number = '' WHERE KEY IN ('b157168c-0741-11e2-9e4f-87f5d0ef990d')
26
+ jobs insert (10003.0ms) b157168c-0741-11e2-9e4f-87f5d0ef990d {"updated_at"=>"2012-09-25T20:00:56Z", "schema_version"=>"0", "position_number"=>""}
27
+ update jobs using consistency QUORUM SET updated_at = '2012-09-25T20:03:54Z', schema_version = '0', position_number = '' WHERE KEY IN ('b157168c-0741-11e2-9e4f-87f5d0ef990d')
28
+ jobs insert (10002.5ms) b157168c-0741-11e2-9e4f-87f5d0ef990d {"updated_at"=>"2012-09-25T20:03:54Z", "schema_version"=>"0", "position_number"=>""}
29
+ update jobs using consistency QUORUM SET updated_at = '2012-09-25T20:05:55Z', schema_version = '0', position_number = -10191980 WHERE KEY IN ('b157168c-0741-11e2-9e4f-87f5d0ef990d')
30
+ jobs insert (3.3ms) b157168c-0741-11e2-9e4f-87f5d0ef990d {"updated_at"=>"2012-09-25T20:05:55Z", "schema_version"=>"0", "position_number"=>-10191980}
31
+ update hobbies using consistency QUORUM SET schema_version = '0' WHERE KEY IN ('6b422e7c-074e-11e2-8d4b-79683c20ffdf')
32
+ hobbies insert (7.9ms) 6b422e7c-074e-11e2-8d4b-79683c20ffdf {"schema_version"=>"0"}
33
+ SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'people'
34
+ update schema_migrations using consistency QUORUM SET digest = 'a2b198b8a7d1be5ea56eac476d1245f695701d4c' WHERE KEY IN ('people')
35
+ SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'cars'
36
+ update schema_migrations using consistency QUORUM SET digest = 'a76b07633e6f52ec64d62d50d2e73dd4686399aa' WHERE KEY IN ('cars')
37
+ SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'jobs'
38
+ update schema_migrations using consistency QUORUM SET digest = '5badd69eee9539738d7caf3dae1368ae5fd4d578' WHERE KEY IN ('jobs')
39
+ SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'boats'
40
+ update schema_migrations using consistency QUORUM SET digest = 'bcb94bb0c4fbe41b65bada3896cf4fda3a644d0b' WHERE KEY IN ('boats')
41
+ SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'hobbies'
42
+ update schema_migrations using consistency QUORUM SET digest = '6e83a0877c2b2b879a31ce1d0bfd251faafccfb0' WHERE KEY IN ('hobbies')
43
+ update hobbies using consistency QUORUM SET schema_version = '0' WHERE KEY IN ('d6bf8848-074e-11e2-900c-dcfeb4b35235')
44
+ hobbies insert (2.1ms) d6bf8848-074e-11e2-900c-dcfeb4b35235 {"schema_version"=>"0"}
45
+ update hobbies using consistency QUORUM SET schema_version = '0' WHERE KEY IN ('d9c2a322-074e-11e2-83e8-f51257df591f')
46
+ hobbies insert (1.4ms) d9c2a322-074e-11e2-83e8-f51257df591f {"schema_version"=>"0"}
47
+ update hobbies using consistency QUORUM SET schema_version = '0', complexity = 1.0 WHERE KEY IN ('025e0c04-074f-11e2-8e5b-8ba0a9f7edb5')
48
+ hobbies insert (3.1ms) 025e0c04-074f-11e2-8e5b-8ba0a9f7edb5 {"schema_version"=>"0", "complexity"=>1.0}
49
+ update hobbies using consistency QUORUM SET name = 'Hiking', schema_version = '0', complexity = 1.0 WHERE KEY IN ('3c13ae54-074f-11e2-8292-0d7011b9bb3a')
50
+ hobbies insert (2.3ms) 3c13ae54-074f-11e2-8292-0d7011b9bb3a {"name"=>"Hiking", "schema_version"=>"0", "complexity"=>1.0}
51
+ update hobbies using consistency QUORUM SET schema_version = '0' WHERE KEY IN ('de14043e-0753-11e2-9f2f-f86b6fc194a2')
52
+ hobbies insert (2.3ms) de14043e-0753-11e2-9f2f-f86b6fc194a2 {"schema_version"=>"0"}
53
+ update hobbies using consistency QUORUM SET name = 'Hi', schema_version = '0' WHERE KEY IN ('8d84af80-0755-11e2-82a8-736d24b9f368')
54
+ hobbies insert (2.5ms) 8d84af80-0755-11e2-82a8-736d24b9f368 {"name"=>"Hi", "schema_version"=>"0"}
55
+ update hobbies using consistency QUORUM SET name = 'hi', schema_version = '0' WHERE KEY IN ('a140d51c-0755-11e2-8c41-235ffd303c4a')
56
+ hobbies insert (9.2ms) a140d51c-0755-11e2-8c41-235ffd303c4a {"name"=>"hi", "schema_version"=>"0"}
57
+ update hobbies using consistency QUORUM SET name = 'hi', schema_version = '0' WHERE KEY IN ('19030868-0756-11e2-9874-c880dfb7c32d')
58
+ hobbies insert (2.4ms) 19030868-0756-11e2-9874-c880dfb7c32d {"name"=>"hi", "schema_version"=>"0"}
59
+ update hobbies using consistency QUORUM SET name = 'hi', schema_version = '0' WHERE KEY IN ('3a4e9d8e-0756-11e2-836e-eb52de18324b')
60
+ hobbies insert (8.8ms) 3a4e9d8e-0756-11e2-836e-eb52de18324b {"name"=>"hi", "schema_version"=>"0"}
61
+ update hobbies using consistency QUORUM SET name = 'hi', schema_version = '0' WHERE KEY IN ('98170424-0756-11e2-9100-5d9655af83d2')
62
+ hobbies insert (8.4ms) 98170424-0756-11e2-9100-5d9655af83d2 {"name"=>"hi", "schema_version"=>"0"}
63
+ update hobbies using consistency QUORUM SET name = 'j', schema_version = '0' WHERE KEY IN ('7332d7f8-0758-11e2-93a6-c8fd85e4fc7d')
64
+ hobbies insert (8.7ms) 7332d7f8-0758-11e2-93a6-c8fd85e4fc7d {"name"=>"j", "schema_version"=>"0"}
65
+ update hobbies using consistency QUORUM SET created_at = '2012-09-25T21:35:31Z', updated_at = '2012-09-25T21:35:31Z', schema_version = '0' WHERE KEY IN ('ee85bbfa-0758-11e2-9b96-52afb52cd9cd')
66
+ hobbies insert (8.2ms) ee85bbfa-0758-11e2-9b96-52afb52cd9cd {"created_at"=>"2012-09-25T21:35:31Z", "updated_at"=>"2012-09-25T21:35:31Z", "schema_version"=>"0"}