dm-redis-adapter 0.8.4 → 0.9.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/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