mongo_mapper 0.7.6 → 0.8.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.
Files changed (134) hide show
  1. data/README.rdoc +4 -8
  2. data/bin/mmconsole +1 -1
  3. data/examples/keys.rb +37 -0
  4. data/examples/plugins.rb +41 -0
  5. data/examples/querying.rb +35 -0
  6. data/examples/scopes.rb +52 -0
  7. data/lib/mongo_mapper.rb +77 -97
  8. data/lib/mongo_mapper/connection.rb +83 -0
  9. data/lib/mongo_mapper/document.rb +10 -252
  10. data/lib/mongo_mapper/embedded_document.rb +7 -46
  11. data/lib/mongo_mapper/exceptions.rb +30 -0
  12. data/lib/mongo_mapper/extensions/array.rb +19 -0
  13. data/lib/mongo_mapper/extensions/binary.rb +22 -0
  14. data/lib/mongo_mapper/extensions/boolean.rb +44 -0
  15. data/lib/mongo_mapper/extensions/date.rb +25 -0
  16. data/lib/mongo_mapper/extensions/float.rb +14 -0
  17. data/lib/mongo_mapper/extensions/hash.rb +14 -0
  18. data/lib/mongo_mapper/extensions/integer.rb +19 -0
  19. data/lib/mongo_mapper/extensions/kernel.rb +9 -0
  20. data/lib/mongo_mapper/extensions/nil_class.rb +18 -0
  21. data/lib/mongo_mapper/extensions/object.rb +27 -0
  22. data/lib/mongo_mapper/extensions/object_id.rb +30 -0
  23. data/lib/mongo_mapper/extensions/set.rb +20 -0
  24. data/lib/mongo_mapper/extensions/string.rb +18 -0
  25. data/lib/mongo_mapper/extensions/time.rb +29 -0
  26. data/lib/mongo_mapper/plugins.rb +1 -21
  27. data/lib/mongo_mapper/plugins/accessible.rb +44 -0
  28. data/lib/mongo_mapper/plugins/associations.rb +7 -24
  29. data/lib/mongo_mapper/plugins/associations/base.rb +1 -0
  30. data/lib/mongo_mapper/plugins/associations/belongs_to_polymorphic_proxy.rb +5 -6
  31. data/lib/mongo_mapper/plugins/associations/belongs_to_proxy.rb +5 -6
  32. data/lib/mongo_mapper/plugins/associations/collection.rb +1 -0
  33. data/lib/mongo_mapper/plugins/associations/embedded_collection.rb +2 -1
  34. data/lib/mongo_mapper/plugins/associations/in_array_proxy.rb +22 -39
  35. data/lib/mongo_mapper/plugins/associations/many_documents_as_proxy.rb +4 -4
  36. data/lib/mongo_mapper/plugins/associations/many_documents_proxy.rb +22 -23
  37. data/lib/mongo_mapper/plugins/associations/many_embedded_polymorphic_proxy.rb +1 -0
  38. data/lib/mongo_mapper/plugins/associations/many_embedded_proxy.rb +1 -0
  39. data/lib/mongo_mapper/plugins/associations/many_polymorphic_proxy.rb +1 -0
  40. data/lib/mongo_mapper/plugins/associations/one_embedded_proxy.rb +2 -3
  41. data/lib/mongo_mapper/plugins/associations/one_proxy.rb +6 -7
  42. data/lib/mongo_mapper/plugins/associations/proxy.rb +8 -6
  43. data/lib/mongo_mapper/plugins/caching.rb +21 -0
  44. data/lib/mongo_mapper/plugins/callbacks.rb +4 -3
  45. data/lib/mongo_mapper/plugins/clone.rb +10 -4
  46. data/lib/mongo_mapper/plugins/descendants.rb +1 -0
  47. data/lib/mongo_mapper/plugins/dirty.rb +1 -0
  48. data/lib/mongo_mapper/plugins/document.rb +41 -0
  49. data/lib/mongo_mapper/plugins/dynamic_querying.rb +41 -0
  50. data/lib/mongo_mapper/{support/find.rb → plugins/dynamic_querying/dynamic_finder.rb} +3 -36
  51. data/lib/mongo_mapper/plugins/embedded_document.rb +49 -0
  52. data/lib/mongo_mapper/plugins/equality.rb +3 -9
  53. data/lib/mongo_mapper/plugins/identity_map.rb +8 -10
  54. data/lib/mongo_mapper/plugins/indexes.rb +12 -0
  55. data/lib/mongo_mapper/plugins/inspect.rb +1 -0
  56. data/lib/mongo_mapper/plugins/keys.rb +15 -27
  57. data/lib/mongo_mapper/plugins/keys/key.rb +14 -3
  58. data/lib/mongo_mapper/plugins/logger.rb +1 -0
  59. data/lib/mongo_mapper/plugins/modifiers.rb +3 -2
  60. data/lib/mongo_mapper/plugins/pagination.rb +5 -15
  61. data/lib/mongo_mapper/plugins/persistence.rb +12 -11
  62. data/lib/mongo_mapper/plugins/protected.rb +8 -0
  63. data/lib/mongo_mapper/plugins/querying.rb +236 -0
  64. data/lib/mongo_mapper/plugins/querying/decorator.rb +46 -0
  65. data/lib/mongo_mapper/plugins/rails.rb +1 -0
  66. data/lib/mongo_mapper/plugins/safe.rb +28 -0
  67. data/lib/mongo_mapper/plugins/sci.rb +32 -0
  68. data/lib/mongo_mapper/plugins/scopes.rb +21 -0
  69. data/lib/mongo_mapper/plugins/serialization.rb +1 -0
  70. data/lib/mongo_mapper/plugins/timestamps.rb +1 -0
  71. data/lib/mongo_mapper/plugins/userstamps.rb +1 -0
  72. data/lib/mongo_mapper/plugins/validations.rb +5 -1
  73. data/lib/mongo_mapper/support/descendant_appends.rb +5 -6
  74. data/lib/mongo_mapper/version.rb +2 -1
  75. data/test/NOTE_ON_TESTING +1 -0
  76. data/test/active_model_lint_test.rb +13 -0
  77. data/test/functional/associations/test_belongs_to_polymorphic_proxy.rb +63 -0
  78. data/test/functional/associations/test_belongs_to_proxy.rb +93 -0
  79. data/test/functional/associations/test_in_array_proxy.rb +319 -0
  80. data/test/functional/associations/test_many_documents_as_proxy.rb +229 -0
  81. data/test/functional/associations/test_many_documents_proxy.rb +536 -0
  82. data/test/functional/associations/test_many_embedded_polymorphic_proxy.rb +176 -0
  83. data/test/functional/associations/test_many_embedded_proxy.rb +256 -0
  84. data/test/functional/associations/test_many_polymorphic_proxy.rb +302 -0
  85. data/test/functional/associations/test_one_embedded_proxy.rb +58 -0
  86. data/test/functional/associations/test_one_proxy.rb +182 -0
  87. data/test/functional/test_accessible.rb +168 -0
  88. data/test/functional/test_associations.rb +44 -0
  89. data/test/functional/test_binary.rb +27 -0
  90. data/test/functional/test_caching.rb +76 -0
  91. data/test/functional/test_callbacks.rb +151 -0
  92. data/test/functional/test_dirty.rb +163 -0
  93. data/test/functional/test_document.rb +253 -0
  94. data/test/functional/test_dynamic_querying.rb +75 -0
  95. data/test/functional/test_embedded_document.rb +210 -0
  96. data/test/functional/test_identity_map.rb +506 -0
  97. data/test/functional/test_indexes.rb +42 -0
  98. data/test/functional/test_logger.rb +20 -0
  99. data/test/functional/test_modifiers.rb +416 -0
  100. data/test/functional/test_pagination.rb +91 -0
  101. data/test/functional/test_protected.rb +175 -0
  102. data/test/functional/test_querying.rb +873 -0
  103. data/test/functional/test_safe.rb +76 -0
  104. data/test/functional/test_sci.rb +230 -0
  105. data/test/functional/test_scopes.rb +171 -0
  106. data/test/functional/test_string_id_compatibility.rb +67 -0
  107. data/test/functional/test_timestamps.rb +62 -0
  108. data/test/functional/test_userstamps.rb +27 -0
  109. data/test/functional/test_validations.rb +342 -0
  110. data/test/models.rb +227 -0
  111. data/test/test_helper.rb +98 -0
  112. data/test/unit/associations/test_base.rb +212 -0
  113. data/test/unit/associations/test_proxy.rb +105 -0
  114. data/test/unit/serializers/test_json_serializer.rb +202 -0
  115. data/test/unit/test_clone.rb +69 -0
  116. data/test/unit/test_descendant_appends.rb +71 -0
  117. data/test/unit/test_document.rb +213 -0
  118. data/test/unit/test_dynamic_finder.rb +125 -0
  119. data/test/unit/test_embedded_document.rb +644 -0
  120. data/test/unit/test_extensions.rb +380 -0
  121. data/test/unit/test_key.rb +185 -0
  122. data/test/unit/test_keys.rb +55 -0
  123. data/test/unit/test_mongo_mapper.rb +110 -0
  124. data/test/unit/test_pagination.rb +11 -0
  125. data/test/unit/test_plugins.rb +50 -0
  126. data/test/unit/test_rails.rb +181 -0
  127. data/test/unit/test_rails_compatibility.rb +52 -0
  128. data/test/unit/test_serialization.rb +51 -0
  129. data/test/unit/test_time_zones.rb +39 -0
  130. data/test/unit/test_validations.rb +544 -0
  131. metadata +113 -44
  132. data/lib/mongo_mapper/plugins/pagination/proxy.rb +0 -72
  133. data/lib/mongo_mapper/query.rb +0 -23
  134. data/lib/mongo_mapper/support.rb +0 -196
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 7
8
- - 6
9
- version: 0.7.6
7
+ - 8
8
+ - 0
9
+ version: 0.8.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - John Nunemaker
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-05-18 00:00:00 -04:00
17
+ date: 2010-06-16 00:00:00 -04:00
18
18
  default_executable: mmconsole
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -36,7 +36,7 @@ dependencies:
36
36
  prerelease: false
