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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZGUxYTFhODc1ZmQ3ZWUxNDgwZDk2YmU2NDYwYjk4NDc1MDU4YTNkMQ==
4
+ ZTBlYjFkZDkwOGIzMzVmNDVlNGIwZjVlZjQ0N2IwNGJhZDZhN2Y3ZA==
5
5
  data.tar.gz: !binary |-
6
- NmI5Y2E0ZmZlMjE5N2RiOWNkYWRlNTA3Njg3YmQ3NGE5YmQ3NDcwOA==
6
+ NmEyZWYzZDUyYmJkZjFiZWFlZmMzZjRiMGRlMmU0MDhhMDZjMDgwOA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MmEwMmU0MzE0NDk2ZTFmNGZmNTkxY2IyZTkzMzRkMWQ1Y2QzZWMyOGZlZjE2
10
- OWE3ZjRmZTQ5OTI1Zjg1ODkwODI4YzQ3NmJiOWY2NTI3Yzc1NDI3YjdlODhm
11
- ODIzOTM3YjE5MzRmZGMyZWY1OTYyZTRjMmNmYTQ1YmI1ZmRlMzk=
9
+ Nzk0NGU1NmVhZDAzZDhhOTJiMTlkNmFkMWYzNjcyMWM2NzJhMTgwYmFkMmE5
10
+ MWQxNDM5NGQyMGYxYjYzN2U2NWY4NzM0Nzk1NGNhYmQyMmZiMDJkNTNkNTRj
11
+ OWE5MWYwNzBmMGE5ZjIyMDQ0OTI0ZmM0ZTAzNGRlNTRmMDNlMDc=
12
12
  data.tar.gz: !binary |-
13
- ZjJiNzg5MjgwYzA1YTRiNTQ4MjdhMTk1YzVkODAxNTIzOWEyMzRkN2Q0OGMy
14
- MjhlZDhlODE3N2I4NzkwNTY5NDUyNThhNzMxMDJlMDJjOWU1ZjQ2Nzk2Y2M4
15
- NmY1Y2UwNWI0YjBiOTViYTc5NTVkOTdjODA1MWU0OTdiMWNiOTg=
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={})
@@ -10,6 +10,10 @@ module Mumukit::Service
10
10
  json.as_json(options)
11
11
  end
12
12
 
13
+ def [](key)
14
+ json[key]
15
+ end
16
+
13
17
  def method_missing(name, *args)
14
18
  json[name]
15
19
  end
@@ -1,5 +1,5 @@
1
1
  module Mumukit
2
2
  module Service
3
- VERSION = '0.3.0'
3
+ VERSION = '0.4.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mumukit-service
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Franco Leonardo Bulgarelli