Current section

Files

Jump to
excellent_migrations lib dangers_filter.ex
Raw

lib/dangers_filter.ex

defmodule ExcellentMigrations.DangersFilter do
@moduledoc false
def reject_dangers(dangers, ignored_types) do
dangers
|> reject_safety_assured_types()
|> reject_types(ignored_types)
|> delete_safety_assured_data()
end
defp reject_safety_assured_types(dangers) do
safety_assured_types =
dangers
|> Keyword.get_values(:safety_assured)
|> Enum.flat_map(fn types -> List.wrap(types) end)
|> Enum.uniq()
case safety_assured_types do
[:all] -> []
danger_types -> reject_types(dangers, danger_types)
end
end
defp reject_types(dangers, ignored_types) do
Enum.reduce(ignored_types, dangers, fn skipped_type, dangers_acc ->
Keyword.delete(dangers_acc, skipped_type)
end)
end
defp delete_safety_assured_data(dangers) do
Keyword.delete(dangers, :safety_assured)
end
end