dm-redis-adapter 0.8.4 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.textile CHANGED
@@ -14,6 +14,7 @@ Please note that as of version 0.5.3 of the gem, the key names that are used for
14
14
 
15
15
  h1. Changelog
16
16
 
17
+ * v0.9.0 Fixes for composite keys being indexed (thanks @fringley)
17
18
  * v0.8.4 Fixes for composite keys (thanks @krider2010)
18
19
  * v0.8.2 Updates to RedisAdapter#initialize to support URI. (thanks @thentenaar)
19
20
  * v0.8.1 Dependency updates by @jof to support newer versions of the redis gem.
@@ -117,7 +117,7 @@ module DataMapper
117
117
  attributes = resource.dirty_attributes
118
118
 
119
119
  resource.model.properties.select {|p| p.index}.each do |property|
120
- @redis.sadd("#{storage_name}:#{property.name}:#{encode(resource[property.name.to_s])}", resource.key.first.to_s)
120
+ @redis.sadd("#{storage_name}:#{property.name}:#{encode(resource[property.name.to_s])}", resource.key.join.to_s)
121
121
  end
122
122
 
123
123
  properties_to_set = []
@@ -147,7 +147,7 @@ module DataMapper
147
147
 
148
148
  def key_query(query)
149
149
  matched_records = []
150
- value =""
150
+ value = ""
151
151
  storage_name = query.model.storage_name
152
152
  query.conditions.operands.each do |operand|
153
153
  value += operand.value.to_s if operand.subject.key?
@@ -221,7 +221,7 @@ module DataMapper
221
221
  # Find records that match have a matching value
222
222
  #
223
223
  # @param [DataMapper::Query] query
224
- # The query used to locate the resources to be deleted.
224
+ # The query used to locate the resources to be matched.
225
225
  #
226
226
  # @param [DataMapper::Operation] the operation for the query
227
227
  #
@@ -0,0 +1,53 @@
1
+ require 'spec_helper'
2
+
3
+ describe DataMapper::Adapters::RedisAdapter do
4
+ before(:all) do
5
+ @adapter = DataMapper.setup(:default, {
6
+ :adapter => "redis",
7
+ :db => 15
8
+ })
9
+ @repository = DataMapper.repository(@adapter.name)
10
+ @redis = Redis.new(:db => 15)
11
+ end
12
+
13
+ after(:each) do
14
+ @redis.flushdb
15
+ end
16
+
17
+ # A copy of the encode function from adapater as it is private
18
+ def encode(value)
19
+ Base64.encode64(value.to_s).gsub("\n", "")
20
+ end
21
+
22
+ describe "composite keys" do
23
+ before(:all) do
24
+ class CompositeFun
25
+ include DataMapper::Resource
26
+
27
+ property :other_id, Integer, :key => true, :required => true, :index => true
28
+ property :id, Serial, :key => true
29
+ property :stuff, String
30
+
31
+ DataMapper.finalize
32
+ end
33
+ end
34
+
35
+ it "should be able to create and update an item with a composite key" do
36
+ c = CompositeFun.new(:other_id => 1)
37
+ c.save
38
+ c.update(:stuff => "Random String") # Without the fix in adapter#key_query this throws an exception
39
+ end
40
+
41
+ it "should save the composite id of the resource in the :all and indexed sets" do
42
+ c = CompositeFun.new(:other_id => 1)
43
+ c.save
44
+
45
+ @redis.hgetall("composite_funs:#{c.other_id}#{c.id}").should == {"other_id" => "#{c.id}"}
46
+ @redis.smembers("composite_funs:other_id:id:all").should == ["#{c.other_id}#{c.id}"]
47
+
48
+ # checks that the member set for the other_id index contains the composite key
49
+ encoded_other_id = encode(c.other_id)
50
+ @redis.smembers("composite_funs:other_id:#{encoded_other_id}").should == ["#{c.other_id}#{c.id}"]
51
+ end
52
+ end
53
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dm-redis-adapter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.4
4
+ version: 0.9.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-09-17 00:00:00.000000000 Z
12
+ date: 2014-01-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: dm-core
@@ -216,6 +216,7 @@ files:
216
216
  - lib/dm-redis-adapter.rb
217
217
  - lib/dm-redis-adapter/adapter.rb
218
218
  - lib/dm-redis-adapter/spec/setup.rb
219
+ - spec/composite_keys_spec.rb
219
220
  - spec/dm_redis_associations_spec.rb
220
221
  - spec/dm_redis_finding_spec.rb
221
222
  - spec/dm_redis_inheritenance_spec.rb