mince_mongo_db 1.0.0.pre.1 → 1.0.0.pre.2

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.
@@ -0,0 +1,43 @@
1
+ module MinceMongoDb # :nodoc:
2
+ require 'singleton'
3
+
4
+ # = Config
5
+ #
6
+ # Config specifies the configuration settings
7
+ #
8
+ # @author Matt Simpson
9
+ class Config
10
+ include Singleton
11
+
12
+ # Returns the primary key identifier for records. This is necessary because not all databases use the same
13
+ # primary key.
14
+ #
15
+ # @return [Symbol] the name of the primary key field.
16
+ def self.primary_key
17
+ instance.primary_key
18
+ end
19
+
20
+ def self.database_name
21
+ instance.database_name
22
+ end
23
+
24
+ def self.database_name=(val)
25
+ instance.database_name = val
26
+ end
27
+
28
+ def self.test_env_number
29
+ ENV['TEST_ENV_NUMBER']
30
+ end
31
+
32
+ attr_accessor :primary_key, :database_name
33
+
34
+ def initialize
35
+ self.primary_key = :_id
36
+ self.database_name = 'mince'
37
+ end
38
+
39
+ def database_name=(name)
40
+ @database_name = [name, self.class.test_env_number].compact.join("-")
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,32 @@
1
+ module MinceMongoDb
2
+ require_relative 'config'
3
+ require 'mongo'
4
+ require 'singleton'
5
+
6
+ class Connection
7
+ include Singleton
8
+
9
+ attr_accessor :connection, :db
10
+
11
+ def self.connection
12
+ instance.connection
13
+ end
14
+
15
+ def self.db
16
+ instance.db
17
+ end
18
+
19
+ def initialize
20
+ self.connection = Mongo::Connection.new
21
+ end
22
+
23
+ def connection=(con)
24
+ @connection = con
25
+ self.db = connection.db(database_name)
26
+ end
27
+
28
+ def database_name
29
+ Config.database_name
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,26 @@
1
+ module MinceMongoDb
2
+ require 'singleton'
3
+ require_relative 'connection'
4
+
5
+ class DataStore
6
+ include Singleton
7
+
8
+ def self.collection(collection_name)
9
+ instance.collection(collection_name)
10
+ end
11
+
12
+ def self.db
13
+ instance.db
14
+ end
15
+
16
+ def collection(collection_name)
17
+ db.collection(collection_name)
18
+ end
19
+
20
+ attr_accessor :db
21
+
22
+ def initialize
23
+ self.db = Connection.db
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,112 @@
1
+ module MinceMongoDb
2
+ module Interface
3
+ require_relative 'data_store'
4
+ require_relative 'config'
5
+
6
+ def self.generate_unique_id(*args)
7
+ BSON::ObjectId.new.to_s
8
+ end
9
+
10
+ def self.primary_key
11
+ Config.primary_key
12
+ end
13
+
14
+ def self.delete_field(collection_name, key)
15
+ collection(collection_name).update({}, {"$unset" => { key => 1 } }, multi: true)
16
+ end
17
+
18
+ def self.delete_by_params(collection_name, params)
19
+ collection(collection_name).remove(params)
20
+ end
21
+
22
+ def self.add(collection_name, hash)
23
+ collection(collection_name).insert(hash)
24
+ end
25
+
26
+ def self.replace(collection_name, hash)
27
+ collection(collection_name).update({primary_key => hash[primary_key]}, hash)
28
+ end
29
+
30
+ def self.update_field_with_value(collection_name, primary_key_value, field_name, new_value)
31
+ collection(collection_name).update({primary_key => primary_key_value}, {'$set' => { field_name => new_value } })
32
+ end
33
+
34
+ def self.increment_field_by_amount(collection_name, primary_key_value, field_name, amount)
35
+ collection(collection_name).update({primary_key => primary_key_value}, {'$inc' => { field_name => amount } })
36
+ end
37
+
38
+ def self.get_all_for_key_with_value(collection_name, key, value)
39
+ get_by_params(collection_name, key.to_s => value)
40
+ end
41
+
42
+ def self.get_for_key_with_value(collection_name, key, value)
43
+ get_all_for_key_with_value(collection_name, key, value).first
44
+ end
45
+
46
+ def self.get_by_params(collection_name, hash)
47
+ collection(collection_name).find(hash)
48
+ end
49
+
50
+ def self.find_all(collection_name)
51
+ collection(collection_name).find
52
+ end
53
+
54
+ def self.find(collection_name, key, value)
55
+ collection(collection_name).find_one({key.to_s => value})
56
+ end
57
+
58
+ def self.push_to_array(collection_name, identifying_key, identifying_value, array_key, value_to_push)
59
+ collection(collection_name).update({identifying_key.to_s => identifying_value}, {'$push' => {array_key.to_s => value_to_push}})
60
+ end
61
+
62
+ def self.remove_from_array(collection_name, identifying_key, identifying_value, array_key, value_to_remove)
63
+ collection(collection_name).update({identifying_key.to_s => identifying_value}, {'$pull' => {array_key.to_s => value_to_remove}})
64
+ end
65
+
66
+ def self.containing_any(collection_name, key, values)
67
+ collection(collection_name).find({key.to_s => {"$in" => values}})
68
+ end
69
+
70
+ def self.array_contains(collection_name, key, value)
71
+ collection(collection_name).find(key.to_s => value)
72
+ end
73
+
74
+ def self.clear
75
+ db.collection_names.each do |collection_name|
76
+ db.drop_collection collection_name unless collection_name.include?('system')
77
+ end
78
+ end
79
+
80
+ def self.delete_collection(collection_name)
81
+ collection(collection_name).drop
82
+ end
83
+
84
+ def self.insert(collection_name, data)
85
+ data.each do |datum|
86
+ add collection_name, datum
87
+ end
88
+ end
89
+
90
+ def self.set_data(data)
91
+ clear
92
+
93
+ data.each do |key, value|
94
+ insert key, value
95
+ end
96
+ end
97
+
98
+ def self.data
99
+ db.collection_names.map do |collection_name|
100
+ find_all collection_name
101
+ end
102
+ end
103
+
104
+ def self.collection(collection_name)
105
+ DataStore.collection(collection_name)
106
+ end
107
+
108
+ def self.db
109
+ DataStore.db
110
+ end
111
+ end
112
+ end
@@ -0,0 +1,19 @@
1
+ module MinceMongoDb
2
+ module Version
3
+ def self.major
4
+ 1
5
+ end
6
+
7
+ def self.minor
8
+ 0
9
+ end
10
+
11
+ def self.patch
12
+ "0.pre.2"
13
+ end
14
+ end
15
+
16
+ def self.version
17
+ [Version.major, Version.minor, Version.patch].join(".")
18
+ end
19
+ end
@@ -0,0 +1,7 @@
1
+ module MinceMongoDb
2
+ require_relative 'mince_mongo_db/config'
3
+ require_relative 'mince_mongo_db/connection'
4
+ require_relative 'mince_mongo_db/version'
5
+ require_relative 'mince_mongo_db/data_store'
6
+ require_relative 'mince_mongo_db/interface'
7
+ end
@@ -1,9 +1,9 @@
1
- require_relative '../../lib/mongo_db'
1
+ require_relative '../../lib/mince_mongo_db'
2
2
  require 'mince/shared_examples/interface_example'
