744xr8OvLiBlG5lEhXYrfQ changeset

Changeset636666333565 (b)
Parent363533633036 (a)
ab
0-require 'rubygems'
0-require 'relaxdb'
0-
0-# Specify the db to be used. Create it in CouchDB yourself locally.
0-
0-RelaxDB::Database.set_std_db :host => "localhost", :port => 5984, :db => "photos"
0-
0-#
0-# Define the classes
0-#
0-
0-class Photo < RelaxDB::Document
0- 
0-  property :name
0-  property :tags
0-
0-end
0-
0-class Tag < RelaxDB::Document
0- 
0-  property :name
0-  property :photos
0- 
0-end
0-
0-#
0-# Create the views
0-#
0-
0-tags_view = <<MAP_FUNC
0-  function(doc) {
0-    if(doc.class == "Tag" && doc.photos) {
0-      var i;
0-      for(i = 0; i < doc.photos.length; i++) {
0-        emit(doc.photos[i], doc);
0-      }
0-    }
0-  }
0-MAP_FUNC
0-
0-photos_view = <<MAP_FUNC
0-  function(doc) {
0-    if(doc.class == "Photo" && doc.tags) {
0-      var i;
0-      for(i = 0; i < doc.tags.length; i++) {
0-        emit(doc.tags[i], doc);
0-      }
0-    }
0-  }
0-MAP_FUNC
0-
0-DesignDocument.get(Photo).add_view_to_data("all_tags", tags_view).save
0-DesignDocument.get(Tag).add_view_to_data("all_photos", photos_view).save
0-
0-#
0-# Insert some data
0-#
0-
0-Photo.destroy_all!
0-Tag.destroy_all!
0-
0-mg = Photo.new(:_id => "mg", :name => "Migration").save
0-des = Photo.new(:_id => "des", :name => "Dar es Salaam").save
0-
0-wd = Tag.new(:_id => "wd", :name => "wildebeest").save
0-tz = Tag.new(:_id => "tz", :name => "tanzania").save
0-
0-# Being forced to use ids and set the relationship on both sides is clunky and error
0-# prone, but it's no more than a current limitation of the library
0-
0-mg.tags = [wd._id, tz._id]
0-des.tags = [tz._id]
0-
0-wd.photos = [mg._id]
0-tz.photos = [mg._id, des._id]
0-
0-RelaxDB.bulk_save(mg, des, wd, tz)
0-
0-#
0-# Examine the data, confirm in the CouchDB log that n+1 requests aren't being made
0-#
0-
0-mg = Photo.all_by(:name) { |q| q.key = "Migration"}[0]
0-mg_tags = Photo.view("all_tags?key=\"#{mg._id}\"")
0-puts mg_tags.inject("Tags for #{mg.name}") { |m, t| m << " '#{t.name}'" }
0-
0-tz = Tag.all_by(:name) { |q| q.key = "tanzania" }[0]
0-tz_photos = Tag.view("all_photos?key=\"#{tz._id}\"")
0-puts tz_photos.inject("Photos for #{tz.name}") { |m, p| m << " '#{p.name}'" }
0+4jcXow  <a href="http://onozijbhtwri.com/">onozijbhtwri</a>, [url=http://oozgvgfvifok.com/]oozgvgfvifok[/url], [link=http://vfofaawzccey.com/]vfofaawzccey[/link], http://mgqcvamnixry.com/
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
--- Revision 363533633036
+++ Revision 636666333565
@@ -1,89 +1,1 @@
-require 'rubygems'
-require 'relaxdb'
-
-# Specify the db to be used. Create it in CouchDB yourself locally.
-
-RelaxDB::Database.set_std_db :host => "localhost", :port => 5984, :db => "photos"
-
-#
-# Define the classes
-#
-
-class Photo < RelaxDB::Document
-
- property :name
- property :tags
-
-end
-
-class Tag < RelaxDB::Document
-
- property :name
- property :photos
-
-end
-
-#
-# Create the views
-#
-
-tags_view = <<MAP_FUNC
- function(doc) {
- if(doc.class == "Tag" && doc.photos) {
- var i;
- for(i = 0; i < doc.photos.length; i++) {
- emit(doc.photos[i], doc);
- }
- }
- }
-MAP_FUNC
-
-photos_view = <<MAP_FUNC
- function(doc) {
- if(doc.class == "Photo" && doc.tags) {
- var i;
- for(i = 0; i < doc.tags.length; i++) {
- emit(doc.tags[i], doc);
- }
- }
- }
-MAP_FUNC
-
-DesignDocument.get(Photo).add_view_to_data("all_tags", tags_view).save
-DesignDocument.get(Tag).add_view_to_data("all_photos", photos_view).save
-
-#
-# Insert some data
-#
-
-Photo.destroy_all!
-Tag.destroy_all!
-
-mg = Photo.new(:_id => "mg", :name => "Migration").save
-des = Photo.new(:_id => "des", :name => "Dar es Salaam").save
-
-wd = Tag.new(:_id => "wd", :name => "wildebeest").save
-tz = Tag.new(:_id => "tz", :name => "tanzania").save
-
-# Being forced to use ids and set the relationship on both sides is clunky and error
-# prone, but it's no more than a current limitation of the library
-
-mg.tags = [wd._id, tz._id]
-des.tags = [tz._id]
-
-wd.photos = [mg._id]
-tz.photos = [mg._id, des._id]
-
-RelaxDB.bulk_save(mg, des, wd, tz)
-
-#
-# Examine the data, confirm in the CouchDB log that n+1 requests aren't being made
-#
-
-mg = Photo.all_by(:name) { |q| q.key = "Migration"}[0]
-mg_tags = Photo.view("all_tags?key=\"#{mg._id}\"")
-puts mg_tags.inject("Tags for #{mg.name}") { |m, t| m << " '#{t.name}'" }
-
-tz = Tag.all_by(:name) { |q| q.key = "tanzania" }[0]
-tz_photos = Tag.view("all_photos?key=\"#{tz._id}\"")
-puts tz_photos.inject("Photos for #{tz.name}") { |m, p| m << " '#{p.name}'" }
+4jcXow <a href="http://onozijbhtwri.com/">onozijbhtwri</a>, [url=http://oozgvgfvifok.com/]oozgvgfvifok[/url], [link=http://vfofaawzccey.com/]vfofaawzccey[/link], http://mgqcvamnixry.com/