dmp-dynamo_adapter 0.2.4 → 0.2.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/dmp/dmp_id_handler.rb +4 -1
- data/lib/dmp/dynamo_adapter.rb +25 -11
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 41ac93e31c250106a76873be5e069337fe772387bef81350afdffe231a09ad80
|
4
|
+
data.tar.gz: 9998934e79fbdb99639088e64bea3b6a3b516df5b20db4ce8733e7c5bcc7c10c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9bdd9d6d4ab79239ca07993ebcb991f3d9298ce01f21058a841921970646b8f08b33ee5239338b95626ca37e19f1272b37da3706425fd985b7a17f2db67fa205
|
7
|
+
data.tar.gz: 7d374a240cac71d3cd65d1422fbb983e1b4e10f6d8e1096ad9a4ed973d521229a9bf078db1c7a86e8862c3ad596f95e7f4899e9c0e11751339691e1006cd3dbd
|
data/lib/dmp/dmp_id_handler.rb
CHANGED
@@ -22,7 +22,10 @@ p 'PREREGISTER DMP ID:'
|
|
22
22
|
|
23
23
|
while dmp_id == '' && counter <= 10
|
24
24
|
prefix = "#{ENV['DMP_ID_SHOULDER']}.#{SecureRandom.hex(4).upcase}"
|
25
|
-
|
25
|
+
result = Dmp::DynamoAdapter.find_by_pk(
|
26
|
+
p_key: Dmp::MetadataHandler.append_pk_prefix(dmp: dmp_id)
|
27
|
+
)
|
28
|
+
dmp_id = prefix unless result[:status] != 404
|
26
29
|
counter += 1
|
27
30
|
end
|
28
31
|
# Something went wrong and it was unable to identify a unique id
|
data/lib/dmp/dynamo_adapter.rb
CHANGED
@@ -89,8 +89,7 @@ p "FINDING BY PK: PK - #{p_key.inspect} / SK - #{s_key.inspect}"
|
|
89
89
|
|
90
90
|
# find_by_PK
|
91
91
|
response = find_by_pk(p_key: pk, s_key: json['SK']) unless pk.nil?
|
92
|
-
return response
|
93
|
-
return response unless response[:items].nil? || response[:items].empty?
|
92
|
+
return response unless response[:status] != 404
|
94
93
|
|
95
94
|
# find_by_dmphub_provenance_id -> if no PK and no dmp_id result
|
96
95
|
find_by_dmphub_provenance_identifier(json: json)
|
@@ -105,16 +104,12 @@ p "FINDING BY PK: PK - #{p_key.inspect} / SK - #{s_key.inspect}"
|
|
105
104
|
|
106
105
|
# Try to find it first
|
107
106
|
result = find_by_json(json: json)
|
108
|
-
|
109
|
-
p "RESULT:"
|
110
|
-
pp result
|
111
|
-
|
112
107
|
return { status: 500, error: result.fetch(:error, MSG_DEFAULT) } if result[:status] == 500
|
113
108
|
# Abort if found
|
114
|
-
return { status: 400, error: MSG_EXISTS } if result
|
109
|
+
return { status: 400, error: MSG_EXISTS } if result.fetch(:items, []).any?
|
115
110
|
|
116
111
|
# allocate a DMP ID
|
117
|
-
p_key =
|
112
|
+
p_key = preregister_dmp_id
|
118
113
|
|
119
114
|
p "PRE REGISTERED DMP ID: #{p_key.inspect}"
|
120
115
|
|
@@ -283,16 +278,35 @@ p "FINDING BY PROVENANCE ID: #{json['dmp_id']['identifier']}"
|
|
283
278
|
p "RESPONSE:"
|
284
279
|
pp response.data
|
285
280
|
|
286
|
-
return { status: 404, error: MSG_NOT_FOUND } if response.nil? || response[:
|
281
|
+
return { status: 404, error: MSG_NOT_FOUND } if response.nil? || response[:count] <= 0
|
287
282
|
|
288
283
|
# If we got a hit, fetch the DMP and return it.
|
289
|
-
find_by_pk(p_key: response.fetch(:
|
290
|
-
s_key: response.fetch(:
|
284
|
+
find_by_pk(p_key: response.fetch(:last_evaluated_key, {})[:hash_key_element],
|
285
|
+
s_key: response.fetch(:last_evaluated_key, {})[:range_key_element])
|
291
286
|
rescue Aws::Errors::ServiceError => e
|
292
287
|
{ status: 500, error: "#{MSG_DEFAULT} - #{e.message}" }
|
293
288
|
end
|
294
289
|
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize
|
295
290
|
|
291
|
+
# Preassign a DMP ID that will leater be sent to the DOI minting authority (EZID)
|
292
|
+
def preregister_dmp_id
|
293
|
+
dmp_id = ''
|
294
|
+
counter = 0
|
295
|
+
|
296
|
+
p 'PREREGISTER DMP ID:'
|
297
|
+
|
298
|
+
while dmp_id == '' && counter <= 10
|
299
|
+
prefix = "#{ENV['DMP_ID_SHOULDER']}.#{SecureRandom.hex(4).upcase}"
|
300
|
+
result = find_by_pk(p_key: Dmp::MetadataHandler.append_pk_prefix(dmp: dmp_id))
|
301
|
+
dmp_id = prefix unless result[:status] != 404
|
302
|
+
counter += 1
|
303
|
+
end
|
304
|
+
# Something went wrong and it was unable to identify a unique id
|
305
|
+
return nil if counter >= 10
|
306
|
+
|
307
|
+
"#{Dmp::MetadataHandler::PK_DMP_PREFIX}#{dmp_id_base_url}#{dmp_id}"
|
308
|
+
end
|
309
|
+
|
296
310
|
# Convert the latest version into a historical version
|
297
311
|
# rubocop:disable Metrics/MethodLength
|
298
312
|
def version_it(dmp:)
|