mongous 0.1.6 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/README.adoc +296 -46
  3. data/README.ja.adoc +297 -47
  4. data/lib/mongous/base.rb +35 -2
  5. data/lib/mongous/document.rb +75 -32
  6. data/lib/mongous/extention.rb +72 -57
  7. data/lib/mongous/filter.rb +273 -208
  8. data/lib/mongous/version.rb +1 -1
  9. data/mongous.gemspec +1 -1
  10. data/sample/connect_auto_0.rb +9 -0
  11. data/sample/connect_auto_2.rb +2 -1
  12. data/sample/connect_default_2.rb +2 -1
  13. data/sample/connect_environ_2.rb +2 -1
  14. data/sample/connect_loadfile_2.rb +2 -1
  15. data/sample/declare_compact_1.rb +7 -7
  16. data/sample/declare_label_1.rb +10 -6
  17. data/sample/declare_ndex_1.rb +9 -5
  18. data/sample/declare_ndex_2.rb +10 -6
  19. data/sample/declare_strict_1.rb +14 -10
  20. data/sample/declare_strict_2.rb +5 -3
  21. data/sample/{multi_docs_1.rb → multi_collection_1.rb} +0 -0
  22. data/sample/multi_collection_2.rb +63 -0
  23. data/sample/multi_collection_3.rb +26 -0
  24. data/sample/query_basic_1.rb +3 -1
  25. data/sample/query_basic_2.rb +5 -3
  26. data/sample/query_basic_3.rb +2 -3
  27. data/sample/query_basic_4.rb +3 -4
  28. data/sample/query_basic_5.rb +2 -3
  29. data/sample/query_detail_1.rb +3 -1
  30. data/sample/query_detail_2.rb +3 -1
  31. data/sample/query_detail_3.rb +5 -3
  32. data/sample/{query_basic_6.rb → query_filter_1.rb} +7 -4
  33. data/sample/query_filter_2.rb +50 -0
  34. data/sample/{query_super_1.rb → query_find_1.rb} +0 -1
  35. data/sample/query_select_1.rb +51 -0
  36. data/sample/query_skip_limit_1.rb +47 -0
  37. data/sample/query_skip_limit_2.rb +49 -0
  38. data/sample/query_sort_order_1.rb +46 -0
  39. data/sample/save_basic_1.rb +1 -2
  40. data/sample/save_basic_2.rb +1 -2
  41. data/sample/save_basic_3.rb +1 -2
  42. data/sample/save_detail_1.rb +7 -4
  43. data/sample/save_detail_2.rb +7 -4
  44. data/sample/save_detail_3.rb +11 -8
  45. data/sample/save_verify_1.rb +7 -4
  46. data/sample/save_verify_3.rb +1 -1
  47. data/sample/save_verify_5.rb +3 -3
  48. data/sample/save_verify_6.rb +3 -3
  49. data/sample/save_verify_7.rb +23 -0
  50. data/sample/update_basic_1.rb +13 -0
  51. data/sample/zap_basic_2.rb +2 -2
  52. data/sample/zap_basic_3.rb +2 -2
  53. data/sample/zbenchmark_search_1.rb +110 -0
  54. data/sample/zbenchmark_search_2.rb +110 -0
  55. data/sample/zbenchmark_search_3.rb +90 -0
  56. metadata +19 -12
  57. data/sample/multi_docs_2.rb +0 -58
  58. data/sample/query_limit_1.rb +0 -44
  59. data/sample/query_order_1.rb +0 -49
  60. data/sample/query_projection_1.rb +0 -44
  61. data/sample/template_article.rb +0 -5
  62. data/sample/template_person.rb +0 -12
@@ -1,3 +1,3 @@
1
1
  module Mongous
2
- VERSION = "0.1.6"
2
+ VERSION = "0.4.0"
3
3
  end
@@ -7,7 +7,7 @@ Gem::Specification.new do |spec|
7
7
  spec.email = ["arima.yasuhiro@gmail.com"]
8
8
 
9
9
  spec.summary = %q{ Mongo wrapper library. }
10
- spec.description = %q{ Yet another lightweight mongo wrapper library. }
10
+ spec.description = %q{ Yet another mongo wrapper library. }
11
11
  spec.homepage = "https://github.com/arimay/mongous"
12
12
  spec.license = "MIT"
13
13
 
