Skip to content

Commit 6bafc83

Browse files
eli-540 error handling
1 parent 00e9c7e commit 6bafc83

File tree

3 files changed

+18
-14
lines changed

3 files changed

+18
-14
lines changed

src/eligibility_signposting_api/processors/hashing_service.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ def __init__(
3535

3636
def hash_with_current_secret(self, nhs_number: str) -> str | None:
3737
secret_value = self.secret_repo.get_secret_current(self.hash_secret_name).get("AWSCURRENT")
38-
return _hash(nhs_number, secret_value)
38+
return _hash(nhs_number, secret_value) if secret_value else None
3939

4040
def hash_with_previous_secret(self, nhs_number: str) -> str | None:
4141
secret_value = self.secret_repo.get_secret_previous(self.hash_secret_name).get("AWSPREVIOUS")
42-
return _hash(nhs_number, secret_value)
42+
return _hash(nhs_number, secret_value) if secret_value else None

src/eligibility_signposting_api/repos/person_repo.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -55,24 +55,24 @@ def get_person_record(self, nhs_hash: str | None) -> Any:
5555
return None
5656

5757
def get_eligibility_data(self, nhs_number: NHSNumber) -> Person:
58-
# AWSCURRENT secret
59-
nhs_hash = self._hashing_service.hash_with_current_secret(nhs_number)
60-
items = self.get_person_record(nhs_hash)
61-
58+
# Hash using AWSCURRENT secret and fetch items
59+
items = None
60+
nhs_hashed_with_current = self._hashing_service.hash_with_current_secret(nhs_number)
61+
if nhs_hashed_with_current:
62+
items = self.get_person_record(nhs_hashed_with_current)
6263
if not items:
63-
logger.error("No person record found for hashed nhs_number using secret AWSCURRENT")
64-
65-
# AWSPREVIOUS secret
66-
nhs_hash = self._hashing_service.hash_with_previous_secret(nhs_number)
64+
logger.warning("No person record found for hashed nhs_number using secret AWSCURRENT")
6765

68-
if nhs_hash is not None:
69-
items = self.get_person_record(nhs_hash)
66+
# Hash using AWSPREVIOUS secret and fetch items
67+
nhs_hashed_with_previous = self._hashing_service.hash_with_previous_secret(nhs_number)
68+
if nhs_hashed_with_previous:
69+
items = self.get_person_record(nhs_hashed_with_previous)
7070
if not items:
71-
logger.error("No person record found for hashed nhs_number using secret AWSPREVIOUS")
71+
logger.warning("No person record found for hashed nhs_number using secret AWSPREVIOUS")
7272
message = "Person not found after checking AWSCURRENT and AWSPREVIOUS."
7373
raise NotFoundError(message)
7474
else:
75-
# fallback not hashed NHS number
75+
# fallback : Fetch using Raw NHS number
7676
items = self.get_person_record(nhs_number)
7777
if not items:
7878
logger.error("No person record found for not hashed nhs_number")

src/eligibility_signposting_api/repos/secret_repo.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ def _get_secret_by_stage(self, secret_name: str, stage: str) -> dict[str, str]:
2525
)
2626
return {stage: response["SecretString"]}
2727

28+
except self.secret_manager.exceptions.ResourceNotFoundException:
29+
logger.exception("Secret %s not found for stage %s", secret_name, stage)
30+
return {}
31+
2832
except ClientError:
2933
logger.exception("Failed to get secret %s at stage %s", secret_name, stage)
3034
return {}

0 commit comments

Comments
 (0)