uc3-dmp-id 0.0.4 → 0.0.5

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,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 439dc6215dd2f0961bab62a72a42e5e7bf3767b349c856e444e98276ed13065e
4
- data.tar.gz: f517db3e0bf58db5c0ae7e9b66a1158dc29445fafddaab9453f6f92e4d7fb111
3
+ metadata.gz: fb6a21e1fcad936e84cad2d4067084a823104c99d68c4acf037a623c01fcf55e
4
+ data.tar.gz: 01256a0949cc0625912d4c86309375f4c9abfd4ff9d3b5c6f713c798d70161ac
5
5
  SHA512:
6
- metadata.gz: 119a39aab1d09b3c934570635563d26d5588727b708bac26ed713a93a7e011febdc20ad7c2718cc968cb0d9bc7a3e77f1580975e7a951aaeeb7316a8f565ab03
7
- data.tar.gz: 4ccfb7ca8a8cca9610b1ae207f96d128dac1c1c5adc265964b4027dc85310546c4d48fc2d6614f441614999f916d39d90e61d7eb8c70ac5e7813f08d2af61dc7
6
+ metadata.gz: b7fec6aaddcd4f9d8029731c37a0363e55a1a66679a0359c07662c1f12fdc1d213695fa5a67f4c25e5a0fb059cd9cd3b195f7c7fd14beb771bf23a2f4fd1f19f
7
+ data.tar.gz: 51e8b4a4d987673b551a3b53b435ec057f61f1b43e10d6829a26977d1c7af1d1db3d7ea1ed61f140903288fc9b766841ebfb30ed4b2ed7244ed2caad3b4269c8
@@ -23,7 +23,7 @@ module Uc3DmpId
23
23
 
24
24
  # Find the DMP's versions
25
25
  # -------------------------------------------------------------------------
26
- def versions(p_key:)
26
+ def versions(p_key:, client: nil, log_writer: nil, debug: false)
27
27
  raise Uc3DmpIdFinderError, MSG_MISSING_PK if p_key.nil?
28
28
 
29
29
  args = {
@@ -33,36 +33,36 @@ module Uc3DmpId
33
33
  projection_expression: 'modified',
34
34
  scan_index_forward: false
35
35
  }
36
- client = Uc3DmpDynamo::Client.new
36
+ client = client.nil? ? Uc3DmpDynamo::Client.new(log_writer: log_writer, debug: debug) : client
37
37
  client.query(**args)
38
38
  end
39
39
 
40
40
  # Find a DMP based on the contents of the incoming JSON
41
41
  # -------------------------------------------------------------------------
42
- def by_json(json:)
42
+ def by_json(json:, log_writer: nil, debug: false)
43
43
  json = Validator.parse_json(json: json)&.fetch('dmp', {})
44
44
  raise Uc3DmpIdFinderError, MSG_INVALID_ARGS if json.nil? || (json['PK'].nil? && json['dmp_id'].nil?)
45
45
 
46
46
  p_key = json['PK']
47
47
  # Translate the incoming :dmp_id into a PK
48
48
  p_key = Helper.dmp_id_to_pk(json: json.fetch('dmp_id', {})) if p_key.nil?
49
-
50
- # find_by_PK
51
- resp = by_pk(p_key: p_key, s_key: json['SK']) unless p_key.nil?
52
- return resp unless resp.nil?
49
+ client = client.nil? ? Uc3DmpDynamo::Client.new(log_writer: log_writer, debug: debug) : client
53
50
 
54
51
  # find_by_dmphub_provenance_id -> if no PK and no dmp_id result
55
- by_dmphub_provenance_identifier(json: json)
52
+ return by_provenance_identifier(json: json, client: client, log_writer: log_writer, debug: debug) if p_key.nil?
53
+
54
+ # find_by_PK
55
+ by_pk(p_key: p_key, s_key: json['SK'], client: client, log_writer: log_writer, debug: debug)
56
56
  end
57
57
 
58
58
  # Find the DMP by its PK and SK
59
59
  # -------------------------------------------------------------------------
