riakrest 0.0.4 → 0.1.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/History.txt +25 -26
- data/README.rdoc +16 -26
- data/VERSION +1 -1
- data/examples/auto_update_data.rb +16 -21
- data/examples/auto_update_links.rb +17 -21
- data/examples/basic_client.rb +15 -11
- data/examples/basic_resource.rb +14 -18
- data/examples/bucket_schemas.rb +12 -10
- data/examples/linked_resources.rb +23 -26
- data/examples/links_only_pov.rb +25 -25
- data/examples/multiple_pov.rb +16 -14
- data/examples/rest_interaction.rb +5 -5
- data/examples/ruby_json_data.rb +1 -19
- data/lib/riakrest/core/jiak_bucket.rb +18 -50
- data/lib/riakrest/core/jiak_client.rb +147 -79
- data/lib/riakrest/core/jiak_data.rb +179 -164
- data/lib/riakrest/core/jiak_data_fields.rb +69 -0
- data/lib/riakrest/core/jiak_link.rb +6 -8
- data/lib/riakrest/core/jiak_object.rb +15 -13
- data/lib/riakrest/core/jiak_schema.rb +192 -57
- data/lib/riakrest/resource/jiak_resource.rb +118 -170
- data/lib/riakrest.rb +24 -103
- data/spec/core/jiak_bucket_spec.rb +15 -45
- data/spec/core/jiak_client_spec.rb +70 -41
- data/spec/core/jiak_link_spec.rb +2 -2
- data/spec/core/jiak_object_spec.rb +12 -12
- data/spec/core/jiak_schema_spec.rb +122 -18
- data/spec/resource/jiak_resource_spec.rb +115 -148
- metadata +3 -5
- data/lib/riakrest/data/jiak_data_hash.rb +0 -182
- data/spec/data/jiak_data_hash_spec.rb +0 -14
data/History.txt
CHANGED
@@ -1,34 +1,33 @@
|
|
1
|
+
=== 0.1.0 2009-11-16
|
2
|
+
- Renamed data/JiakDataHash to core/JiakDataFields and reworked.
|
3
|
+
- Move JiakDataHash functionality into JiakData as default implementation
|
4
|
+
- Like Resource, JiakData has jattr_* to manage data inside out.
|
5
|
+
- Resource encapsulates its data.
|
6
|
+
- jattr_* methods add data fields and implicitly maintain schema.
|
7
|
+
- Removed class methods for schema manipulation.
|
8
|
+
- Incrementally add fields data.
|
9
|
+
- Incrementally add fields to schemas.
|
10
|
+
|
1
11
|
=== 0.0.4 2009-11-10
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
* Refactored local? method to jiak_object.
|
12
|
+
- Fixed bug when running ruby 1.8
|
13
|
+
- Changed client_store option for returning object to :return => :object
|
14
|
+
- Added check to eql? and == that both objects are either local or not.
|
15
|
+
- Refactored local? method to jiak_object.
|
7
16
|
|
8
17
|
=== 0.0.3 2009-11-03
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
* Allow setting proxy on core client
|
15
|
-
|
16
|
-
Clean-up:
|
17
|
-
* More examples futzing.
|
18
|
+
- Switched to jeweler for managing gem
|
19
|
+
- Allow passing an array for specifying schema fields/masks
|
20
|
+
- Added convenience accessors to rsrc.jiak
|
21
|
+
- Allow setting proxy on core client
|
22
|
+
- More examples futzing.
|
18
23
|
|
19
24
|
=== 0.0.2 2009-10-30
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
* Clean-up:
|
27
|
-
* DRY'd some code
|
28
|
-
* Examples
|
25
|
+
- Fixed corner case for auto_post false / auto_update true.
|
26
|
+
- Explicitly reserve jiak field in user data classes.
|
27
|
+
- Changed walk to query. Kept walk as an alias.
|
28
|
+
- DRY'd some code
|
29
|
+
- Examples
|
29
30
|
|
30
31
|
|
31
32
|
=== 0.0.1 2009-10-20
|
32
|
-
|
33
|
-
* Initial release:
|
34
|
-
* To github, anyway. git log shows the prior activity.
|
33
|
+
- Initial release to github, anyway. git log shows the prior activity.
|
data/README.rdoc
CHANGED
@@ -10,10 +10,11 @@ store.
|
|
10
10
|
== RIAK:
|
11
11
|
|
12
12
|
Riak[http://riak.basho.com] is an open-source project developed and maintained
|
13
|
-
by the fine folks at Basho[http://www.basho.com].
|
14
|
-
key-value store, a flexible map/reduce engine, and a friendly
|
15
|
-
interface to provide a database ideally suited for Web
|
16
|
-
interacts with the HTTP/JSON query interface, which is
|
13
|
+
by the fine folks at Basho[http://www.basho.com] Technologies. Riak combines a
|
14
|
+
decentralized key-value store, a flexible map/reduce engine, and a friendly
|
15
|
+
HTTP/JSON query interface to provide a database ideally suited for Web
|
16
|
+
applications. RiakRest interacts with the HTTP/JSON query interface, which is
|
17
|
+
called Jiak.
|
17
18
|
|
18
19
|
== SYNOPSIS:
|
19
20
|
|
@@ -25,7 +26,7 @@ of the Core Client that gives a true RESTful feel.
|
|
25
26
|
|
26
27
|
== REQUIREMENTS:
|
27
28
|
|
28
|
-
RestClient is used for REST server interaction
|
29
|
+
RestClient is used for REST server interaction.
|
29
30
|
|
30
31
|
JSON is used for data exchange.
|
31
32
|
|
@@ -40,32 +41,21 @@ sudo gem install riakrest
|
|
40
41
|
require 'riakrest'
|
41
42
|
include RiakRest
|
42
43
|
|
43
|
-
|
44
|
-
PersonData.keygen :name
|
45
|
-
|
46
|
-
class Person
|
44
|
+
class People
|
47
45
|
include JiakResource
|
48
|
-
server
|
49
|
-
|
50
|
-
|
51
|
-
auto_post true
|
52
|
-
auto_update true
|
46
|
+
server 'http://localhost:8002/jiak'
|
47
|
+
jattr_accessor :name, :age
|
48
|
+
auto_manage
|
53
49
|
end
|
54
50
|
|
55
|
-
remy =
|
56
|
-
|
57
|
-
|
58
|
-
puts Person.get('remy').name # => "remy" (from Jiak server)
|
59
|
-
puts Person.get('remy').age # => 10 (from Jiak server)
|
60
|
-
|
61
|
-
remy.age = 11 # (auto-update)
|
62
|
-
puts Person.get('remy').age # => 11 (from Jiak server)
|
51
|
+
remy = People.new(:name => 'Remy',:age => 10) # (auto-post)
|
52
|
+
remy.age = 11 # (auto-update)
|
63
53
|
|
64
|
-
callie =
|
65
|
-
remy.link(callie,'sister')
|
54
|
+
callie = People.new(:name => 'Callie', :age => 13)
|
55
|
+
remy.link(callie,'sister')
|
66
56
|
|
67
|
-
sisters = remy.query(
|
68
|
-
puts sisters[0].eql?(callie)
|
57
|
+
sisters = remy.query(People,'sister')
|
58
|
+
puts sisters[0].eql?(callie) # => true
|
69
59
|
|
70
60
|
remy.delete
|
71
61
|
callie.delete
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0
|
1
|
+
0.1.0
|
@@ -1,43 +1,38 @@
|
|
1
1
|
require 'riakrest'
|
2
2
|
include RiakRest
|
3
3
|
|
4
|
-
|
5
|
-
PersonData.keygen :name
|
6
|
-
|
7
|
-
class Person
|
4
|
+
class People
|
8
5
|
include JiakResource
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
auto_post true
|
14
|
-
auto_update true
|
6
|
+
server 'http://localhost:8002/jiak'
|
7
|
+
jattr_accessor :name, :age
|
8
|
+
keygen { name }
|
9
|
+
auto_manage
|
15
10
|
end
|
16
11
|
|
17
|
-
remy =
|
18
|
-
puts
|
12
|
+
remy = People.new(:name => 'remy', :age => 10)
|
13
|
+
puts People.get('remy').name # => "remy"
|
19
14
|
|
20
15
|
remy.name = "Remy"
|
21
|
-
puts
|
16
|
+
puts People.get('remy').name # => "Remy"
|
22
17
|
remy.age = 12
|
23
|
-
puts
|
18
|
+
puts People.get('remy').age # => 12
|
24
19
|
|
25
|
-
|
20
|
+
People.auto_update false
|
26
21
|
remy.auto_update = true
|
27
|
-
puts
|
22
|
+
puts People.get('remy').age # => 12
|
28
23
|
remy.age = 10
|
29
|
-
puts
|
24
|
+
puts People.get('remy').age # => 10
|
30
25
|
|
31
|
-
|
26
|
+
People.auto_update true
|
32
27
|
remy.auto_update = false
|
33
28
|
remy.age = 12
|
34
|
-
puts
|
29
|
+
puts People.get('remy').age # => 10
|
35
30
|
remy.update
|
36
|
-
puts
|
31
|
+
puts People.get('remy').age # => 12
|
37
32
|
|
38
33
|
remy.auto_update = nil
|
39
34
|
remy.age = 10
|
40
|
-
puts
|
35
|
+
puts People.get('remy').age # => 10
|
41
36
|
|
42
37
|
remy.delete
|
43
38
|
|
@@ -1,47 +1,43 @@
|
|
1
1
|
require 'riakrest'
|
2
2
|
include RiakRest
|
3
3
|
|
4
|
-
|
5
|
-
PersonData.keygen :name
|
6
|
-
|
7
|
-
class Person
|
4
|
+
class People
|
8
5
|
include JiakResource
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
auto_post true
|
6
|
+
server 'http://localhost:8002/jiak'
|
7
|
+
jattr_accessor :name, :age
|
8
|
+
keygen { name.downcase }
|
9
|
+
auto_post
|
14
10
|
end
|
15
11
|
|
16
|
-
remy =
|
17
|
-
callie =
|
12
|
+
remy = People.new(:name => 'remy', :age => 10)
|
13
|
+
callie = People.new(:name => 'Callie', :age => 12)
|
18
14
|
|
19
15
|
remy.link(callie,'sister')
|
20
|
-
puts remy.query(
|
16
|
+
puts remy.query(People,'sister').size # => 0
|
21
17
|
remy.update
|
22
|
-
puts remy.query(
|
18
|
+
puts remy.query(People,'sister').size # => 1
|
23
19
|
remy.remove_link(callie,'sister')
|
24
20
|
|
25
|
-
|
21
|
+
People.auto_update true
|
26
22
|
remy.link(callie,'sibling')
|
27
|
-
puts remy.query(
|
23
|
+
puts remy.query(People,'sibling').size # => 1
|
28
24
|
remy.remove_link(callie,'sibling')
|
29
25
|
|
30
26
|
callie.auto_update = false
|
31
27
|
callie.link(remy,'sibling')
|
32
|
-
puts callie.query(
|
28
|
+
puts callie.query(People,'sibling').size # => 0
|
33
29
|
callie.update
|
34
|
-
puts callie.query(
|
30
|
+
puts callie.query(People,'sibling').size # => 1
|
35
31
|
callie.remove_link(remy,'sibling')
|
36
32
|
|
37
|
-
|
33
|
+
People.auto_update false
|
38
34
|
remy.auto_update = true
|
39
35
|
callie.auto_update = nil
|
40
36
|
remy.bi_link(callie,'sisters')
|
41
|
-
puts remy.query(
|
42
|
-
puts callie.query(
|
37
|
+
puts remy.query(People,'sisters').size # => 1
|
38
|
+
puts callie.query(People,'sisters').size # => 0
|
43
39
|
callie.update
|
44
|
-
puts callie.query(
|
40
|
+
puts callie.query(People,'sisters').size # => 1
|
45
41
|
|
46
42
|
remy.delete
|
47
43
|
callie.delete
|
data/examples/basic_client.rb
CHANGED
@@ -1,31 +1,35 @@
|
|
1
1
|
require 'riakrest'
|
2
2
|
include RiakRest
|
3
3
|
|
4
|
-
|
4
|
+
class PeopleData
|
5
|
+
include JiakData
|
6
|
+
jattr_accessor :name, :age
|
7
|
+
end
|
5
8
|
|
6
9
|
client = JiakClient.new("http://localhost:8002/jiak")
|
7
|
-
bucket = JiakBucket.new('people',
|
10
|
+
bucket = JiakBucket.new('people',PeopleData)
|
8
11
|
client.set_schema(bucket)
|
9
12
|
|
10
13
|
remy = client.store(JiakObject.new(:bucket => bucket,
|
11
|
-
:data =>
|
12
|
-
|
13
|
-
|
14
|
+
:data => PeopleData.new(:name => "remy",
|
15
|
+
:age => 10)),
|
16
|
+
:return => :object)
|
14
17
|
callie = client.store(JiakObject.new(:bucket => bucket,
|
15
|
-
:data =>
|
16
|
-
|
18
|
+
:data => PeopleData.new(:name => "Callie",
|
19
|
+
:age => 12)),
|
17
20
|
:return => :object)
|
18
21
|
|
19
|
-
puts client.get(bucket,remy.key).data.name
|
22
|
+
puts client.get(bucket,remy.key).data.name # => "remy"
|
20
23
|
|
21
24
|
remy.data.name = "Remy"
|
22
25
|
remy << JiakLink.new(bucket,callie.key,'sister')
|
23
26
|
client.store(remy)
|
24
27
|
|
25
|
-
puts client.get(bucket,remy.key).data.name
|
28
|
+
puts client.get(bucket,remy.key).data.name # => "Remy"
|
26
29
|
|
27
|
-
sisters = client.walk(bucket,remy.key,
|
28
|
-
|
30
|
+
sisters = client.walk(bucket,remy.key,
|
31
|
+
QueryLink.new(bucket,'sister'),PeopleData)
|
32
|
+
puts sisters[0].eql?(callie) # => true
|
29
33
|
|
30
34
|
client.delete(bucket,remy.key)
|
31
35
|
client.delete(bucket,callie.key)
|
data/examples/basic_resource.rb
CHANGED
@@ -1,32 +1,28 @@
|
|
1
1
|
require 'riakrest'
|
2
2
|
include RiakRest
|
3
3
|
|
4
|
-
|
5
|
-
PersonData.keygen :name
|
6
|
-
|
7
|
-
class Person
|
4
|
+
class People
|
8
5
|
include JiakResource
|
9
|
-
server
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
auto_update true
|
6
|
+
server 'http://localhost:8002/jiak'
|
7
|
+
jattr_accessor :name, :age
|
8
|
+
keygen {name.downcase}
|
9
|
+
auto_manage
|
14
10
|
end
|
15
11
|
|
16
|
-
remy =
|
17
|
-
puts remy.name
|
12
|
+
remy = People.new(:name => 'Remy',:age => 10) # (auto-post)
|
13
|
+
puts remy.name # => "Remy"
|
18
14
|
|
19
|
-
puts
|
20
|
-
puts
|
15
|
+
puts People.get('remy').name # => "Remy" (from Jiak server)
|
16
|
+
puts People.get('remy').age # => 10 (from Jiak server)
|
21
17
|
|
22
|
-
remy.age = 11
|
23
|
-
puts
|
18
|
+
remy.age = 11 # (auto-update)
|
19
|
+
puts People.get('remy').age # => 11 (from Jiak server)
|
24
20
|
|
25
|
-
callie =
|
21
|
+
callie = People.new(:name => 'Callie', :age => 13)
|
26
22
|
remy.link(callie,'sister')
|
27
23
|
|
28
|
-
sisters = remy.query(
|
29
|
-
puts sisters[0].eql?(callie)
|
24
|
+
sisters = remy.query(People,'sister')
|
25
|
+
puts sisters[0].eql?(callie) # => true
|
30
26
|
|
31
27
|
remy.delete
|
32
28
|
callie.delete
|
data/examples/bucket_schemas.rb
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
require 'riakrest'
|
2
2
|
include RiakRest
|
3
3
|
|
4
|
-
DogData =
|
4
|
+
DogData = JiakDataFields.create(:name,:age,:breeds)
|
5
|
+
DogData.keygen { name.downcase }
|
5
6
|
|
6
|
-
# client = JiakClient.new("http://localhost:8002/jiak"
|
7
|
-
client = JiakClient.new("http://localhost:8002/jiak"
|
7
|
+
# client = JiakClient.new("http://localhost:8002/jiak")
|
8
|
+
client = JiakClient.new("http://localhost:8002/jiak",
|
9
|
+
:proxy=>"http://localhost:8888")
|
8
10
|
bucket = JiakBucket.new("dogs", DogData)
|
9
11
|
chili = JiakObject.new(:bucket => bucket,
|
10
|
-
:key => 'chili',
|
11
12
|
:data => DogData.new(:name => "Chili",
|
12
13
|
:age => 6,
|
13
14
|
:breeds => ["heeler","akita"]))
|
@@ -15,22 +16,23 @@ client.set_schema(bucket)
|
|
15
16
|
client.store(chili)
|
16
17
|
chili = client.get(bucket,'chili')
|
17
18
|
|
18
|
-
|
19
|
-
|
19
|
+
DogBreedsData = JiakDataFields.create(:name,:breeds)
|
20
|
+
bucket.data_class = DogBreedsData
|
20
21
|
client.set_schema(bucket)
|
21
22
|
chili = client.get(bucket,'chili')
|
23
|
+
chili.data.breeds = ["heeler","mutt"]
|
24
|
+
|
25
|
+
|
26
|
+
DogAgeData = JiakDataFields.create(:name,:age)
|
22
27
|
diego = JiakObject.new(:bucket => bucket,
|
23
|
-
:
|
24
|
-
:data => DogData.new(:name => "Diego",
|
28
|
+
:data => DogAgeData.new(:name => "Diego",
|
25
29
|
:age => 7))
|
26
30
|
client.store(diego)
|
27
31
|
|
28
32
|
addie = JiakObject.new(:bucket => bucket,
|
29
|
-
:key => "addie",
|
30
33
|
:data => DogData.new(:name => "Adelaide",
|
31
34
|
:age => 14,
|
32
35
|
:breeds => ["heeler"]))
|
33
36
|
client.store(addie)
|
34
37
|
|
35
|
-
|
36
38
|
addie = client.get(bucket,'addie')
|
@@ -1,17 +1,13 @@
|
|
1
1
|
require 'riakrest'
|
2
2
|
include RiakRest
|
3
3
|
|
4
|
-
|
5
|
-
PersonData.keygen :name
|
6
|
-
|
7
|
-
class Parent
|
4
|
+
class Parents
|
8
5
|
include JiakResource
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
data_class PersonData
|
6
|
+
server 'http://localhost:8002/jiak'
|
7
|
+
jattr_accessor :name
|
8
|
+
keygen { name }
|
13
9
|
end
|
14
|
-
Child =
|
10
|
+
(Child = Parents.dup).group 'children'
|
15
11
|
|
16
12
|
# relationships
|
17
13
|
parent_children = {
|
@@ -31,7 +27,7 @@ end
|
|
31
27
|
|
32
28
|
# store data and relationships
|
33
29
|
parent_children.each do |pname,cnames|
|
34
|
-
p =
|
30
|
+
p = Parents.new(:name => pname).post
|
35
31
|
cnames.each do |cname|
|
36
32
|
begin
|
37
33
|
c = Child.get(cname)
|
@@ -46,49 +42,50 @@ parent_children.each do |pname,cnames|
|
|
46
42
|
end
|
47
43
|
|
48
44
|
# retrieve parents
|
49
|
-
parents = parent_children.keys.map {|p|
|
45
|
+
parents = parent_children.keys.map {|p| Parents.get(p)}
|
50
46
|
p0,p1,p2,p3 = parents
|
51
|
-
puts p1.name
|
47
|
+
puts p1.name # => 'p1'
|
52
48
|
|
53
49
|
# retrieve children
|
54
50
|
children = child_parents.keys.map {|c| Child.get(c)}
|
55
51
|
c0,c1,c2,c3 = children
|
56
|
-
puts c1.name
|
52
|
+
puts c1.name # => 'c1'
|
57
53
|
|
58
54
|
# retrieve parent children
|
59
55
|
p0c,p1c,p2c,p3c = parents.map {|p| p.query(Child,'child')}
|
60
|
-
puts p2c[0].name
|
56
|
+
puts p2c[0].name # => 'c2' (could be 'c3')
|
61
57
|
|
62
58
|
# retrieve children parents
|
63
|
-
c0p,c1p,c2p,c3p = children.map {|c| c.query(
|
64
|
-
puts c3p[0].name
|
59
|
+
c0p,c1p,c2p,c3p = children.map {|c| c.query(Parents,'parent')}
|
60
|
+
puts c3p[0].name # => 'p2'
|
61
|
+
puts c3p[1].name # => 'p3'
|
65
62
|
|
66
63
|
# retrieve children siblings
|
67
64
|
c0s,c1s,c2s,c3s = children.map do |c|
|
68
|
-
c.query(
|
65
|
+
c.query(Parents,'parent',Child,'child').delete_if{|s| s.eql?(c)}
|
69
66
|
end
|
70
|
-
puts c3s[0].name
|
67
|
+
puts c3s[0].name # => 'c2'
|
71
68
|
|
72
69
|
# who is c3's step-sibling's other parent?
|
73
|
-
c3sp = c3.query(
|
70
|
+
c3sp = c3.query(Parents,'parent',Child,'child',Parents,'parent')
|
74
71
|
c3p.each {|p| c3sp.delete_if{|sp| p.eql?(sp)}}
|
75
|
-
puts c3sp[0].name
|
72
|
+
puts c3sp[0].name # => "p1"
|
76
73
|
|
77
74
|
# turn on auto-update at class level
|
78
|
-
|
75
|
+
Parents.auto_update true
|
79
76
|
Child.auto_update true
|
80
77
|
|
81
78
|
# add sibling links
|
82
79
|
children.each do |c|
|
83
|
-
siblings = c.query(
|
80
|
+
siblings = c.query(Parents,'parent',Child,'child').delete_if{|s| s.eql?(c)}
|
84
81
|
siblings.each {|s| c.link(s,'sibling')}
|
85
82
|
c.update
|
86
83
|
end
|
87
|
-
puts c1.query(Child,'sibling').size
|
84
|
+
puts c1.query(Child,'sibling').size # => 2
|
88
85
|
|
89
86
|
# some folks are odd, and others are normal
|
90
87
|
parent_children.keys.each do |p|
|
91
|
-
parent =
|
88
|
+
parent = Parents.get(p)
|
92
89
|
p_children = parent.query(Child,'child')
|
93
90
|
p_children.each do |child|
|
94
91
|
child.link(parent, p[1].to_i.odd? ? 'odd' : 'normal')
|
@@ -103,10 +100,10 @@ children.each {|c| c.refresh}
|
|
103
100
|
|
104
101
|
# do any odd parents have normal children?
|
105
102
|
op = parents.inject([]) do |build,parent|
|
106
|
-
build << parent.query(Child,'normal',
|
103
|
+
build << parent.query(Child,'normal',Parents,'odd')
|
107
104
|
build.flatten.uniq
|
108
105
|
end
|
109
|
-
puts op[0].name
|
106
|
+
puts op[0].name # => 'p1'
|
110
107
|
|
111
108
|
# clean-up by deleting everybody
|
112
109
|
parents.each {|p| p.delete}
|
data/examples/links_only_pov.rb
CHANGED
@@ -2,37 +2,37 @@ require 'riakrest'
|
|
2
2
|
include RiakRest
|
3
3
|
|
4
4
|
# class with 10 fields
|
5
|
-
class
|
5
|
+
class Fields
|
6
6
|
include JiakResource
|
7
|
-
server
|
8
|
-
|
9
|
-
|
10
|
-
auto_post true
|
11
|
-
auto_update true
|
7
|
+
server 'http://localhost:8002/jiak'
|
8
|
+
jattr_accessor (0...10).map {|n| "f#{n}".to_sym}
|
9
|
+
auto_manage
|
12
10
|
end
|
13
11
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
12
|
+
class Links
|
13
|
+
include JiakResource
|
14
|
+
server 'http://localhost:8002/jiak'
|
15
|
+
auto_manage
|
16
|
+
end
|
18
17
|
|
19
|
-
# populate two
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
18
|
+
# populate two Fields objects with (meaningless) stuff
|
19
|
+
Fields.pov
|
20
|
+
fields = ["fields1","fields2"]
|
21
|
+
fields1,fields2 =
|
22
|
+
fields.map {|o| Fields.new(Fields.schema.write_mask.inject({}) do |h,f|
|
23
|
+
h[f]="#{o.upcase}-#{f.hash}"
|
24
|
+
h
|
25
|
+
end)}
|
26
26
|
|
27
27
|
Links.pov
|
28
|
-
links1 = Links.get(
|
29
|
-
links1.link(
|
28
|
+
links1 = Links.get(fields1.jiak.key)
|
29
|
+
links1.link(fields2,'link')
|
30
30
|
|
31
|
-
|
32
|
-
|
31
|
+
Fields.pov
|
32
|
+
fields2.f1 = "new f1"
|
33
33
|
|
34
|
-
linked =
|
35
|
-
puts linked.f1 ==
|
34
|
+
linked = fields1.query(Fields,'link')[0]
|
35
|
+
puts linked.f1 == fields2.f1 # => true
|
36
36
|
|
37
|
-
|
38
|
-
|
37
|
+
fields1.delete
|
38
|
+
fields2.delete
|
data/examples/multiple_pov.rb
CHANGED
@@ -1,27 +1,29 @@
|
|
1
1
|
require 'riakrest'
|
2
2
|
include RiakRest
|
3
3
|
|
4
|
-
DogData = JiakDataHash.create(:name,:weight,:breed)
|
5
|
-
DogData.keygen :name
|
6
4
|
class Dog
|
7
5
|
include JiakResource
|
8
|
-
server
|
9
|
-
|
10
|
-
|
6
|
+
server 'http://localhost:8002/jiak'
|
7
|
+
jiak_accessor :name, :weight, :breed
|
8
|
+
keygen { name.downcase }
|
11
9
|
end
|
12
10
|
|
13
|
-
|
14
|
-
|
15
|
-
|
11
|
+
class DogBreed
|
12
|
+
include JiakResource
|
13
|
+
server 'http://localhost:8002/jiak'
|
14
|
+
jiak_accessor :name, :breed
|
15
|
+
end
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
|
17
|
+
class DogWeight
|
18
|
+
include JiakResource
|
19
|
+
server 'http://localhost:8002/jiak'
|
20
|
+
jiak_accessor :name, :weight
|
21
|
+
end
|
20
22
|
|
21
23
|
Dog.pov
|
22
|
-
addie = Dog.new(:name => '
|
24
|
+
addie = Dog.new(:name => 'Adelaide', :weight => 45, :breed => 'heeler')
|
23
25
|
addie.post
|
24
|
-
puts addie.name # => "
|
26
|
+
puts addie.name # => "Adelaide"
|
25
27
|
puts addie.breed # => "heeler"
|
26
28
|
puts addie.weight # => 45
|
27
29
|
|
@@ -37,7 +39,7 @@ addie.put
|
|
37
39
|
|
38
40
|
Dog.pov
|
39
41
|
addie = Dog.get('adelaide')
|
40
|
-
puts addie.name # => "
|
42
|
+
puts addie.name # => "Adelaide"
|
41
43
|
puts addie.breed # => "Heeler"
|
42
44
|
puts addie.weight # => 47
|
43
45
|
|
@@ -1,8 +1,11 @@
|
|
1
1
|
require 'riakrest'
|
2
2
|
include RiakRest
|
3
3
|
|
4
|
-
DogData
|
5
|
-
|
4
|
+
class DogData
|
5
|
+
include JiakData
|
6
|
+
jattr_accessor :name, :age, :breeds
|
7
|
+
end
|
8
|
+
|
6
9
|
client = JiakClient.new("http://localhost:8002/jiak")
|
7
10
|
bucket = JiakBucket.new("dogs", DogData)
|
8
11
|
|
@@ -44,8 +47,5 @@ client.store(strass)
|
|
44
47
|
db_strass = client.get(bucket,'strass')
|
45
48
|
puts db_strass.data.age # => 6 Yeah!
|
46
49
|
|
47
|
-
|
48
|
-
|
49
50
|
# Clean-up
|
50
51
|
client.keys(bucket).each {|key| client.delete(bucket,key)}
|
51
|
-
|