volt-mongo 0.0.2 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/app/mongo/lib/mongo_adaptor_client.rb +5 -0
- data/app/mongo/lib/mongo_adaptor_server.rb +41 -7
- data/volt-mongo.gemspec +0 -2
- metadata +2 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a143e4b5a3dd0d8ed8fa9733f7f0d8c2130aa6b9
|
4
|
+
data.tar.gz: b322267be712e962689a1492817109bea47fdd13
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fb0f274044351a4adb16b2216fe2e36a7abc562e49940eb9ca083f8fdc21354045918f7a0fe920fb208a4d49748c73ab83cd0ac9c988f495ae9a43d699f10bf4
|
7
|
+
data.tar.gz: 4b9836aaa072833e975c660f94b995bfb9bc92a1c37b1fc444713391363d878b4638abed7e99e9c0d66a8964656cfd53e4bff01df433a3f797435af3bf0330d0
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0
|
1
|
+
0.1.0
|
@@ -14,12 +14,17 @@ module Volt
|
|
14
14
|
def order(sort)
|
15
15
|
add_query_part(:sort, sort)
|
16
16
|
end
|
17
|
+
|
18
|
+
# def count
|
19
|
+
# add_query_part(:count).then
|
20
|
+
# end
|
17
21
|
end
|
18
22
|
|
19
23
|
# Due to the way define_method works, we need to remove the generated
|
20
24
|
# methods from data_store_methods before we over-ride them.
|
21
25
|
Volt::Persistors::ArrayStore.send(:remove_method, :where)
|
22
26
|
Volt::Persistors::ArrayStore.send(:remove_method, :order)
|
27
|
+
# Volt::Persistors::ArrayStore.send(:remove_method, :count)
|
23
28
|
|
24
29
|
# include mongo's methods on ArrayStore
|
25
30
|
Volt::Persistors::ArrayStore.send(:include, MongoArrayStore)
|
@@ -1,11 +1,38 @@
|
|
1
1
|
require 'mongo'
|
2
2
|
|
3
|
+
# We need to be able to deeply stringify keys for mongo
|
4
|
+
class Hash
|
5
|
+
def nested_stringify_keys
|
6
|
+
self.stringify_keys.map do |key, value|
|
7
|
+
if value.is_a?(Hash)
|
8
|
+
value = value.nested_stringify_keys
|
9
|
+
end
|
10
|
+
|
11
|
+
[key, value]
|
12
|
+
end.to_h
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
3
16
|
module Volt
|
4
17
|
class DataStore
|
5
18
|
class MongoAdaptorServer < BaseAdaptorServer
|
6
19
|
attr_reader :db, :mongo_db
|
7
20
|
|
8
|
-
|
21
|
+
# check if the database can be connected to.
|
22
|
+
# @return Boolean
|
23
|
+
def connected?
|
24
|
+
begin
|
25
|
+
db
|
26
|
+
|
27
|
+
true
|
28
|
+
rescue ::Mongo::ConnectionFailure => e
|
29
|
+
false
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def db
|
34
|
+
return @db if @db
|
35
|
+
|
9
36
|
if Volt.config.db_uri.present?
|
10
37
|
@mongo_db ||= ::Mongo::MongoClient.from_uri(Volt.config.db_uri)
|
11
38
|
@db ||= @mongo_db.db(Volt.config.db_uri.split('/').last || Volt.config.db_name)
|
@@ -13,26 +40,28 @@ module Volt
|
|
13
40
|
@mongo_db ||= ::Mongo::MongoClient.new(Volt.config.db_host, Volt.config.db_port)
|
14
41
|
@db ||= @mongo_db.db(Volt.config.db_name)
|
15
42
|
end
|
43
|
+
|
44
|
+
@db
|
16
45
|
end
|
17
46
|
|
18
47
|
def insert(collection, values)
|
19
|
-
|
48
|
+
db[collection].insert(values)
|
20
49
|
end
|
21
50
|
|
22
51
|
def update(collection, values)
|
23
|
-
values = values.
|
52
|
+
values = values.nested_stringify_keys
|
24
53
|
|
25
54
|
to_mongo_id!(values)
|
26
55
|
# TODO: Seems mongo is dumb and doesn't let you upsert with custom id's
|
27
56
|
begin
|
28
|
-
|
57
|
+
db[collection].insert(values)
|
29
58
|
rescue ::Mongo::OperationFailure => error
|
30
59
|
# Really mongo client?
|
31
60
|
if error.message[/^11000[:]/]
|
32
61
|
# Update because the id already exists
|
33
62
|
update_values = values.dup
|
34
63
|
id = update_values.delete('_id')
|
35
|
-
|
64
|
+
db[collection].update({ '_id' => id }, update_values)
|
36
65
|
else
|
37
66
|
return { error: error.message }
|
38
67
|
end
|
@@ -44,7 +73,7 @@ module Volt
|
|
44
73
|
def query(collection, query)
|
45
74
|
allowed_methods = %w(find skip limit count)
|
46
75
|
|
47
|
-
result =
|
76
|
+
result = db[collection]
|
48
77
|
|
49
78
|
query.each do |query_part|
|
50
79
|
method_name, *args = query_part
|
@@ -86,7 +115,12 @@ module Volt
|
|
86
115
|
query['_id'] = query.delete('id')
|
87
116
|
end
|
88
117
|
|
89
|
-
|
118
|
+
db[collection].remove(query)
|
119
|
+
end
|
120
|
+
|
121
|
+
# remove the collection entirely
|
122
|
+
def drop_collection(collection)
|
123
|
+
db.drop_collection(collection)
|
90
124
|
end
|
91
125
|
|
92
126
|
def drop_database
|
data/volt-mongo.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: volt-mongo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Stout
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05
|
11
|
+
date: 2015-06-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mongo
|
@@ -24,20 +24,6 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 1.9.0
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: volt
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 0.9.2
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: 0.9.2
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: rake
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|