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.
- data/lib/dm-riak-adapter.rb +63 -0
- data/spec/dm-riak-adapter_spec.rb +12 -0
- data/spec/spec_helper.rb +4 -0
- metadata +77 -0
@@ -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
|
data/spec/spec_helper.rb
ADDED
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
|