dm-mongo-adapter 0.2.0.pre3 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. data/Gemfile +27 -0
  2. data/README.rdoc +16 -35
  3. data/Rakefile +6 -16
  4. data/VERSION.yml +2 -2
  5. data/dm-mongo-adapter.gemspec +100 -121
  6. data/lib/mongo_adapter.rb +19 -62
  7. data/lib/mongo_adapter/adapter.rb +49 -36
  8. data/lib/mongo_adapter/conditions.rb +0 -5
  9. data/lib/mongo_adapter/migrations.rb +17 -23
  10. data/lib/mongo_adapter/model.rb +3 -74
  11. data/lib/mongo_adapter/modifier.rb +1 -1
  12. data/lib/mongo_adapter/property/array.rb +10 -0
  13. data/lib/mongo_adapter/property/db_ref.rb +17 -0
  14. data/lib/mongo_adapter/property/hash.rb +27 -0
  15. data/lib/mongo_adapter/property/object_id.rb +47 -0
  16. data/lib/mongo_adapter/query.rb +42 -45
  17. data/lib/mongo_adapter/rails/storage.rb +15 -0
  18. data/lib/mongo_adapter/resource.rb +0 -130
  19. data/lib/mongo_adapter/support/class.rb +11 -0
  20. data/lib/mongo_adapter/support/date.rb +11 -0
  21. data/lib/mongo_adapter/support/date_time.rb +12 -0
  22. data/lib/mongo_adapter/support/object.rb +9 -0
  23. data/spec/legacy/adapter_spec.rb +9 -6
  24. data/spec/legacy/associations_spec.rb +37 -29
  25. data/spec/legacy/property_spec.rb +4 -3
  26. data/spec/legacy/sti_spec.rb +1 -2
  27. data/spec/lib/cleanup_models.rb +0 -1
  28. data/spec/public/aggregates_spec.rb +171 -0
  29. data/spec/public/model_spec.rb +8 -22
  30. data/spec/public/modifier_spec.rb +109 -0
  31. data/spec/public/properties/db_ref_spec.rb +17 -0
  32. data/spec/public/properties/object_id_spec.rb +15 -0
  33. data/spec/public/resource_spec.rb +2 -383
  34. data/spec/public/shared/object_id_shared_spec.rb +16 -39
  35. data/spec/spec_helper.rb +0 -4
  36. metadata +87 -117
  37. data/.gitignore +0 -9
  38. data/lib/mongo_adapter/embedded_model.rb +0 -187
  39. data/lib/mongo_adapter/embedded_resource.rb +0 -134
  40. data/lib/mongo_adapter/embedments/one_to_many.rb +0 -144
  41. data/lib/mongo_adapter/embedments/one_to_one.rb +0 -57
  42. data/lib/mongo_adapter/embedments/relationship.rb +0 -258
  43. data/lib/mongo_adapter/model/embedment.rb +0 -215
  44. data/lib/mongo_adapter/types/date.rb +0 -24
  45. data/lib/mongo_adapter/types/date_time.rb +0 -28
  46. data/lib/mongo_adapter/types/db_ref.rb +0 -65
  47. data/lib/mongo_adapter/types/discriminator.rb +0 -32
  48. data/lib/mongo_adapter/types/object_id.rb +0 -72
  49. data/lib/mongo_adapter/types/objects.rb +0 -31
  50. data/spec/legacy/embedded_resource_spec.rb +0 -157
  51. data/spec/legacy/embedments_spec.rb +0 -177
  52. data/spec/legacy/modifier_spec.rb +0 -81
  53. data/spec/public/embedded_collection_spec.rb +0 -61
  54. data/spec/public/embedded_resource_spec.rb +0 -220
  55. data/spec/public/model/embedment_spec.rb +0 -186
  56. data/spec/public/shared/model_embedments_spec.rb +0 -338
  57. data/spec/public/types/df_ref_spec.rb +0 -6
  58. data/spec/public/types/discriminator_spec.rb +0 -118
  59. data/spec/public/types/embedded_array_spec.rb +0 -55
  60. data/spec/public/types/embedded_hash_spec.rb +0 -83
  61. data/spec/public/types/object_id_spec.rb +0 -6
  62. data/spec/semipublic/embedded_model_spec.rb +0 -43
  63. data/spec/semipublic/model/embedment_spec.rb +0 -42
  64. data/spec/semipublic/resource_spec.rb +0 -70