37
37
  requirement: &id002 !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - "="
39
+ - - ~>
40
40
  - !ruby/object:Gem::Version
41
41
  segments:
42
42
  - 1
@@ -50,32 +50,19 @@ dependencies:
50
50
  prerelease: false
51
51
  requirement: &id003 !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - "="
53
+ - - ~>
54
54
  - !ruby/object:Gem::Version
55
55
  segments:
56
56
  - 0
57
- - 1
58
- - 1
59
- version: 0.1.1
60
- type: :runtime
61
- version_requirements: *id003
62
- - !ruby/object:Gem::Dependency
63
- name: mongo
64
- prerelease: false
65
- requirement: &id004 !ruby/object:Gem::Requirement
66
- requirements:
67
- - - "="
68
- - !ruby/object:Gem::Version
69
- segments:
70
- - 1
57
+ - 3
71
58
  - 0
72
- version: "1.0"
59
+ version: 0.3.0
73
60
  type: :runtime
74
- version_requirements: *id004
61
+ version_requirements: *id003
75
62
  - !ruby/object:Gem::Dependency
76
63
  name: json
77
64
  prerelease: false
78
- requirement: &id005 !ruby/object:Gem::Requirement
65
+ requirement: &id004 !ruby/object:Gem::Requirement
79
66
  requirements:
