Module: Legion::Compliance::PhiErasure

Defined in:
lib/legion/compliance/phi_erasure.rb

Class Method Summary collapse

Class Method Details

.erase(task_id:, reason:) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/legion/compliance/phi_erasure.rb', line 7

def erase(task_id:, reason:)
  result = { task_id: task_id, erased: false, steps: {} }

  result[:steps][:key_erasure] = erase_key(task_id)
  result[:steps][:cache_purge] = purge_cache(task_id)
  log_erasure(task_id: task_id, reason: reason)
  result[:steps][:verification] = verify_erasure(task_id)

  key_result    = result[:steps][:key_erasure]
  verify_result = result[:steps][:verification]

  result[:erased] = key_result.nil? || (key_result.is_a?(Hash) && key_result[:erased] != false &&
    verify_result.is_a?(Hash) && verify_result[:erased] != false)
  result
rescue StandardError => e
  Legion::Logging.error "[Compliance] PhiErasure#erase failed task_id=#{task_id}: #{e.message}" if defined?(Legion::Logging)
  { task_id: task_id, erased: false, error: e.message }
end