uc3-dmp-id 0.0.93 → 0.0.95

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: effd6e9f621b4a0a2ff038e01a9db04f39284eebe520c18df70b6a224984e030
4
- data.tar.gz: be8087477ee5ae03e4c82b24cecf4f8b92b5fb4fa090520277738b0538d3324c
3
+ metadata.gz: 66da5763a8775630aa772cda55e95ea3a851b0f64e28d0c37c35e2c31d96d57e
4
+ data.tar.gz: '08ad0dcb0490ac289b674fa9d8a8fdf704a1f9a50020d42fa10d208a34f86771'
5
5
  SHA512:
6
- metadata.gz: 31d8ab61ec9adef5daba45bb25d26bfbb5559b5ac468bc3b05231e814e24e0670d84644040006ab723049f7c7b469e13a4ac53a9fd34c88ba8473232b0beb93e
7
- data.tar.gz: 1c2b1e95f0f01ca0ef7e641338eac0ab18e59b1137980dd912cb8b7321d7311a0dfa4f7458d796d73040e73ba91768399f19f9320be2a7da4b8941026337783e
6
+ metadata.gz: 2a2e0c1288b03cb7457f7bb750a3d44a673059640f2d28c4be8f33be52e2fc2fe10c1c8e4e6fde14f6e478111301236271945312a3b2d3c6b171597dfad035bd
7
+ data.tar.gz: 86af35a5e87a1bf29b814d0843e06199c351c43605d0cfc84cd2f26728ebcfaee3511766243a9d7c19247cb1be6d9b47873af8cfdb5c1a1650956e45bb6e6d85
@@ -30,7 +30,7 @@ module Uc3DmpId
30
30
 
31
31
  # Find a DMP based on the contents of the incoming JSON
32
32
  # -------------------------------------------------------------------------
33
- def by_json(json:, logger: nil)
33
+ def by_json(json:, cleanse: true, logger: nil)
34
34
  json = Helper.parse_json(json: json)&.fetch('dmp', {})
35
35
  raise FinderError, MSG_INVALID_ARGS if json.nil? || (json['PK'].nil? && json['dmp_id'].nil?)
36
36
 
@@ -44,12 +44,12 @@ module Uc3DmpId
44
44
  # return by_provenance_identifier(json: json, client: client, logger: logger) if p_key.nil?
45
45
 
46
46
  # find_by_PK
47
- p_key.nil? ? nil : by_pk(p_key: p_key, s_key: json['SK'], client: client, logger: logger)
47
+ p_key.nil? ? nil : by_pk(p_key: p_key, s_key: json['SK'], client: client, cleanse: cleanse, logger: logger)
48
48
  end
49
49
 
50
50
  # Find the DMP by its PK and SK
51
51
  # -------------------------------------------------------------------------
52
- def by_pk(p_key:, s_key: Helper::DMP_LATEST_VERSION, client: nil, logger: nil)
52
+ def by_pk(p_key:, s_key: Helper::DMP_LATEST_VERSION, client: nil, cleanse: true, logger: nil)
53
53
  raise FinderError, MSG_MISSING_PK if p_key.nil?
54
54
 
55
55
  s_key = Helper::DMP_LATEST_VERSION if s_key.nil? || s_key.to_s.strip.empty?
@@ -67,7 +67,7 @@ module Uc3DmpId
67
67
  return nil if dmp['dmp']['PK'].nil?
68
68
 
69
69
  dmp = Versioner.append_versions(p_key: dmp['dmp']['PK'], dmp: dmp, client: client, logger: logger)
70
- Helper.cleanse_dmp_json(json: dmp)
70
+ cleanse ? Helper.cleanse_dmp_json(json: dmp) : dmp
71
71
  end
72
72
 
73
73
  # Fetch just the PK to see if a record exists
@@ -88,7 +88,7 @@ module Uc3DmpId
88
88
  # Attempt to find the DMP item by the provenance system's identifier
89
89
  # -------------------------------------------------------------------------
90
90
  # rubocop:disable Metrics/AbcSize
91
- def by_provenance_identifier(json:, client: nil, logger: nil)
91
+ def by_provenance_identifier(json:, client: nil, cleanse: true, logger: nil)
92
92
  raise FinderError, MSG_MISSING_PROV_ID if json.nil? || json.fetch('dmp_id', {})['identifier'].nil?
93
93
 
94
94
  args = {
@@ -110,7 +110,7 @@ module Uc3DmpId
110
110
  return nil if dmp['dmp']['PK'].nil?
111
111
 
112
112
  # If we got a hit, fetch the DMP and return it.
113
- by_pk(p_key: dmp['dmp']['PK'], s_key: dmp['dmp']['SK'])
113
+ by_pk(p_key: dmp['dmp']['PK'], s_key: dmp['dmp']['SK'], cleanse: cleanse, logger: logger)
114
114
  end
115
115
  # rubocop:enable Metrics/AbcSize
116
116
 
@@ -21,7 +21,7 @@ module Uc3DmpId
21
21
 
22
22
  # fetch the existing latest version of the DMP ID
23
23
  client = Uc3DmpDynamo::Client.new(logger: logger)
24
- existing = Finder.by_pk(p_key: p_key, client: client, logger: logger)
24
+ existing = Finder.by_pk(p_key: p_key, client: client, logger: logger, cleanse: false)
25
25
  logger.debug(message: "Existing latest record", details: existing) if logger.respond_to?(:debug)
26
26
 
27
27
  errs = _updateable?(provenance: provenance, p_key: p_key, json: annotated)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Uc3DmpId
4
- VERSION = '0.0.93'
4
+ VERSION = '0.0.95'
5
5
  end
@@ -36,11 +36,9 @@ module Uc3DmpId
36
36
  puts "Provenance: #{provenance}, PK: #{p_key}"
37
37
  puts dmp
38
38
 
39
- return nil unless p_key.is_a?(String) && !p_key.strip.empty? && _versionable?(dmp: dmp)
39
+ return nil unless p_key.is_a?(String) && !p_key.strip.empty? && _versionable?(p_key: p_key, dmp: latest_version)
40
40
 
41
41
  client = Uc3DmpDynamo::Client.new if client.nil?
42
- latest_version = Finder.by_p_key(client: client, p_key: p_key) unless latest_version.is_a?(Hash) &&
43
- !latest_version['PK'].nil?
44
42
 
45
43
  owner = latest_version['dmphub_provenance_id']
46
44
  updater = provenance['PK']
@@ -86,8 +84,11 @@ puts dmp
86
84
  private
87
85
 
88
86
  # Determine whether the specified DMP metadata is versionable - returns boolean
89
- def _versionable?(dmp:)
90
- return false unless dmp.is_a?(Hash) && dmp['PK'].nil? && dmp['SK'].nil?
87
+ def _versionable?(p_key:, dmp:)
88
+
89
+ puts "PK MATCH? #{dmp['PK'] == p_key}, SK IS LATEST? #{dmp['SK'] == Helper::DMP_LATEST_VERSION}, DMP ID PRESENT? #{!dmp.fetch('dmp_id', {})['identifier'].nil?}"
90
+
91
+ return false unless dmp.is_a?(Hash) && dmp['PK'] == p_key && dmp['SK'] == Helper::DMP_LATEST_VERSION
91
92
 
92
93
  # It's versionable if it has a DMP ID
93
94
  !dmp.fetch('dmp_id', {})['identifier'].nil?
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.93
4
+ version: 0.0.95
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Riley