80
67
  - - ">="
81
68
  - !ruby/object:Gem::Version
@@ -85,13 +72,13 @@ dependencies:
85
72
  - 3
86
73
  version: 1.2.3
87
74
  type: :development
88
- version_requirements: *id005
75
+ version_requirements: *id004
89
76
  - !ruby/object:Gem::Dependency
90
77
  name: jnunemaker-matchy
91
78
  prerelease: false
92
- requirement: &id006 !ruby/object:Gem::Requirement
79
+ requirement: &id005 !ruby/object:Gem::Requirement
93
80
  requirements:
94
- - - "="
81
+ - - ">="
95
82
  - !ruby/object:Gem::Version
96
83
  segments:
97
84
  - 0
@@ -99,13 +86,13 @@ dependencies:
99
86
  - 0
100
87
  version: 0.4.0
101
88
  type: :development
102
- version_requirements: *id006
89
+ version_requirements: *id005
103
90
  - !ruby/object:Gem::Dependency
104
91
  name: shoulda
105
92
  prerelease: false
106
- requirement: &id007 !ruby/object:Gem::Requirement
93
+ requirement: &id006 !ruby/object:Gem::Requirement
107
94
  requirements:
108
- - - "="
95
+ - - ">="
109
96
  - !ruby/object:Gem::Version
110
97
  segments:
111
98
  - 2
@@ -113,13 +100,13 @@ dependencies:
113
100
  - 2