3
3
 
4
4
  describe 'Mince Interface with MongoDb' do
5
5
  before do
6
- Mince::Config.interface = Mince::MongoDb::Interface
6
+ Mince::Config.interface = MinceMongoDb::Interface
7
7
  end
8
8
 
9
9
  it_behaves_like 'a mince interface'
@@ -1,6 +1,6 @@
1
- require_relative '../../../lib/mongo_db/config'
1
+ require_relative '../../../lib/mince_mongo_db/config'
2
2
 
3
- describe Mince::MongoDb::Config do
3
+ describe MinceMongoDb::Config do
4
4
  it 'contains the primary key to used by the db interface' do
5
5
  described_class.primary_key.should == :_id
6
6
  end
@@ -1,6 +1,6 @@
1
- require_relative '../../../lib/mongo_db/connection'
1
+ require_relative '../../../lib/mince_mongo_db/connection'
2
2
 
3
- describe Mince::MongoDb::Connection do
3
+ describe MinceMongoDb::Connection do
4
4
  subject { described_class.instance }
5
5
 
6
6
  let(:mongo_connection) { mock 'a mongo connection object', :db => db }
@@ -8,7 +8,7 @@ describe Mince::MongoDb::Connection do
8
8
  let(:database_name) { mock }
9
9
 
