dmp-dynamo_adapter 0.1.7 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/dmp/dynamo_adapter.rb +29 -18
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9418816d26847581bce0424f326d1b7d65947b2aa3df952c2d8904984229b18c
|
4
|
+
data.tar.gz: 3e7a9d4819f987dc3ae51a699b88321182d28705d776e48780aedba1d5995412
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9abe8d680a8dce95cf71d50e14b8fc9c954bb04bdaaa3d080b80dbb639b4f098c7c5b976610a7bff5a37c7ed48c68f330b4e315df93663ec48ffb3a5d2a39119
|
7
|
+
data.tar.gz: 1378240d137ae3afd8e089d0337d2322d8a8406fc93d3027b14870c6a2a0f0c15087b7b06bd5dd5f158ef93996e21103f0c4488cf4eae77d6cf3607cc8159931
|
data/lib/dmp/dynamo_adapter.rb
CHANGED
@@ -49,8 +49,8 @@ module Dmp
|
|
49
49
|
}
|
50
50
|
)
|
51
51
|
{ status: 200, items: response.items.map(&:item).compact.uniq }
|
52
|
-
rescue Aws::Errors::ServiceError
|
53
|
-
{ status: 500, error: MSG_DEFAULT }
|
52
|
+
rescue Aws::Errors::ServiceError => e
|
53
|
+
{ status: 500, error: "#{MSG_DEFAULT} - #{e.message}" }
|
54
54
|
end
|
55
55
|
# rubocop:enable Metrics/MethodLength
|
56
56
|
|
@@ -58,6 +58,10 @@ module Dmp
|
|
58
58
|
def find_by_pk(p_key:, s_key: Dmp::MetadataHandler::LATEST_VERSION)
|
59
59
|
return { status: 404, error: MSG_NOT_FOUND } if p_key.nil?
|
60
60
|
|
61
|
+
s_key = Dmp::MetadataHandler::LATEST_VERSION if s_key.nil? || s_key.strip == ''
|
62
|
+
|
63
|
+
p "FINDING BY PK: PK - #{p_key.inspect} / SK - #{s_key.inspect}"
|
64
|
+
|
61
65
|
response = @client.get_item(
|
62
66
|
{
|
63
67
|
table_name: ENV['AWS_DYNAMO_TABLE_NAME'],
|
@@ -66,11 +70,14 @@ module Dmp
|
|
66
70
|
return_consumed_capacity: @debug_mode ? 'TOTAL' : 'NONE'
|
67
71
|
}
|
68
72
|
)
|
69
|
-
return { status: 404, error: MSG_NOT_FOUND } if response.items.empty?
|
70
73
|
|
71
|
-
|
72
|
-
|
73
|
-
{ status:
|
74
|
+
pp response.data
|
75
|
+
|
76
|
+
return { status: 404, error: MSG_NOT_FOUND } if response[:item].nil?
|
77
|
+
|
78
|
+
{ status: 200, items: [response[:item]] }
|
79
|
+
rescue Aws::Errors::ServiceError => e
|
80
|
+
{ status: 500, error: "#{MSG_DEFAULT} - #{e.message}" }
|
74
81
|
end
|
75
82
|
|
76
83
|
# Find a DMP based on the contents of the incoming JSON
|
@@ -81,7 +88,7 @@ module Dmp
|
|
81
88
|
|
82
89
|
pk = json['PK']
|
83
90
|
# Translate the incoming :dmp_id into a PK
|
84
|
-
pk = DmpIdHandler.dmp_id_to_pk(json: json.fetch('dmp_id', {})) if pk.nil?
|
91
|
+
pk = Dmp::DmpIdHandler.dmp_id_to_pk(json: json.fetch('dmp_id', {})) if pk.nil?
|
85
92
|
|
86
93
|
# find_by_PK
|
87
94
|
response = find_by_pk(p_key: pk, s_key: json['SK']) unless pk.nil?
|
@@ -99,6 +106,8 @@ module Dmp
|
|
99
106
|
json = prepare_json(json: json)
|
100
107
|
return { status: 400, error: MSG_DEFAULT } if json.nil? || @provenance.nil?
|
101
108
|
|
109
|
+
p "FINDING BY JSON"
|
110
|
+
pp json
|
102
111
|
|
103
112
|
# Try to find it first
|
104
113
|
result = find_by_json(json: json)
|
@@ -107,7 +116,7 @@ module Dmp
|
|
107
116
|
return { status: 400, error: MSG_EXISTS } if result[:items].any?
|
108
117
|
|
109
118
|
# allocate a DMP ID
|
110
|
-
p_key = preregister_dmp_id
|
119
|
+
p_key = Dmp::DmpIdHandler.preregister_dmp_id
|
111
120
|
return { status: 500, error: MSG_NO_DMP_ID } if p_key.nil?
|
112
121
|
|
113
122
|
# Add the DMPHub specific attributes and then save
|
@@ -122,8 +131,8 @@ module Dmp
|
|
122
131
|
{ status: 201, items: response.items.map(&:item).compact.uniq }
|
123
132
|
rescue Aws::DynamoDB::Errors::DuplicateItemException
|
124
133
|
{ status: 405, error: MSG_EXISTS }
|
125
|
-
rescue Aws::Errors::ServiceError
|
126
|
-
{ status: 500, error: MSG_DEFAULT }
|
134
|
+
rescue Aws::Errors::ServiceError => e
|
135
|
+
{ status: 500, error: "#{MSG_DEFAULT} - #{e.message}" }
|
127
136
|
end
|
128
137
|
# rubocop:enable Metrics/MethodLength, Metrics/CyclomaticComplexity
|
129
138
|
|
@@ -180,8 +189,8 @@ pp json
|
|
180
189
|
{ status: 200, items: response.items.map(&:item).compact.uniq }
|
181
190
|
rescue Aws::DynamoDB::Errors::DuplicateItemException
|
182
191
|
{ status: 405, error: MSG_EXISTS }
|
183
|
-
rescue Aws::Errors::ServiceError
|
184
|
-
{ status: 500, error: MSG_DEFAULT }
|
192
|
+
rescue Aws::Errors::ServiceError => e
|
193
|
+
{ status: 500, error: "#{MSG_DEFAULT} - #{e.message}" }
|
185
194
|
end
|
186
195
|
# rubocop:enable Metrics/AbcSize, Metrics/MethodLength, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
187
196
|
|
@@ -225,8 +234,8 @@ pp json
|
|
225
234
|
}
|
226
235
|
)
|
227
236
|
{ status: 200, items: response.items.map(&:item).compact.uniq }
|
228
|
-
rescue Aws::Errors::ServiceError
|
229
|
-
{ status: 500, error: MSG_DEFAULT }
|
237
|
+
rescue Aws::Errors::ServiceError => e
|
238
|
+
{ status: 500, error: "#{MSG_DEFAULT} - #{e.message}" }
|
230
239
|
end
|
231
240
|
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
232
241
|
|
@@ -241,6 +250,8 @@ pp json
|
|
241
250
|
def find_by_dmphub_provenance_identifier(json:)
|
242
251
|
return { status: 400, error: MSG_DEFAULT } if json.nil? || json.fetch('dmp_id', {})['identifier'].nil?
|
243
252
|
|
253
|
+
p "FINDING BY PROVENANCE ID: #{json['dmp_id']['identifier']}"
|
254
|
+
|
244
255
|
response = @client.query(
|
245
256
|
{
|
246
257
|
table_name: ENV['AWS_DYNAMO_TABLE_NAME'],
|
@@ -262,8 +273,8 @@ pp json
|
|
262
273
|
|
263
274
|
# If we got a hit, fetch the DMP and return it.
|
264
275
|
find_by_pk(p_key: response.items.first.item[:PK])
|
265
|
-
rescue Aws::Errors::ServiceError
|
266
|
-
{ status: 500, error: MSG_DEFAULT }
|
276
|
+
rescue Aws::Errors::ServiceError => e
|
277
|
+
{ status: 500, error: "#{MSG_DEFAULT} - #{e.message}" }
|
267
278
|
end
|
268
279
|
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize
|
269
280
|
|
@@ -292,8 +303,8 @@ pp json
|
|
292
303
|
return { status: 404, error: MSG_NOT_FOUND } if response.nil? || response.items.empty?
|
293
304
|
|
294
305
|
{ status: 200, items: response.items.map(&:item).compact.uniq }
|
295
|
-
rescue Aws::Errors::ServiceError
|
296
|
-
{ status: 500, error: MSG_DEFAULT }
|
306
|
+
rescue Aws::Errors::ServiceError => e
|
307
|
+
{ status: 500, error: "#{MSG_DEFAULT} - #{e.message}" }
|
297
308
|
end
|
298
309
|
# rubocop:enable Metrics/MethodLength
|
299
310
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dmp-dynamo_adapter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- briri
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-08-
|
11
|
+
date: 2022-08-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-dynamodb
|