Hi OGs,
I have a function as follow:
defp comparing_statuses(duplicates) do
statuses = count_duplicates_statuses(duplicates)
case statuses do
{"one", _, "zero", _, _, _} ->
iterate_through_duplicates_with_status_and_remove(duplicates, "approved")
{"one", _, "one", _, _, _} ->
deleting_approached_and_approved_case(duplicates)
{"two or more", _, "zero", _, _, _} ->
accumulating_required_status(duplicates, "approved")
{"zero", "one", _, _, _, _} ->
iterate_through_duplicates_with_status_and_remove(duplicates, [
"invalid",
"under_investigation",
"suspended"
])
{"zero", "two or more", _, _, _, _} ->
accumulating_required_status(duplicates, [
"invalid",
"under_investigation",
"suspended"
])
{"zero", "zero", "one", _, _, "zero"} ->
iterate_through_duplicates_with_status_and_remove(duplicates, "approached")
{"zero", "zero", "one", _, _, "one"} ->
iterate_through_duplicates_with_status_and_update(
duplicates,
"approval_requested",
"approved"
)
{"zero", "zero", "two or more", _, _, "two or more"} ->
accumulating_required_status(duplicates, "approval_requested")
{"zero", "zero", "two or more", _, _, "zero"} ->
iterate_through_duplicates_with_status_and_remove(duplicates, "approached")
handle_or_email_deletion_check(duplicates)
{"zero", "zero", "zero", "one", _, _} ->
iterate_through_duplicates_with_status_and_remove(duplicates, "rejected")
{"zero", "zero", "zero", "two or more", _, _} ->
accumulating_required_status(duplicates, "rejected")
{"zero", "zero", "zero", "zero", "one", _} ->
iterate_through_duplicates_with_status_and_remove(duplicates, "external")
{"zero", "zero", "zero", "zero", "two or more", _} ->
accumulating_required_status(duplicates, "external")
{"zero", "zero", "zero", "zero", "zero", "two or more"} ->
mass_deletion_check(duplicates)
end
end
And mix credo complains me that function is too complex (CC is 15, max is 9)
I can not break the switch case into two functions, as one function can throw an error stating that pattern is not recognised
Any ideas ?
Thank you