10
10
  before do
11
- Mince::MongoDb::Config.stub(database_name: database_name)
11
+ MinceMongoDb::Config.stub(database_name: database_name)
12
12
  subject.connection = mongo_connection
13
13
  end
14
14
 
@@ -1,6 +1,6 @@
1
- require_relative '../../../lib/mongo_db/data_store'
1
+ require_relative '../../../lib/mince_mongo_db/data_store'
2
2
 
3
- describe Mince::MongoDb::DataStore do
3
+ describe MinceMongoDb::DataStore do
4
4
  let(:db) { mock }
5
5
  let(:collection) { mock }
6
6
  let(:collection_name) { mock }
@@ -1,9 +1,9 @@
1
- require_relative '../../../lib/mongo_db/interface'
1
+ require_relative '../../../lib/mince_mongo_db/interface'
2
2
 
3
- describe Mince::MongoDb::Interface do
3
+ describe MinceMongoDb::Interface do
4
4
 
5
5
  let(:interface) { described_class }
6
- let(:primary_key) { Mince::MongoDb::Config.primary_key }
6
+ let(:primary_key) { MinceMongoDb::Config.primary_key }
7
7
 
8
8
  let(:db) { mock 'mongo database' }
9
9
  let(:mongo_data_store_connection) { mock 'mongo_data_store_connection', :db => db}
@@ -15,9 +15,9 @@ describe Mince::MongoDb::Interface do
15
15
  let(:return_data) { mock 'return data' }
16
16
 
17
17
  before do
18
- Mince::MongoDb::DataStore.stub(:db).and_return(db)
19
- Mince::MongoDb::DataStore.stub(:collection).with(collection_name).and_return(collection)
20
- Mince::MongoDb::Config.stub(primary_key: primary_key)
18
+ MinceMongoDb::DataStore.stub(:db).and_return(db)
19
+ MinceMongoDb::DataStore.stub(:collection).with(collection_name).and_return(collection)
20
+ MinceMongoDb::Config.stub(primary_key: primary_key)
21
21
  end
22
22
 
23
23
  it 'uses the correct collection' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mince_mongo_db
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.pre.1
4
+ version: 1.0.0.pre.2
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2012-11-01 00:00:00.000000000 Z
14
+ date: 2012-11-02 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: mongo
@@ -197,17 +197,17 @@ executables: []
197
197
  extensions: []
198
198
  extra_rdoc_files: []
199
199
  files:
200
- - lib/mongo_db.rb
201
- - lib/mongo_db/config.rb
202
- - lib/mongo_db/connection.rb
203
- - lib/mongo_db/data_store.rb
204
- - lib/mongo_db/interface.rb
205
- - lib/mongo_db/version.rb
200
+ - lib/mince_mongo_db.rb
201
+ - lib/mince_mongo_db/config.rb
202
+ - lib/mince_mongo_db/connection.rb
203
+ - lib/mince_mongo_db/data_store.rb
204
+ - lib/mince_mongo_db/interface.rb
205
+ - lib/mince_mongo_db/version.rb
206
206
  - spec/integration/mince_interface_spec.rb
207
- - spec/units/mongo_db/config_spec.rb
208
- - spec/units/mongo_db/connection_spec.rb
209
- - spec/units/mongo_db/data_store_spec.rb
210
- - spec/units/mongo_db/interface_spec.rb
207
+ - spec/units/mince_mongo_db/config_spec.rb
208
+ - spec/units/mince_mongo_db/connection_spec.rb
209
+ - spec/units/mince_mongo_db/data_store_spec.rb
210
+ - spec/units/mince_mongo_db/interface_spec.rb
211
211
  homepage: https://github.com/coffeencoke/mince_mongo_db
