dm-riak-adapter 0.0.1

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.
@@ -0,0 +1,63 @@
1
+ require 'riak'
2
+
3
+ module DataMapper::Adapters
4
+ class RiakAdapter < AbstractAdapter
5
+ def initialize(name, options)
6
+ super
7
+ @riak = Riak::Client.new
8
+ end
9
+
10
+ def create(resources)
11
+ stores = stores_for(resources.first.model)
12
+
13
+ resources.each {|r| initialize_serial(r, stores.size.succ)}
14
+ create_store(resources)
15
+ end
16
+
17
+ def read(query)
18
+ query.filter_records(stores_for(query.model).dup)
19
+ end
20
+
21
+ def update(attributes, collection)
22
+ attributes = attributes_as_fields(attributes)
23
+
24
+ stores_for(collection.query.model).each {|r| r.update(attributes)}
25
+ update_store(collection)
26
+ end
27
+
28
+ def delete(collection)
29
+ delete_store(collection)
30
+ end
31
+
32
+ private
33
+
34
+ def stores_for(model)
35
+ bucket = @riak[model.storage_name]
36
+ bucket.keys.map {|key| bucket[key].data}
37
+ end
38
+
39
+ def create_store(resources)
40
+ resources.each do |resource|
41
+ robject = @riak[resource.model.storage_name].new("#{resource.id}").store
42
+ robject.data = resource.attributes(:field)
43
+ robject.store
44
+ end
45
+ end
46
+
47
+ def update_store(resources)
48
+ resources.each do |resource|
49
+ robject = @riak[resource.model.storage_name]["#{resource.id}"]
50
+ robject.data = resource.attributes(:field)
51
+ robject.store
52
+ end
53
+ end
54
+
55
+ def delete_store(resources)
56
+ resources.each do |resource|
57
+ @riak[resource.model.storage_name]["#{resource.id}"].delete
58
+ end
59
+ end
60
+ end
61
+
62
+ const_added(:RiakAdapter)
63
+ end
@@ -0,0 +1,12 @@
1
+ $: << File.dirname(__FILE__)
2
+
3
+ require 'spec_helper'
4
+ require 'dm-core/spec/adapter_shared_spec'
5
+
6
+ describe DataMapper::Adapters::RiakAdapter do
7
+ before :all do
8
+ @adapter = DataMapper.setup(:default, :adapter => 'riak')
9
+ end
10
+
11
+ it_should_behave_like 'An Adapter'
12
+ end
@@ -0,0 +1,4 @@
1
+ $: << File.dirname(__FILE__) + '/../lib'
2
+
3
+ require 'dm-core'
4
+ require 'dm-riak-adapter'
metadata ADDED
@@ -0,0 +1,77 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dm-riak-adapter
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Mike Richards
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2010-03-22 00:00:00 -04:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: dm-core
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 0.10.2
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: ripple
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "0"
34
+ version:
35
+ description: DataMapper adapter for Riak
36
+ email: mike22e@gmail.com
37
+ executables: []
38
+
39
+ extensions: []
40
+
41
+ extra_rdoc_files: []
42
+
43
+ files:
44
+ - lib/dm-riak-adapter.rb
45
+ - spec/dm-riak-adapter_spec.rb
46
+ - spec/spec_helper.rb
47
+ has_rdoc: true
48
+ homepage: http://github.com/mikeric/dm-riak-adapter
49
+ licenses: []
50
+
51
+ post_install_message:
52
+ rdoc_options: []
53
+
54
+ require_paths:
55
+ - lib
56
+ required_ruby_version: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: "0"
61
+ version:
62
+ required_rubygems_version: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: "0"
67
+ version:
68
+ requirements: []
69
+
70
+ rubyforge_project:
71
+ rubygems_version: 1.3.5
72
+ signing_key:
73
+ specification_version: 2
74
+ summary: DataMapper adapter for Riak
75
+ test_files:
76
+ - spec/dm-riak-adapter_spec.rb
77
+ - spec/spec_helper.rb