data/Gemfile ADDED
@@ -0,0 +1,27 @@
1
+ source 'http://rubygems.org'
2
+
3
+ group :runtime do
4
+ MONGO_VERSION = '~> 1.2.4'
5
+
6
+ # MongoDB driver
7
+ gem 'mongo', MONGO_VERSION
8
+
9
+ # DataMapper libs
10
+ DM_VERSION = '~> 1.1.0'
11
+
12
+ gem 'dm-core', DM_VERSION
13
+ gem 'dm-aggregates', DM_VERSION
14
+ gem 'dm-migrations', DM_VERSION
15
+ end
16
+
17
+ group :development do
18
+ gem 'rake'
19
+ gem 'rcov'
20
+ gem 'rspec', '~> 1.3'
21
+ gem 'jeweler', '~> 1.5.1'
22
+ gem 'yard', '~> 0.5'
23
+ end
24
+
25
+ group :quality do
26
+ gem 'yardstick', '~> 0.1'
27
+ end
@@ -1,5 +1,16 @@
1
1
  = DataMapper MongoDB Adapter
2
2
 
3
+ == Status
4
+
5
+ The adapter is going through a major re-work as DataMapper will soon support EmbeddedValue (see: http://wiki.github.com/datamapper/dm-core/roadmap)
6
+ and the adapter will significantly benefit from that fact as there won't be a need to hack around DM's private API like
7
+ it used to be. Apart from embedded docs support there's plenty of work that needs to be done around MongoDB's modifier
8
+ operators (http://www.mongodb.org/display/DOCS/Updating). With these things done we can start thinking about releasing 1.0.
9
+
10
+ Contributors are most welcome! In case of any questions you can find me on #datamapper IRC channel.
11
+
12
+ solnic
13
+
3
14
  Useful links:
4
15
 
5
16
  * http://github.com/solnic/dm-mongo-adapter
@@ -10,13 +21,13 @@ Useful links:
10
21
 
11
22
  Ruby gems
12
23
 
13
- * dm-core ~> 0.10.2
14
- * dm-aggregates ~> 0.10.2
15
- * mongo ~> 0.18.3
24
+ * dm-core ~> 1.1.0
25
+ * dm-aggregates ~> 1.1.0
26
+ * mongo ~> 1.2.4
16
27
 
17
28
  == Install
18
29
 
19
- gem install dm-mongo-adapter --pre
30
+ gem install dm-mongo-adapter
20
31
 
21
32
  == Synopsis
22
33
 
@@ -25,35 +36,13 @@ Ruby gems
25
36
  :database => 'my_mongo_db',
26
37
  )
27
38
 
28
- # Define embedded resources
29
- class Address
30
- include DataMapper::Mongo::EmbeddedResource
31
-
32
- property :street, String
33
- property :city, String
34
- property :state, String
35
- property :postal_code, String
36
- end
37
-
38
- class Score
39
- include DataMapper::Mongo::EmbeddedResource
40
-
41
- property :grade, Float
42
- property :course_id, DBRef
43
-
44
- belongs_to :course
45
- end
46
-
47
- # Define top-level resources
39
+ # Define resources
48
40
  class Student
49
41
  include DataMapper::Mongo::Resource
50
42
 
51
43
  property :id, ObjectID
52
44
  property :name, String
53
45
  property :age, Integer
54
-
55
- embeds 1, :address, :model => Address
56
- embeds n, :scores
57
46
  end
58
47
 
59
48
  class Course
@@ -67,17 +56,9 @@ Ruby gems
67
56
  biology = Course.create(:name => "Biology")
68
57
  english = Course.create(:name => "English")
69
58
 
70
- # Nested attributes
71
- student = Student.create(:name => "John", :age => "26",
72
- :address => { :street => "123 Main St.", :city => "New York", :state => "NY", :postal_code => "10014" },
73
- :scores => [ { :grade => 4.0, :course_id => biology.id }, { :grade => 3.0, :course_id => english.id } ])
74
-
75
59
  # Queries
76
60
  Student.all(:age.gte => 20, :name => /oh/, :limit => 20, :order => [:age.asc])
77
61
 
78
- # Reaching into embedded objects
79
- Student.all(:"address.state" => "NY")
80
-
81
62
  # Array and Hash as a property
82
63
  class Zoo
83
64
  include DataMapper::Mongo::Resource
data/Rakefile CHANGED
@@ -7,22 +7,12 @@ CLOBBER.include ['pkg', '*.gem', 'doc', 'coverage', 'measurements']
7
7
  begin
8
8
  require 'jeweler'
9
9
  Jeweler::Tasks.new do |gem|
10
- gem.name = 'dm-mongo-adapter'
11
- gem.summary = 'MongoDB DataMapper Adapter'
12
- gem.email = "piotr.solnica@gmail.com"
13
- gem.homepage = "http://github.com/solnic/dm-mongo-adapter"
14
- gem.authors = ['Piotr Solnica']
15
-
16
- gem.has_rdoc = false
17
-
18
- # Dependencies
19
- gem.add_dependency 'dm-core', '~> 0.10.2'
20
- gem.add_dependency 'dm-aggregates', '~> 0.10.2'
21
- gem.add_dependency 'mongo', '~> 0.18.3'
22
- gem.add_dependency 'mongo_ext', '~> 0.18.3'
23
- gem.add_development_dependency 'rspec', '>= 1.3.0'
24
- gem.add_development_dependency 'yard', '>= 0.5'
25
- gem.add_development_dependency 'yardstick', '>= 0.1'
10
+ gem.name = 'dm-mongo-adapter'
11
+ gem.summary = 'MongoDB DataMapper Adapter'
12
+ gem.email = "piotr.solnica@gmail.com"
13
+ gem.homepage = "http://github.com/solnic/dm-mongo-adapter"
14
+ gem.authors = ['Piotr Solnica']
15
+ gem.has_rdoc = false
26
16
 
27
17
  # Exclude files
28
18
  gem.files.exclude "bin/console"
@@ -1,5 +1,5 @@
1
1
  ---
2
2
  :major: 0
3
- :minor: 2
3
+ :minor: 6
4
4
  :patch: 0
5
- :build: pre3
5
+ :build:
@@ -1,152 +1,131 @@
1
1
  # Generated by jeweler
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{dm-mongo-adapter}
8
- s.version = "0.2.0.pre3"
8
+ s.version = "0.6.0"
9
9
 
10
- s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Piotr Solnica"]
12
- s.date = %q{2010-02-22}
12
+ s.date = %q{2011-03-19}
13
13
  s.default_executable = %q{console}
14
14
  s.email = %q{piotr.solnica@gmail.com}
15
15
  s.executables = ["console"]
16
16
  s.extra_rdoc_files = [
17
17
  "LICENSE",
18
- "README.rdoc",
19
- "TODO"
18
+ "README.rdoc",
19
+ "TODO"
20
20
  ]
21
21
  s.files = [
22
- ".gitignore",
23
- "LICENSE",
24
- "README.rdoc",
25
- "Rakefile",
26
- "TODO",
27
- "VERSION.yml",
28
- "dm-mongo-adapter.gemspec",
29
- "lib/mongo_adapter.rb",
30
- "lib/mongo_adapter/adapter.rb",
31
- "lib/mongo_adapter/aggregates.rb",
32
- "lib/mongo_adapter/conditions.rb",
33
- "lib/mongo_adapter/embedded_model.rb",
34
- "lib/mongo_adapter/embedded_resource.rb",
35
- "lib/mongo_adapter/embedments/one_to_many.rb",
36
- "lib/mongo_adapter/embedments/one_to_one.rb",
37
- "lib/mongo_adapter/embedments/relationship.rb",
38
- "lib/mongo_adapter/migrations.rb",
39
- "lib/mongo_adapter/model.rb",
40
- "lib/mongo_adapter/model/embedment.rb",
41
- "lib/mongo_adapter/modifier.rb",
42
- "lib/mongo_adapter/query.rb",
43
- "lib/mongo_adapter/query/java_script.rb",
44
- "lib/mongo_adapter/resource.rb",
45
- "lib/mongo_adapter/types/date.rb",
46
- "lib/mongo_adapter/types/date_time.rb",
47
- "lib/mongo_adapter/types/db_ref.rb",
48
- "lib/mongo_adapter/types/discriminator.rb",
49
- "lib/mongo_adapter/types/object_id.rb",
50
- "lib/mongo_adapter/types/objects.rb",
51
- "script/performance.rb",
52
- "spec/legacy/README",
53
- "spec/legacy/adapter_shared_spec.rb",
54
- "spec/legacy/adapter_spec.rb",
55
- "spec/legacy/associations_spec.rb",
56
- "spec/legacy/embedded_resource_spec.rb",
57
- "spec/legacy/embedments_spec.rb",
58
- "spec/legacy/modifier_spec.rb",
59
- "spec/legacy/property_spec.rb",
60
- "spec/legacy/spec_helper.rb",
61
- "spec/legacy/sti_spec.rb",
62
- "spec/lib/cleanup_models.rb",
63
- "spec/lib/raw_connections.rb",
64
- "spec/public/embedded_collection_spec.rb",
65
- "spec/public/embedded_resource_spec.rb",
66
- "spec/public/model/embedment_spec.rb",
67
- "spec/public/model_spec.rb",
68
- "spec/public/resource_spec.rb",
69
- "spec/public/shared/model_embedments_spec.rb",
70
- "spec/public/shared/object_id_shared_spec.rb",
71
- "spec/public/types/df_ref_spec.rb",
72
- "spec/public/types/discriminator_spec.rb",
73
- "spec/public/types/embedded_array_spec.rb",
74
- "spec/public/types/embedded_hash_spec.rb",
75
- "spec/public/types/object_id_spec.rb",
76
- "spec/rcov.opts",
77
- "spec/semipublic/embedded_model_spec.rb",
78
- "spec/semipublic/model/embedment_spec.rb",
79
- "spec/semipublic/resource_spec.rb",
80
- "spec/spec.opts",
81
- "spec/spec_helper.rb",
82
- "tasks/spec.rake",
83
- "tasks/yard.rake",
84
- "tasks/yardstick.rake"
22
+ "Gemfile",
23
+ "LICENSE",
24
+ "README.rdoc",
25
+ "Rakefile",
26
+ "TODO",
27
+ "VERSION.yml",
28
+ "dm-mongo-adapter.gemspec",
29
+ "lib/mongo_adapter.rb",
30
+ "lib/mongo_adapter/adapter.rb",
31
+ "lib/mongo_adapter/aggregates.rb",
32
+ "lib/mongo_adapter/conditions.rb",
33
+ "lib/mongo_adapter/migrations.rb",
34
+ "lib/mongo_adapter/model.rb",
35
+ "lib/mongo_adapter/modifier.rb",
36
+ "lib/mongo_adapter/property/array.rb",
37
+ "lib/mongo_adapter/property/db_ref.rb",
38
+ "lib/mongo_adapter/property/hash.rb",
39
+ "lib/mongo_adapter/property/object_id.rb",
40
+ "lib/mongo_adapter/query.rb",
41
+ "lib/mongo_adapter/query/java_script.rb",
42
+ "lib/mongo_adapter/rails/storage.rb",
43
+ "lib/mongo_adapter/resource.rb",
44
+ "lib/mongo_adapter/support/class.rb",
45
+ "lib/mongo_adapter/support/date.rb",
46
+ "lib/mongo_adapter/support/date_time.rb",
47
+ "lib/mongo_adapter/support/object.rb",
48
+ "script/performance.rb",
49
+ "spec/legacy/README",
50
+ "spec/legacy/adapter_shared_spec.rb",
51
+ "spec/legacy/adapter_spec.rb",
52
+ "spec/legacy/associations_spec.rb",
53
+ "spec/legacy/property_spec.rb",
54
+ "spec/legacy/spec_helper.rb",
55
+ "spec/legacy/sti_spec.rb",
56
+ "spec/lib/cleanup_models.rb",
57
+ "spec/lib/raw_connections.rb",
58
+ "spec/public/aggregates_spec.rb",
59
+ "spec/public/model_spec.rb",
60
+ "spec/public/modifier_spec.rb",
61
+ "spec/public/properties/db_ref_spec.rb",
62
+ "spec/public/properties/object_id_spec.rb",
63
+ "spec/public/resource_spec.rb",
64
+ "spec/public/shared/object_id_shared_spec.rb",
65
+ "spec/rcov.opts",
66
+ "spec/spec.opts",
67
+ "spec/spec_helper.rb",
68
+ "tasks/spec.rake",
69
+ "tasks/yard.rake",
70
+ "tasks/yardstick.rake"
85
71
  ]
86
72
  s.homepage = %q{http://github.com/solnic/dm-mongo-adapter}
87
- s.rdoc_options = ["--charset=UTF-8"]
88
73
  s.require_paths = ["lib"]
89
- s.rubygems_version = %q{1.3.6}
74
+ s.rubygems_version = %q{1.6.2}
90
75
  s.summary = %q{MongoDB DataMapper Adapter}
91
76
  s.test_files = [
92
- "spec/semipublic/model/embedment_spec.rb",
93
- "spec/semipublic/resource_spec.rb",
94
- "spec/semipublic/embedded_model_spec.rb",
95
- "spec/public/types/discriminator_spec.rb",
96
- "spec/public/types/df_ref_spec.rb",
97
- "spec/public/types/embedded_hash_spec.rb",
98
- "spec/public/types/object_id_spec.rb",
99
- "spec/public/types/embedded_array_spec.rb",
100
- "spec/public/model/embedment_spec.rb",
101
- "spec/public/resource_spec.rb",
102
- "spec/public/shared/object_id_shared_spec.rb",
103
- "spec/public/shared/model_embedments_spec.rb",
104
- "spec/public/embedded_resource_spec.rb",
105
- "spec/public/embedded_collection_spec.rb",
106
- "spec/public/model_spec.rb",
107
- "spec/legacy/property_spec.rb",
108
- "spec/legacy/associations_spec.rb",
109
- "spec/legacy/modifier_spec.rb",
110
- "spec/legacy/adapter_shared_spec.rb",
111
- "spec/legacy/embedded_resource_spec.rb",
112
- "spec/legacy/sti_spec.rb",
113
- "spec/legacy/embedments_spec.rb",
114
- "spec/legacy/adapter_spec.rb",
115
- "spec/legacy/spec_helper.rb",
116
- "spec/spec_helper.rb",
117
- "spec/lib/cleanup_models.rb",
118
- "spec/lib/raw_connections.rb"
77
+ "spec/legacy/adapter_shared_spec.rb",
78
+ "spec/legacy/adapter_spec.rb",
79
+ "spec/legacy/associations_spec.rb",
80
+ "spec/legacy/property_spec.rb",
81
+ "spec/legacy/spec_helper.rb",
82
+ "spec/legacy/sti_spec.rb",
83
+ "spec/lib/cleanup_models.rb",
84
+ "spec/lib/raw_connections.rb",
85
+ "spec/public/aggregates_spec.rb",
86
+ "spec/public/model_spec.rb",
87
+ "spec/public/modifier_spec.rb",
88
+ "spec/public/properties/db_ref_spec.rb",
89
+ "spec/public/properties/object_id_spec.rb",
90
+ "spec/public/resource_spec.rb",
91
+ "spec/public/shared/object_id_shared_spec.rb",
92
+ "spec/spec_helper.rb"
119
93
  ]
120
94
 
121
95
  if s.respond_to? :specification_version then
122
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
123
96
  s.specification_version = 3
124
97
 
125
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
126
- s.add_runtime_dependency(%q<dm-core>, ["~> 0.10.2"])
127
- s.add_runtime_dependency(%q<dm-aggregates>, ["~> 0.10.2"])
128
- s.add_runtime_dependency(%q<mongo>, ["~> 0.18.3"])
129
- s.add_runtime_dependency(%q<mongo_ext>, ["~> 0.18.3"])
130
- s.add_development_dependency(%q<rspec>, [">= 1.3.0"])
131
- s.add_development_dependency(%q<yard>, [">= 0.5"])
132
- s.add_development_dependency(%q<yardstick>, [">= 0.1"])
98
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
99
+ s.add_runtime_dependency(%q<mongo>, ["~> 1.2.4"])
100
+ s.add_runtime_dependency(%q<dm-core>, ["~> 1.1.0"])
101
+ s.add_runtime_dependency(%q<dm-aggregates>, ["~> 1.1.0"])
102
+ s.add_runtime_dependency(%q<dm-migrations>, ["~> 1.1.0"])
103
+ s.add_development_dependency(%q<rake>, [">= 0"])
104
+ s.add_development_dependency(%q<rcov>, [">= 0"])
105
+ s.add_development_dependency(%q<rspec>, ["~> 1.3"])
106
+ s.add_development_dependency(%q<jeweler>, ["~> 1.5.1"])
107
+ s.add_development_dependency(%q<yard>, ["~> 0.5"])
133
108
  else
134
- s.add_dependency(%q<dm-core>, ["~> 0.10.2"])
135
- s.add_dependency(%q<dm-aggregates>, ["~> 0.10.2"])
136
- s.add_dependency(%q<mongo>, ["~> 0.18.3"])
137
- s.add_dependency(%q<mongo_ext>, ["~> 0.18.3"])
138
- s.add_dependency(%q<rspec>, [">= 1.3.0"])
139
- s.add_dependency(%q<yard>, [">= 0.5"])
140
- s.add_dependency(%q<yardstick>, [">= 0.1"])
109
+ s.add_dependency(%q<mongo>, ["~> 1.2.4"])
110
+ s.add_dependency(%q<dm-core>, ["~> 1.1.0"])
111
+ s.add_dependency(%q<dm-aggregates>, ["~> 1.1.0"])
112
+ s.add_dependency(%q<dm-migrations>, ["~> 1.1.0"])
113
+ s.add_dependency(%q<rake>, [">= 0"])
114
+ s.add_dependency(%q<rcov>, [">= 0"])
115
+ s.add_dependency(%q<rspec>, ["~> 1.3"])
116
+ s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
117
+ s.add_dependency(%q<yard>, ["~> 0.5"])
141
118
  end
142
119
  else
143
- s.add_dependency(%q<dm-core>, ["~> 0.10.2"])
144
- s.add_dependency(%q<dm-aggregates>, ["~> 0.10.2"])
145
- s.add_dependency(%q<mongo>, ["~> 0.18.3"])
146
- s.add_dependency(%q<mongo_ext>, ["~> 0.18.3"])
147
- s.add_dependency(%q<rspec>, [">= 1.3.0"])
148
- s.add_dependency(%q<yard>, [">= 0.5"])
149
- s.add_dependency(%q<yardstick>, [">= 0.1"])
120
+ s.add_dependency(%q<mongo>, ["~> 1.2.4"])
121
+ s.add_dependency(%q<dm-core>, ["~> 1.1.0"])
122
+ s.add_dependency(%q<dm-aggregates>, ["~> 1.1.0"])
123
+ s.add_dependency(%q<dm-migrations>, ["~> 1.1.0"])
124
+ s.add_dependency(%q<rake>, [">= 0"])
125
+ s.add_dependency(%q<rcov>, [">= 0"])
126
+ s.add_dependency(%q<rspec>, ["~> 1.3"])
127
+ s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
128
+ s.add_dependency(%q<yard>, ["~> 0.5"])
150
129
  end
151
130
  end
152
131
 
@@ -1,71 +1,28 @@
1
- if defined?(gem)
2
- gem 'dm-core', '~> 0.10.2'
3
- gem 'mongo', '~> 0.18'
4
- end
5
-
6
1
  require 'dm-core'
7
2
  require 'dm-aggregates'
8
3
  require 'mongo'
9
4
 
10
- dir = Pathname(__FILE__).dirname.expand_path / 'mongo_adapter'
11
-
12
- require dir / 'query'
13
- require dir / 'query' / 'java_script'
14
- require dir / 'conditions'
15
- require dir / 'types' / 'discriminator'
16
- require dir / 'types' / 'date_time'
17
- require dir / 'types' / 'date'
18
- require dir / 'types' / 'object_id'
19
- require dir / 'types' / 'db_ref'
20
- require dir / 'types' / 'objects'
21
-
22
- require dir / 'model' / 'embedment'
23
- require dir / 'model'
24
-
25
- require dir / 'resource'
26
- require dir / 'migrations'
27
-
28
- require dir / 'embedments' / 'relationship'
29
- require dir / 'embedments' / 'one_to_one'
30
- require dir / 'embedments' / 'one_to_many'
31
-
32
- require dir / 'embedded_model'
33
- require dir / 'embedded_resource'
34
- require dir / 'modifier'
35
-
36
- require dir / 'aggregates'
37
- require dir / 'adapter'
38
-
39
- module DataMapper
40
- module Mongo
41
- module QueryExtensions
42
- def self.included(base)
43
- # FIXME: figure out a cleaner approach than AMC
44
- base.class_eval <<-RUBY, __FILE__, __LINE__ + 1
45
- alias assert_valid_conditions_without_embedment assert_valid_conditions
46
- alias assert_valid_conditions assert_valid_conditions_with_embedment
47
- RUBY
48
- end
5
+ dir = Pathname(__FILE__).dirname.expand_path + 'mongo_adapter'
49
6
 
50
- def assert_valid_conditions_with_embedment(conditions)
51
- if conditions.is_a?(Hash) && model.respond_to?(:embedments) && !model.embedments.blank?
52
- conditions.each_key do |key|
53
- key_s = key.to_s
7
+ require dir + 'query'
8
+ require dir + 'query' + 'java_script'
9
+ require dir + 'conditions'
54
10
 
55
- name = if key_s.include?('.')
56
- key_s.split('.')[0].to_sym
57
- else
58
- key
59
- end
11
+ require dir + 'property' + 'object_id'
12
+ require dir + 'property' + 'db_ref'
13
+ require dir + 'property' + 'array'
14
+ require dir + 'property' + 'hash'
60
15
 
61
- conditions.delete(key) if model.embedments.key?(name)
62
- end
63
- end
16
+ require dir + 'support' + 'class'
17
+ require dir + 'support' + 'date'
18
+ require dir + 'support' + 'date_time'
19
+ require dir + 'support' + 'object'
64
20
 
65
- assert_valid_conditions_without_embedment(conditions)
66
- end
67
- end
68
- end
69
- end
21
+ require dir + 'migrations'
22
+ require dir + 'model'
23
+ require dir + 'resource'
24
+ require dir + 'migrations'
25
+ require dir + 'modifier'
70
26
 
71
- DataMapper::Query.send(:include, DataMapper::Mongo::QueryExtensions)
27
+ require dir + 'aggregates'
28
+ require dir + 'adapter'