114
101
  version: 2.10.2
115
102
  type: :development
116
- version_requirements: *id007
103
+ version_requirements: *id006
117
104
  - !ruby/object:Gem::Dependency
118
105
  name: timecop
119
106
  prerelease: false
120
- requirement: &id008 !ruby/object:Gem::Requirement
107
+ requirement: &id007 !ruby/object:Gem::Requirement
121
108
  requirements:
122
- - - "="
109
+ - - ">="
123
110
  - !ruby/object:Gem::Version
124
111
  segments:
125
112
  - 0
@@ -127,13 +114,13 @@ dependencies:
127
114
  - 1
128
115
  version: 0.3.1
129
116
  type: :development
130
- version_requirements: *id008
117
+ version_requirements: *id007
131
118
  - !ruby/object:Gem::Dependency
132
119
  name: mocha
133
120
  prerelease: false
134
- requirement: &id009 !ruby/object:Gem::Requirement
121
+ requirement: &id008 !ruby/object:Gem::Requirement
135
122
  requirements:
136
- - - "="
123
+ - - ">="
137
124
  - !ruby/object:Gem::Version
138
125
  segments:
139
126
  - 0
@@ -141,7 +128,7 @@ dependencies:
141
128
  - 8
142
129
  version: 0.9.8
143
130
  type: :development
144
- version_requirements: *id009
131
+ version_requirements: *id008
145
132
  description:
146
133
  email:
147
134
  - nunemaker@gmail.com
@@ -153,8 +140,29 @@ extra_rdoc_files: []
153
140
 
154
141
  files:
155
142
  - bin/mmconsole
143
+ - examples/keys.rb
144
+ - examples/plugins.rb
145
+ - examples/querying.rb
146
+ - examples/scopes.rb
147
+ - lib/mongo_mapper/connection.rb
156
148
  - lib/mongo_mapper/document.rb
157
149
  - lib/mongo_mapper/embedded_document.rb
150
+ - lib/mongo_mapper/exceptions.rb
151
+ - lib/mongo_mapper/extensions/array.rb
152
+ - lib/mongo_mapper/extensions/binary.rb
153
+ - lib/mongo_mapper/extensions/boolean.rb
154
+ - lib/mongo_mapper/extensions/date.rb
155
+ - lib/mongo_mapper/extensions/float.rb
156
+ - lib/mongo_mapper/extensions/hash.rb
157
+ - lib/mongo_mapper/extensions/integer.rb
158
+ - lib/mongo_mapper/extensions/kernel.rb
159
+ - lib/mongo_mapper/extensions/nil_class.rb
160
+ - lib/mongo_mapper/extensions/object.rb
161
+ - lib/mongo_mapper/extensions/object_id.rb
162
+ - lib/mongo_mapper/extensions/set.rb
163
+ - lib/mongo_mapper/extensions/string.rb
164
+ - lib/mongo_mapper/extensions/time.rb
165
+ - lib/mongo_mapper/plugins/accessible.rb
158
166
  - lib/mongo_mapper/plugins/associations/base.rb
159
167
  - lib/mongo_mapper/plugins/associations/belongs_to_polymorphic_proxy.rb
160
168
  - lib/mongo_mapper/plugins/associations/belongs_to_proxy.rb
@@ -170,33 +178,96 @@ files:
170
178
  - lib/mongo_mapper/plugins/associations/one_proxy.rb
171
179
  - lib/mongo_mapper/plugins/associations/proxy.rb
172
180
  - lib/mongo_mapper/plugins/associations.rb
181
+ - lib/mongo_mapper/plugins/caching.rb
173
182
  - lib/mongo_mapper/plugins/callbacks.rb
174
183
  - lib/mongo_mapper/plugins/clone.rb
175
184
  - lib/mongo_mapper/plugins/descendants.rb
176
185
  - lib/mongo_mapper/plugins/dirty.rb
186
+ - lib/mongo_mapper/plugins/document.rb
187
+ - lib/mongo_mapper/plugins/dynamic_querying/dynamic_finder.rb
188
+ - lib/mongo_mapper/plugins/dynamic_querying.rb
189
+ - lib/mongo_mapper/plugins/embedded_document.rb
177
190
  - lib/mongo_mapper/plugins/equality.rb
178
191
  - lib/mongo_mapper/plugins/identity_map.rb
