Skip to content

Commit 51b8007

Browse files
committed
[NRL-1231] Fixup delete_all_invalid_pointers.py script to satisfy sonarcloud
1 parent f96614f commit 51b8007

File tree

1 file changed

+49
-27
lines changed

1 file changed

+49
-27
lines changed

scripts/delete_all_invalid_pointers.py

Lines changed: 49 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ def _validate_document(document: str):
2424
raise RuntimeError("Failed to validate document: " + str(result.issues))
2525

2626

27-
def _find_invalid_pointers(table_name: str) -> dict[str, float | int]:
27+
def _find_invalid_pointers(table_name: str) -> dict[str, Any]:
2828
"""
2929
Find and delete pointers in the given table that are invalid based on the FHIR model and NRLF validators.
3030
Parameters:
@@ -64,32 +64,28 @@ def _find_invalid_pointers(table_name: str) -> dict[str, float | int]:
6464

6565
print(f" Done. Found {len(invalid_pointers)} invalid pointers")
6666

67-
if len(invalid_pointers) == 0:
68-
return {
69-
"invalid_pointers": 0,
70-
"scanned_count": total_scanned_count,
71-
"took-secs": timedelta.total_seconds(end_time - start_time),
72-
}
67+
if len(invalid_pointers) > 0:
68+
print("Writing invalid pointers IDs to file ./invalid_pointers.txt ...")
69+
with open("invalid_pointers.txt", "w") as f:
70+
for _id, err in invalid_pointers:
71+
f.write(f"{_id}: {err}\n")
7372

74-
print("Writing invalid pointers IDs to file ./invalid_pointers.txt ...")
75-
with open("invalid_pointers.txt", "w") as f:
76-
for _id, err in invalid_pointers:
77-
f.write(f"{_id}: {err}\n")
73+
return {
74+
"invalid_pointers": invalid_pointers,
75+
"scanned_count": total_scanned_count,
76+
"find-took-secs": timedelta.total_seconds(end_time - start_time),
77+
}
7878

79-
confirmation_input = input(
80-
"Would you like to delete all the invalid pointers? (yes/no): "
81-
)
82-
if confirmation_input != "yes":
83-
print("Invalid pointers NOT deleted.")
84-
return {
85-
"invalid_pointers": len(invalid_pointers),
86-
"scanned_count": total_scanned_count,
87-
"took-secs": timedelta.total_seconds(end_time - start_time),
88-
}
79+
80+
def _delete_pointers(table_name: str, pointers_to_delete: list[str]) -> dict[str, Any]:
81+
"""
82+
Delete the provided pointers from the given table.
83+
"""
84+
start_time = datetime.now(tz=timezone.utc)
8985

9086
print("Deleting invalid pointers...")
9187
pointers_deleted = 0
92-
for _id, _ in invalid_pointers:
88+
for _id, _ in pointers_to_delete:
9389
try:
9490
item_key = {"S": f"D#{_id}"}
9591
dynamodb.delete_item(
@@ -109,12 +105,38 @@ def _find_invalid_pointers(table_name: str) -> dict[str, float | int]:
109105

110106
print(" Done")
111107
return {
112-
"invalid_pointers_total": len(invalid_pointers),
113-
"invalid_pointers_deleted": pointers_deleted,
114-
"scanned_count": total_scanned_count,
115-
"took-secs": timedelta.total_seconds(end_time - start_time),
108+
"pointers_to_delete": len(pointers_to_delete),
109+
"deleted_pointers": pointers_deleted,
110+
"deletes-took-secs": timedelta.total_seconds(end_time - start_time),
116111
}
117112

118113

114+
def _find_and_delete_invalid_pointers(table_name: str) -> dict[str, float | int]:
115+
find_result = _find_invalid_pointers(table_name)
116+
117+
if len(find_result["invalid_pointers"]) == 0:
118+
return {
119+
"invalid_pointers": 0,
120+
"scanned_count": find_result["scanned_count"],
121+
"find-took-secs": find_result["find-took-secs"],
122+
}
123+
124+
confirmation_input = input(
125+
"Would you like to delete all the invalid pointers? (yes/no): "
126+
)
127+
if confirmation_input != "yes":
128+
print("Invalid pointers NOT deleted.")
129+
find_result.pop("invalid_pointers")
130+
return find_result
131+
132+
pointers_to_delete = [_id for _id, _ in find_result["invalid_pointers"]]
133+
134+
delete_result = _delete_pointers(table_name, pointers_to_delete)
135+
136+
find_result.pop("invalid_pointers")
137+
138+
return {**find_result, **delete_result}
139+
140+
119141
if __name__ == "__main__":
120-
fire.Fire(_find_invalid_pointers)
142+
fire.Fire(_find_and_delete_invalid_pointers)

0 commit comments

Comments
 (0)