mumukit-service 0.3.0 → 0.4.0

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.
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