192
+ - lib/mongo_mapper/plugins/indexes.rb
179
193
  - lib/mongo_mapper/plugins/inspect.rb
180
194
  - lib/mongo_mapper/plugins/keys/key.rb
181
195
  - lib/mongo_mapper/plugins/keys.rb
182
196
  - lib/mongo_mapper/plugins/logger.rb
183
197
  - lib/mongo_mapper/plugins/modifiers.rb
184
- - lib/mongo_mapper/plugins/pagination/proxy.rb
185
198
  - lib/mongo_mapper/plugins/pagination.rb
186
199
  - lib/mongo_mapper/plugins/persistence.rb
187
200
  - lib/mongo_mapper/plugins/protected.rb
201
+ - lib/mongo_mapper/plugins/querying/decorator.rb
202
+ - lib/mongo_mapper/plugins/querying.rb
188
203
  - lib/mongo_mapper/plugins/rails.rb
204
+ - lib/mongo_mapper/plugins/safe.rb
205
+ - lib/mongo_mapper/plugins/sci.rb
206
+ - lib/mongo_mapper/plugins/scopes.rb
189
207
  - lib/mongo_mapper/plugins/serialization.rb
190
208
  - lib/mongo_mapper/plugins/timestamps.rb
191
209
  - lib/mongo_mapper/plugins/userstamps.rb
192
210
  - lib/mongo_mapper/plugins/validations.rb
193
211
  - lib/mongo_mapper/plugins.rb
194
- - lib/mongo_mapper/query.rb
195
212
  - lib/mongo_mapper/support/descendant_appends.rb
196
- - lib/mongo_mapper/support/find.rb
197
- - lib/mongo_mapper/support.rb
198
213
  - lib/mongo_mapper/version.rb
199
214
  - lib/mongo_mapper.rb
215
+ - test/active_model_lint_test.rb
216
+ - test/functional/associations/test_belongs_to_polymorphic_proxy.rb
217
+ - test/functional/associations/test_belongs_to_proxy.rb
218
+ - test/functional/associations/test_in_array_proxy.rb
219
+ - test/functional/associations/test_many_documents_as_proxy.rb
220
+ - test/functional/associations/test_many_documents_proxy.rb
221
+ - test/functional/associations/test_many_embedded_polymorphic_proxy.rb
222
+ - test/functional/associations/test_many_embedded_proxy.rb
223
+ - test/functional/associations/test_many_polymorphic_proxy.rb
224
+ - test/functional/associations/test_one_embedded_proxy.rb
225
+ - test/functional/associations/test_one_proxy.rb
226
+ - test/functional/test_accessible.rb
227
+ - test/functional/test_associations.rb
228
+ - test/functional/test_binary.rb
229
+ - test/functional/test_caching.rb
230
+ - test/functional/test_callbacks.rb
231
+ - test/functional/test_dirty.rb
232
+ - test/functional/test_document.rb
233
+ - test/functional/test_dynamic_querying.rb
234
+ - test/functional/test_embedded_document.rb
235
+ - test/functional/test_identity_map.rb
236
+ - test/functional/test_indexes.rb
237
+ - test/functional/test_logger.rb
238
+ - test/functional/test_modifiers.rb
239
+ - test/functional/test_pagination.rb
240
+ - test/functional/test_protected.rb
241
+ - test/functional/test_querying.rb
242
+ - test/functional/test_safe.rb
243
+ - test/functional/test_sci.rb
244
+ - test/functional/test_scopes.rb
245
+ - test/functional/test_string_id_compatibility.rb
246
+ - test/functional/test_timestamps.rb
247
+ - test/functional/test_userstamps.rb
248
+ - test/functional/test_validations.rb
249
+ - test/models.rb
250
+ - test/NOTE_ON_TESTING
251
+ - test/test_helper.rb
252
+ - test/unit/associations/test_base.rb
253
+ - test/unit/associations/test_proxy.rb
254
+ - test/unit/serializers/test_json_serializer.rb
255
+ - test/unit/test_clone.rb
256
+ - test/unit/test_descendant_appends.rb
257
+ - test/unit/test_document.rb
258
+ - test/unit/test_dynamic_finder.rb
259
+ - test/unit/test_embedded_document.rb
260
+ - test/unit/test_extensions.rb
261
+ - test/unit/test_key.rb
262
+ - test/unit/test_keys.rb
263
+ - test/unit/test_mongo_mapper.rb
264
+ - test/unit/test_pagination.rb
265
+ - test/unit/test_plugins.rb
266
+ - test/unit/test_rails.rb
267
+ - test/unit/test_rails_compatibility.rb
268
+ - test/unit/test_serialization.rb
269
+ - test/unit/test_time_zones.rb
270
+ - test/unit/test_validations.rb
200
271
  - LICENSE