60
- def by_pk(p_key:, s_key: Helper::DMP_LATEST_VERSION)
60
+ def by_pk(p_key:, s_key: Helper::DMP_LATEST_VERSION, client: nil, log_writer: nil, debug: false)
61
61
  raise Uc3DmpIdFinderError, MSG_MISSING_PK if p_key.nil?
62
62
 
63
63
  s_key = Helper::DMP_LATEST_VERSION if s_key.nil? || s_key.strip.empty?
64
64
 
65
- client = Uc3DmpDynamo::Client.new
65
+ client = client.nil? ? Uc3DmpDynamo::Client.new(log_writer: log_writer, debug: debug) : client
66
66
  resp = client.get_item(
67
67
  key: {
68
68
  PK: Helper.append_pk_prefix(dmp: p_key),
@@ -71,13 +71,13 @@ module Uc3DmpId
71
71
  )
72
72
  return nil if resp.nil? || resp.fetch('dmp', {})['PK'].nil?
73
73
 
74
- _append_versions(p_key: resp['dmp']['PK'], dmp: resp)
74
+ _append_versions(p_key: resp['dmp']['PK'], dmp: resp, client: client)
75
75
  end
76
76
 
77
77
  # Attempt to find the DMP item by the provenance system's identifier
78
78
  # -------------------------------------------------------------------------
79
79
  # rubocop:disable Metrics/AbcSize
80
- def by_dmphub_provenance_identifier(json:)
80
+ def by_provenance_identifier(json:, client: nil, log_writer: nil, debug: false)
81
81
  raise Uc3DmpIdFinderError, MSG_MISSING_PROV_ID if json.nil? || json.fetch('dmp_id', {})['identifier'].nil?
82
82
 
83
83
  args = {
@@ -90,7 +90,7 @@ module Uc3DmpId
90
90
  filter_expression: 'SK = :version',
91
91
  expression_attribute_values: { ':version': KeyHelper::DMP_LATEST_VERSION }
92
92
  }
93
- client = Uc3DmpDynamo::Client.new
93
+ client = client.nil? ? Uc3DmpDynamo::Client.new(log_writer: log_writer, debug: debug) : client
94
94
  resp = client.query(**args)
95
95
  return resp if resp.nil? || resp['dmp'].nil?
96
96
 
@@ -103,10 +103,10 @@ module Uc3DmpId
103
103
 
104
104
  # Build the dmphub_versions array and attach it to the dmp
105
105
  # rubocop:disable Metrics/AbcSize
106
- def _append_versions(p_key:, dmp:)
106
+ def _append_versions(p_key:, dmp:, client: nil, log_writer: log_writer, debug: false)
107
107
  return dmp if p_key.nil? || !dmp.is_a?(Hash) || dmp['dmp'].nil?
108
108
 
109
- results = find_dmp_versions(p_key: p_key)
109
+ results = versions(p_key: p_key, client: client, log_writer: log_writer, debug: debug)
110
110
  return dmp unless results.length > 1
111
111
 
112
112
  versions = results.map do |version|
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Uc3DmpId
4
- VERSION = '0.0.4'
4
+ VERSION = '0.0.5'
5
5
  end
data/lib/uc3-dmp-id.rb CHANGED
@@ -13,6 +13,13 @@ require 'uc3-dmp-id/validator'
13
13
  require 'uc3-dmp-id/versioner'
14
14
 
15
15
  module Uc3DmpId
16
-
16
+ MSG_DMP_EXISTS = 'DMP already exists. Try :update instead.'
17
+ MSG_DMP_UNKNOWN = 'DMP does not exist. Try :create instead.'
18
+ MSG_DMP_NOT_FOUND = 'DMP does not exist.'
19
+ MSG_DMP_FORBIDDEN = 'You do not have permission.'
20
+ MSG_DMP_NO_DMP_ID = 'A DMP ID could not be registered at this time.'
21
+ MSG_DMP_INVALID_DMP_ID = 'Invalid DMP ID format.'
22
+ MSG_DMP_NO_HISTORICALS = 'You cannot modify a historical version of the DMP.'
23
+ MSG_DMP_UNABLE_TO_VERSION = 'Unable to version this DMP.'
17
24
  end
18
25
  # rubocop:enable Naming/FileName
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uc3-dmp-id
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Riley