212
212
  licenses: []
213
213
  post_install_message:
@@ -222,7 +222,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
222
222
  version: '0'
223
223
  segments:
224
224
  - 0
225
- hash: 682498058529759032
225
+ hash: -3411619680046133823
226
226
  required_rubygems_version: !ruby/object:Gem::Requirement
227
227
  none: false
228
228
  requirements:
@@ -237,8 +237,8 @@ specification_version: 3
237
237
  summary: Lightweight MongoDB ORM for Ruby.
238
238
  test_files:
239
239
  - spec/integration/mince_interface_spec.rb
240
- - spec/units/mongo_db/config_spec.rb
241
- - spec/units/mongo_db/connection_spec.rb
242
- - spec/units/mongo_db/data_store_spec.rb
243
- - spec/units/mongo_db/interface_spec.rb
240
+ - spec/units/mince_mongo_db/config_spec.rb
241
+ - spec/units/mince_mongo_db/connection_spec.rb
242
+ - spec/units/mince_mongo_db/data_store_spec.rb
243
+ - spec/units/mince_mongo_db/interface_spec.rb
244
244
  has_rdoc:
@@ -1,45 +0,0 @@
1
- module Mince # :nodoc:
2
- module MongoDb # :nodoc:
3
- require 'singleton'
4
-
5
- # = Config
6
- #
7
- # Config specifies the configuration settings
8
- #
9
- # @author Matt Simpson
10
- class Config
11
- include Singleton
12
-
13
- # Returns the primary key identifier for records. This is necessary because not all databases use the same
14
- # primary key.
15
- #
16
- # @return [Symbol] the name of the primary key field.
17
- def self.primary_key
18
- instance.primary_key
19
- end
20
-
21
- def self.database_name
22
- instance.database_name
23
- end
24
-
25
- def self.database_name=(val)
26
- instance.database_name = val
27
- end
28
-
29
- def self.test_env_number
30
- ENV['TEST_ENV_NUMBER']
31
- end
32
-
33
- attr_accessor :primary_key, :database_name
34
-
35
- def initialize
36
- self.primary_key = :_id
37
- self.database_name = 'mince'
38
- end
39
-
40
- def database_name=(name)
41
- @database_name = [name, self.class.test_env_number].compact.join("-")
42
- end
43
- end
44
- end
45
- end
@@ -1,34 +0,0 @@
1
- module Mince
2
- module MongoDb
3
- require_relative 'config'
4
- require 'mongo'
5
- require 'singleton'
6
-
7
- class Connection
8
- include Singleton
9
-
10
- attr_accessor :connection, :db
11
-
12
- def self.connection
13
- instance.connection
14
- end
15
-
16
- def self.db
17
- instance.db
18
- end
19
-
20
- def initialize
21
- self.connection = Mongo::Connection.new
22
- end
23
-
24
- def connection=(con)
25
- @connection = con
26
- self.db = connection.db(database_name)
27
- end
28
-
29
- def database_name
30
- Config.database_name
31
- end
32
- end
33
- end
34
- end
@@ -1,28 +0,0 @@
1
- module Mince
2
- module MongoDb
3
- require 'singleton'
4
- require_relative 'connection'
5
-
6
- class DataStore
7
- include Singleton
8
-
9
- def self.collection(collection_name)
10
- instance.collection(collection_name)
11
- end
12
-
13
- def self.db
14
- instance.db
15
- end
16
-
17
- def collection(collection_name)
18
- db.collection(collection_name)
19
- end
20
-
21
- attr_accessor :db
22
-
23
- def initialize
24
- self.db = Mince::MongoDb::Connection.db
25
- end
26
- end
27
- end
28
- end
@@ -1,114 +0,0 @@
1
- module Mince
2
- module MongoDb
3
- module Interface
4
- require_relative 'data_store'
5
- require_relative 'config'
6
-
7
- def self.generate_unique_id(*args)
8
- BSON::ObjectId.new.to_s
9
- end
10
-
11
- def self.primary_key
12
- Config.primary_key
13
- end
14
-
15
- def self.delete_field(collection_name, key)
16
- collection(collection_name).update({}, {"$unset" => { key => 1 } }, multi: true)
17
- end
18
-
19
- def self.delete_by_params(collection_name, params)
20
- collection(collection_name).remove(params)
21
- end
22
-
23
- def self.add(collection_name, hash)
24
- collection(collection_name).insert(hash)
25
- end
26
-
27
- def self.replace(collection_name, hash)
28
- collection(collection_name).update({primary_key => hash[primary_key]}, hash)
29
- end
30
-
31
- def self.update_field_with_value(collection_name, primary_key_value, field_name, new_value)
32
- collection(collection_name).update({primary_key => primary_key_value}, {'$set' => { field_name => new_value } })
33
- end
34
-
35
- def self.increment_field_by_amount(collection_name, primary_key_value, field_name, amount)
36
- collection(collection_name).update({primary_key => primary_key_value}, {'$inc' => { field_name => amount } })
37
- end
38
-
39
- def self.get_all_for_key_with_value(collection_name, key, value)
40
- get_by_params(collection_name, key.to_s => value)
41
- end
42
-
43
- def self.get_for_key_with_value(collection_name, key, value)
44
- get_all_for_key_with_value(collection_name, key, value).first
45
- end
46
-
47
- def self.get_by_params(collection_name, hash)
48
- collection(collection_name).find(hash)
49
- end
50
-
51
- def self.find_all(collection_name)
52
- collection(collection_name).find
53
- end
54
-
55
- def self.find(collection_name, key, value)
56
- collection(collection_name).find_one({key.to_s => value})
57
- end
58
-
59
- def self.push_to_array(collection_name, identifying_key, identifying_value, array_key, value_to_push)
60
- collection(collection_name).update({identifying_key.to_s => identifying_value}, {'$push' => {array_key.to_s => value_to_push}})
61
- end
62
-
63
- def self.remove_from_array(collection_name, identifying_key, identifying_value, array_key, value_to_remove)
64
- collection(collection_name).update({identifying_key.to_s => identifying_value}, {'$pull' => {array_key.to_s => value_to_remove}})
65
- end
66
-
67
- def self.containing_any(collection_name, key, values)
68
- collection(collection_name).find({key.to_s => {"$in" => values}})
69
- end
70
-
71
- def self.array_contains(collection_name, key, value)
72
- collection(collection_name).find(key.to_s => value)
73
- end
74
-
75
- def self.clear
76
- db.collection_names.each do |collection_name|
77
- db.drop_collection collection_name unless collection_name.include?('system')
78
- end
79
- end
80
-
81
- def self.delete_collection(collection_name)
82
- collection(collection_name).drop
83
- end
84
-
85
- def self.insert(collection_name, data)
86
- data.each do |datum|
87
- add collection_name, datum
88
- end
89
- end
90
-
91
- def self.set_data(data)
92
- clear
93
-
94
- data.each do |key, value|
95
- insert key, value
96
- end
97
- end
98
-
99
- def self.data
100
- db.collection_names.map do |collection_name|
101
- find_all collection_name
102
- end
103
- end
104
-
105
- def self.collection(collection_name)
106
- DataStore.collection(collection_name)
107
- end
108
-
109
- def self.db
110
- DataStore.db
111
- end
112
- end
113
- end
114
- end
@@ -1,21 +0,0 @@
1
- module Mince
2
- module MongoDb
3
- module Version
4
- def self.major
5
- 1
6
- end
7
-
8
- def self.minor
9
- 0
10
- end
11
-
12
- def self.patch
13
- "0.pre.1"
14
- end
15
- end
16
-
17
- def self.version
18
- [Version.major, Version.minor, Version.patch].join(".")
19
- end
20
- end
21
- end
data/lib/mongo_db.rb DELETED
@@ -1,9 +0,0 @@
1
- module Mince
2
- module MongoDb
3
- require_relative 'mongo_db/config'
4
- require_relative 'mongo_db/connection'
5
- require_relative 'mongo_db/version'
6
- require_relative 'mongo_db/data_store'
7
- require_relative 'mongo_db/interface'
8
- end
9
- end