201
272
  - README.rdoc
202
273
  has_rdoc: true
@@ -220,10 +291,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
220
291
  - - ">="
221
292
  - !ruby/object:Gem::Version
222
293
  segments:
223
- - 1
224
- - 3
225
- - 6
226
- version: 1.3.6
294
+ - 0
295
+ version: "0"
227
296
  requirements: []
228
297
 
229
298
  rubyforge_project:
@@ -1,72 +0,0 @@
1
- module MongoMapper
2
- module Plugins
3
- module Pagination
4
- class Proxy
5
- instance_methods.each { |m| undef_method m unless m =~ /(^__|^nil\?$|^send$|respond_to\?|proxy_|^object_id$)/ }
6
-
7
- attr_accessor :subject
8
- attr_reader :total_entries, :per_page, :current_page
9
- alias limit per_page
10
-
11
- def initialize(total_entries, current_page, per_page=nil)
12
- @total_entries = total_entries.to_i
13
- self.per_page = per_page
14
- self.current_page = current_page
15
- end
16
-
17
- def total_pages
18
- (total_entries / per_page.to_f).ceil
19
- end
20
-
21
- def out_of_bounds?
22
- current_page > total_pages
23
- end
24
-
25
- def previous_page
26
- current_page > 1 ? (current_page - 1) : nil
27
- end
28
-
29
- def next_page
30
- current_page < total_pages ? (current_page + 1) : nil
31
- end
32
-
33
- def skip
34
- (current_page - 1) * per_page
35
- end
36
- alias offset skip # for will paginate support
37
-
38
- def send(method, *args, &block)
39
- if respond_to?(method)
40
- super
41
- else
42
- subject.send(method, *args, &block)
43
- end
44
- end
45
-
46
- def ===(other)
47
- other === subject
48
- end
49
-
50
- def method_missing(name, *args, &block)
51
- @subject.send(name, *args, &block)
52
- end
53
-
54
- def respond_to?(name, *args, &block)
55
- super || @subject.respond_to?(name, *args, &block)
56
- end
57
-
58
- private
59
- def per_page=(value)
60
- value = 25 if value.blank?
61
- @per_page = value.to_i
62
- end
63
-
64
- def current_page=(value)
65
- value = value.to_i
66
- value = 1 if value < 1
67
- @current_page = value
68
- end
69
- end
70
- end
71
- end
72
- end
@@ -1,23 +0,0 @@
1
- module MongoMapper
2
- class Query
3
- def initialize(model, options={})
4
- raise ArgumentError, "Options must be a hash" unless options.is_a?(Hash)
5
- @model, @options, @conditions = model, {}, {}
6
- query.update(options)
7
- add_sci_condition
8
- end
9
-
10
- private
11
- def method_missing(method, *args, &block)
12
- query.send(method, *args, &block)
13
- end
14
-
15
- def query
16
- @query ||= Plucky::Query.new(@model.collection).object_ids(@model.object_id_keys)
17
- end
18
-
19
- def add_sci_condition
20
- query[:_type] = @model.to_s if @model.single_collection_inherited?
21
- end
22
- end
23
- end
@@ -1,196 +0,0 @@
1
- class Array
2
- def self.to_mongo(value)
3
- value = value.respond_to?(:lines) ? value.lines : value
4
- value.to_a
5
- end
6
-
7
- def self.from_mongo(value)
8
- value || []
9
- end
10
- end
11
-
12
- class Binary
13
- def self.to_mongo(value)
14
- if value.is_a?(BSON::Binary)
15
- value
16
- else
17
- value.nil? ? nil : BSON::Binary.new(value)
18
- end
19
- end
20
-
21
- def self.from_mongo(value)
22
- value
23
- end
24
- end
25
-
26
- class Boolean
27
- BOOLEAN_MAPPING = {
28
- true => true, 'true' => true, 'TRUE' => true, 'True' => true, 't' => true, 'T' => true, '1' => true, 1 => true, 1.0 => true,
29
- false => false, 'false' => false, 'FALSE' => false, 'False' => false, 'f' => false, 'F' => false, '0' => false, 0 => false, 0.0 => false, nil => nil
30
- }
31
-
32
- def self.to_mongo(value)
33
- if value.is_a?(Boolean)
34
- value
35
- else
36
- BOOLEAN_MAPPING[value]
37
- end
38
- end
39
-
40
- def self.from_mongo(value)
41
- !!value
42
- end
43
- end
44
-
45
- class Date
46
- def self.to_mongo(value)
47
- if value.nil? || value == ''
48
- nil
49
- else
50
- date = value.is_a?(Date) || value.is_a?(Time) ? value : Date.parse(value.to_s)
51
- Time.utc(date.year, date.month, date.day)
52
- end
53
- rescue
54
- nil
55
- end
56
-
57
- def self.from_mongo(value)
58
- value.to_date if value.present?
59
- end
60
- end
61
-
62
- class Float
63
- def self.to_mongo(value)
64
- value.nil? ? nil : value.to_f
65
- end
66
- end
67
-
68
- class Hash
69
- def self.from_mongo(value)
70
- HashWithIndifferentAccess.new(value || {})
71
- end
72
-
73
- def to_mongo
74
- self
75
- end
76
- end
77
-
78
- class Integer
79
- def self.to_mongo(value)
80
- value_to_i = value.to_i
81
- if value_to_i == 0 && value != value_to_i
82
- value.to_s =~ /^(0x|0b)?0+/ ? 0 : nil
83
- else
84
- value_to_i
85
- end
86
- end
87
- end
88
-
89
- class NilClass
90
- def to_mongo(value)
91
- value
92
- end
93
-
94
- def from_mongo(value)
95
- value
96
- end
97
- end
98
-
99
- class Object
100
- # The hidden singleton lurks behind everyone
101
- def metaclass
102
- class << self; self end
103
- end
104
-
105
- def meta_eval(&blk)
106
- metaclass.instance_eval(&blk)
107
- end
108
-
109
- # Adds methods to a metaclass
110
- def meta_def(name, &blk)
111
- meta_eval { define_method(name, &blk) }
112
- end
113
-
114
- # Defines an instance method within a class
115
- def class_def(name, &blk)
116
- class_eval { define_method(name, &blk) }
117
- end
118
-
119
- def self.to_mongo(value)
120
- value
121
- end
122
-
123
- def self.from_mongo(value)
124
- value
125
- end
126
- end
127
-
128
- class ObjectId
129
- def self.to_mongo(value)
130
- Plucky.to_object_id(value)
131
- end
132
-
133
- def self.from_mongo(value)
134
- value
135
- end
136
- end
137
-
138
- class Set
139
- def self.to_mongo(value)
140
- value.to_a
141
- end
142
-
143
- def self.from_mongo(value)
144
- Set.new(value || [])
145
- end
146
- end
147
-
148
- class String
149
- def self.to_mongo(value)
150
- value.nil? ? nil : value.to_s
151
- end
152
-
153
- def self.from_mongo(value)
154
- value.nil? ? nil : value.to_s
155
- end
156
- end
157
-
158
- class Time
159
- def self.to_mongo(value)
160
- if value.nil? || value == ''
161
- nil
162
- else
163
- time_class = Time.try(:zone).present? ? Time.zone : Time
164
- time = value.is_a?(Time) ? value : time_class.parse(value.to_s)
165
- # strip milliseconds as Ruby does micro and bson does milli and rounding rounded wrong
166
- at(time.to_i).utc if time
167
- end
168
- end
169
-
170
- def self.from_mongo(value)
171
- if Time.try(:zone).present? && value.present?
172
- value.in_time_zone(Time.zone)
173
- else
174
- value
175
- end
176
- end
177
- end
178
-
179
- class BSON::ObjectID
180
- alias_method :original_to_json, :to_json
181
-
182
- def as_json(options=nil)
183
- to_s
184
- end
185
-
186
- def to_json(options = nil)
187
- as_json.to_json
188
- end
189
- end
190
-
191
- module MongoMapper
192
- module Support
193
- autoload :DescendantAppends, 'mongo_mapper/support/descendant_appends'
194
- autoload :Find, 'mongo_mapper/support/find'
195
- end
196
- end