mumukit-service 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/lib/mumukit/service/collection.rb +14 -1
- data/lib/mumukit/service/document.rb +4 -0
- data/lib/mumukit/service/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZTBlYjFkZDkwOGIzMzVmNDVlNGIwZjVlZjQ0N2IwNGJhZDZhN2Y3ZA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NmEyZWYzZDUyYmJkZjFiZWFlZmMzZjRiMGRlMmU0MDhhMDZjMDgwOA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
Nzk0NGU1NmVhZDAzZDhhOTJiMTlkNmFkMWYzNjcyMWM2NzJhMTgwYmFkMmE5
|
10
|
+
MWQxNDM5NGQyMGYxYjYzN2U2NWY4NzM0Nzk1NGNhYmQyMmZiMDJkNTNkNTRj
|
11
|
+
OWE5MWYwNzBmMGE5ZjIyMDQ0OTI0ZmM0ZTAzNGRlNTRmMDNlMDc=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NDQzZTg5ODIwNGE0NDUyNmZjMjgzZDhlY2IyYTVkYzg3MzBhYjU5NDMzMzJk
|
14
|
+
YzhlMTE5YzI1NWY1NjgxNjk2YzNiMWRhY2ZkNWY2NGJlZWIxYmQ2Y2FlMDQ3
|
15
|
+
YTZiOWQyZWYzMWRhNmQzNzIyZjM2NGNmNTEzOWIwYzQ4NmI4ZGM=
|
@@ -52,6 +52,19 @@ module Mumukit::Service
|
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
|
+
def upsert_by!(field, document)
|
56
|
+
query = {field => document[field]}
|
57
|
+
document.validate!
|
58
|
+
|
59
|
+
with_id(id_for_query(query) || new_id) do |id|
|
60
|
+
mongo_collection.update_one(query, document.raw.merge(id), {upsert: true})
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def id_for_query(query)
|
65
|
+
mongo_collection.find(query).projection(id: 1).first.try { |it| it[:id] }
|
66
|
+
end
|
67
|
+
|
55
68
|
def uniq(key, filter, uniq_value)
|
56
69
|
distinct(key, filter).uniq { |result| result[uniq_value] }
|
57
70
|
end
|
@@ -62,7 +75,7 @@ module Mumukit::Service
|
|
62
75
|
end
|
63
76
|
|
64
77
|
def first_by(args, options, projection={})
|
65
|
-
find_projection(args, projection).sort(options).first.try{ |it| wrap(it) }
|
78
|
+
find_projection(args, projection).sort(options).first.try { |it| wrap(it) }
|
66
79
|
end
|
67
80
|
|
68
81
|
def order_by(args, options, projection={})
|