@@ -0,0 +1,9 @@
1
+
2
+ require "mongous"
3
+
4
+ Mongous.attach! :Book
5
+
6
+ Book.each do |book|
7
+ p book
8
+ end
9
+
@@ -5,7 +5,8 @@ $client = Mongous.connect
5
5
 
6
6
  class Book
7
7
  include Mongous::Document
8
- set_client $client
8
+ self.client = $client
9
+ self.collection_name = "Book"
9
10
  end
10
11
 
11
12
 
@@ -5,7 +5,8 @@ $client = Mongous.connect( ["localhost:27017"], database: "test" )
5
5
 
6
6
  class Book
7
7
  include Mongous::Document
8
- set_client $client
8
+ self.client = $client
9
+ self.collection_name = "Book"
9
10
  end
10
11
 
11
12
 
@@ -5,7 +5,8 @@ $client = Mongous.connect( ENV["MONGOLAB_URI"] || "mongodb://localhost:27017/t
5
5
 
6
6
  class Book
7
7
  include Mongous::Document
8
- set_client $client
8
+ self.client = $client
9
+ self.collection_name = "Book"
9
10
  end
10
11
 
11
12
 
@@ -6,7 +6,8 @@ $client = Mongous.connect( file: filepath, mode: ENV["RACK_ENV"] || "developme
6
6
 
7
7
  class Book
8
8
  include Mongous::Document
9
- set_client $client
9
+ self.client = $client
10
+ self.collection_name = "Book"
10
11
  end
11
12
 
12
13
 
@@ -7,20 +7,20 @@ class Book
7
7
  include Mongous::Document
8
8
  end
9
9
 
10
-
11
10
  book = Book.new
12
- book.title = "title compact"
13
- book.author = "foobar"
11
+ book.title = "declare compact"
12
+ book.author = "Alice"
14
13
  book.publisher = nil
15
- book.style = "A4"
14
+ book.style = "hardcover"
15
+ book.size = "A4"
16
16
  book.price = 100
17
17
  book.page = 100
18
- # book.publish_at = nil # (default)
19
- # book.isbn = "978-3-16-148410-0"
18
+ book.isbn = "978-3-16-148410-0"
20
19
  # book.lang = nil # (default)
20
+ # book.created_at = nil # (created)
21
+ # book.updated_at = nil # (updated)
21
22
  book.save
22
23
 
23
-
24
24
  Book.each do |book|
25
25
  pp book
26
26
  end
@@ -10,26 +10,30 @@ class Book
10
10
  field :author
11
11
  field :publisher
12
12
  field :style
13
+ field :size
13
14
  field :price
14
15
  field :page
15
- field :publish_at
16
16
  field :isbn
17
17
  field :lang
18
+ field :created_at
19
+ field :updated_at
18
20
 
19
21
  verify :strict
20
22
  end
21
23
 
22
24
 
23
25
  book = Book.new
24
- book.title = "title label"
25
- book.author = "foobar"
26
+ book.title = "declare label"
27
+ book.author = "Bob"
26
28
  book.publisher = nil
27
- book.style = "A5"
29
+ book.style = "softcover"
30
+ book.size = "A5"
28
31
  book.price = 200
29
32
  book.page = 200
30
- # book.publish_at = nil # (default)
31
- # book.isbn = "978-3-16-148410-0"
33
+ book.isbn = "978-3-16-148410-0"
32
34
  # book.lang = nil # (default)
35
+ # book.created_at = nil # (created)
36
+ # book.updated_at = nil # (updated)
33
37
  book.save
34
38
 
35
39
 
@@ -10,11 +10,13 @@ class Book
10
10
  field :author
11
11
  field :publisher
12
12
  field :style
13
+ field :size
13
14
  field :price
14
15
  field :page
15
- field :publish_at
16
16
  field :isbn
17
17
  field :lang
18
+ field :created_at
19
+ field :updated_at
18
20
 
19
21
  index :title
20
22
 
@@ -23,15 +25,17 @@ end
23
25
 
24
26
 
25
27
  book = Book.new
26
- book.title = "title strict"
27
- book.author = "foobar"
28
+ book.title = "declare index 1"
29
+ book.author = "Candy"
28
30
  book.publisher = nil
29
- book.style = "A6"
31
+ book.style = "paperback"
32
+ book.size = "A6"
30
33
  book.price = 300
31
34
  book.page = 300
32
- # book.publish_at = nil # (default)
33
35
  book.isbn = "978-3-16-148410-0"
34
36
  # book.lang = nil # (default)
37
+ # book.created_at = nil # (created)
38
+ # book.updated_at = nil # (updated)
35
39
  book.save
36
40
 
37
41
 
@@ -10,28 +10,32 @@ class Book
10
10
  field :author
11
11
  field :publisher
12
12
  field :style
13
+ field :size
13
14
  field :price
14
15
  field :page
15
- field :publish_at
16
16
  field :isbn
17
17
  field :lang
18
+ field :created_at
19
+ field :updated_at
18
20
 
19
- index :isbn, unique: true
21
+ index :isbn
20
22
 
21
23
  verify :strict
22
24
  end
23
25
 
24
26
 
25
27
  book = Book.new
26
- book.title = "title strict"
27
- book.author = "foobar"
28
+ book.title = "declare index 2"
29
+ book.author = "Candy"
28
30
  book.publisher = nil
29
- book.style = "A6"
31
+ book.style = "paperback"
32
+ book.size = "A6"
30
33
  book.price = 300
31
34
  book.page = 300
32
- # book.publish_at = nil # (default)
33
35
  book.isbn = "978-3-16-148410-0"
34
36
  # book.lang = nil # (default)
37
+ # book.created_at = nil # (created)
38
+ # book.updated_at = nil # (updated)
35
39
  book.save
36
40
 
37
41
 
@@ -9,12 +9,14 @@ class Book
9
9
  field :title, String, :must
10
10
  field :author, String
11
11
  field :publisher, String
12
- field :style, String, %w[A4 A5 A6]
12
+ field :style, String, %w[hardcover softcover paperback]
13
+ field :size, String, /[AB]\d/
13
14
  field :price, Integer, (0..1_000_000)
14
15
  field :page, Integer, proc{ page % 4 == 0 }
15
- field :publish_at, Date, &proc{ Date.today }
16
16
  field :isbn, String, proc{ isbn? }
17
- field :lang, String, &proc{ "ja" }
17
+ field :lang, String, default: "en"
18
+ field :created_at, Time, create: proc{ Time.now }
19
+ field :updated_at, Time, update: proc{ Time.now }
18
20
 
19
21
  verify :strict
20
22
  verify { having?( title ) }
@@ -23,21 +25,23 @@ class Book
23
25
  end
24
26
 
25
27
  def isbn?
26
- isbn&.gsub(/\D*/, '')&.size == 13
28
+ isbn.gsub(/\D*/, '').size == 13
27
29
  end
28
30
  end
29
31
 
30
32
 
31
33
  book = Book.new
32
- book.title = "title strict"
33
- book.author = "foobar"
34
+ book.title = "declare strict"
35
+ book.author = "David"
34
36
  book.publisher = nil
35
- book.style = "A6"
36
- book.price = 300
37
- book.page = 300
38
- # book.publish_at = nil # (default)
37
+ book.style = "paperback"
38
+ book.size = "A7"
39
+ book.price = 400
40
+ book.page = 400
39
41
  book.isbn = "978-3-16-148410-0"
40
42
  # book.lang = nil # (default)
43
+ # book.created_at = nil # (create)
44
+ # book.updated_at = nil # (update)
41
45
  book.save
42
46
 
43
47
 
@@ -9,12 +9,14 @@ class Book
9
9
  field :title, String, :must
10
10
  field :author, String
11
11
  field :publisher, String, :must
12
- field :style, String, %w[A4 A5 A6]
12
+ field :style, String, %w[hardcover softcover paperback]
13
+ field :size, String, /[AB]\d/
13
14
  field :price, Integer, (0..1_000_000)
14
15
  field :page, Integer, proc{ page % 4 == 0 }
15
- field :publish_at, Date, &proc{ Date.today }
16
16
  field :isbn, String, proc{ isbn? }
17
- field :lang, String, &proc{ "ja" }
17
+ field :lang, String, default: "en"
18
+ field :created_at, Time, create: proc{ Time.now }
19
+ field :updated_at, Time, update: proc{ Time.now }
18
20
 
19
21
  verify :strict
20
22
 
@@ -0,0 +1,63 @@
1
+
2
+ require "mongous"
3
+
4
+ Mongous.connect!
5
+
6
+ class Book1
7
+ include Mongous::Document
8
+ end
9
+
10
+ class Book2
11
+ include Mongous::Document
12
+
13
+ field :title
14
+ field :author
15
+ field :publisher
16
+ field :style
17
+ field :size
18
+ field :price
19
+ field :page
20
+ field :isbn
21
+ field :lang
22
+ field :created_at
23
+ field :updated_at
24
+
25
+ verify :strict
26
+ end
27
+
28
+ class Book3
29
+ include Mongous::Document
30
+
31
+ field :title, :must
32
+ field :author
33
+ field :publisher, String, :must
34
+ field :style, String, %w[hardcover softcover paperback]
35
+ field :size, String, /[AB]\d/
36
+ field :price, Integer, (0..1_000_000)
37
+ field :page, Integer, proc{ page > 0 }
38
+ field :isbn, proc{ isbn? }
39
+ field :lang, String, default: "en"
40
+ field :created_at, Time, create: proc{ Time.now }
41
+ field :updated_at, Time, update: proc{ Time.now }
42
+
43
+ verify :strict
44
+ verify { having?( title ) }
45
+ verify do
46
+ having?( author ) | having?( publisher )
47
+ end
48
+
49
+ def isbn?
50
+ isbn.gsub(/[\D]*/, '').size == 13
51
+ end
52
+ end
53
+
54
+
55
+ pp Book1.fields
56
+ puts
57
+
58
+ pp Book2.fields
59
+ puts
60
+
61
+ pp Book3.fields
62
+ puts
63
+
@@ -0,0 +1,26 @@
1
+
2
+ require "mongous"
3
+
4
+ Mongous.connect!
5
+
6
+ Mongous.attach! :Book1
7
+ Mongous.attach! :Book2
8
+ Mongous.attach! :Book3
9
+
10
+ pp Book1.collection
11
+ pp Book2.collection
12
+ pp Book3.collection
13
+
14
+ Mongous.attach! :Book1
15
+ Mongous.attach! :Book2, :Book3
16
+
17
+ pp Book1.collection
18
+ pp Book2.collection
19
+ pp Book3.collection
20
+
21
+ Mongous.attach! :Book1, :Book2, :Book3
22
+
23
+ pp Book1.collection
24
+ pp Book2.collection
25
+ pp Book3.collection
26
+
@@ -7,10 +7,12 @@ class Book
7
7
  include Mongous::Document
8
8
  end
9
9
 
10
-
11
10
  p book = Book.first
12
11
  puts
13
12
 
13
+ p count = Book.count
14
+ puts
15
+
14
16
  pp books = Book.all
15
17
  puts
16
18
 
@@ -7,14 +7,16 @@ class Book
7
7
  include Mongous::Document
8
8
  end
9
9
 
10
+ p book = Book.where( title: /title/ ).first
11
+ puts
10
12
 
11
- p book = Book.filter( title: /title/ ).first
13
+ p count = Book.where( title: /title/ ).count
12
14
  puts
13
15
 
14
- pp books = Book.filter( title: /title/ ).all
16
+ pp books = Book.where( title: /title/ ).all
15
17
  puts
16
18
 
17
- Book.filter( title: /title/ ).each do |book|
19
+ Book.where( title: /title/ ).each do |book|
18
20
  p book
19
21
  end
20
22
  puts
@@ -7,13 +7,12 @@ class Book
7
7
  include Mongous::Document
8
8
  end
9
9
 
10
-
11
- Book.filter.option( projection: {_id: 0, title: 1, author: 1} ).each do |book|
10
+ Book.where.option( projection: {_id: 0, title: 1, author: 1} ).each do |book|
12
11
  p book
13
12
  end
14
13
  puts
15
14
 
16
- Book.filter( title: /title/ ).option( projection: {_id: 0, title: 1} ).each do |book|
15
+ Book.where( title: /title/ ).option( projection: {_id: 0, title: 1} ).each do |book|
17
16
  p book
18
17
  end
19
18
 
@@ -7,18 +7,17 @@ class Book
7
7
  include Mongous::Document
8
8
  end
9
9
 
10
-
11
- Book.filter( style: %w[A4 A5 A6] ).each do |book|
10
+ Book.where( size: %w[A4 A5 A6] ).each do |book|
12
11
  p book
13
12
  end
14
13
  puts
15
14
 
16
- Book.filter( style: %w[A4 A5]).each do |book|
15
+ Book.where( size: %w[A4 A5]).each do |book|
17
16
  p book
18
17
  end
19
18
  puts
20
19
 
21
- Book.filter( style: %w[A5] ).each do |book|
20
+ Book.where( size: %w[A5] ).each do |book|
22
21
  p book
23
22
  end
24
23
  puts