zf

zenflows testing
git clone https://s.sonu.ch/~srfsh/zf.git
Log | Files | Refs | Submodules | README | LICENSE

commit 9e22fd4ef93eea9f498b8fd3192a579eedf655be
parent 2830f085a02b9ff1e9a598e56690681423062803
Author: srfsh <dev@srf.sh>
Date:   Fri,  2 Dec 2022 19:09:13 +0300

Zenflows.VF.EconomicResource.Domain: fix the algorithms

Diffstat:
Msrc/zenflows/vf/economic_resource/domain.ex | 9++++++---
1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/zenflows/vf/economic_resource/domain.ex b/src/zenflows/vf/economic_resource/domain.ex @@ -70,6 +70,7 @@ def previous(id, page) do &1.previous_event_id == nil or &1.id == &2.previous_event_id or &1.id <= &2.id)) + |> Enum.reverse() end @spec trace(EconomicResource.t() | EconomicEvent.t() | Process.t(), Page.t()) @@ -112,11 +113,13 @@ defp trace_depth_first_search(flows, visited, contained, modified, delivered, sa # ensure that: # * `previous` has at least one item that is not `nil` (events' previous can return `nil`) # * `saved_event` is not `nil` (events like raise have nullable previous_event) + {[%EconomicResource{}], %EconomicEvent{}} -> + [saved_event | previous] + {[%{id: _} | _], %{id: id}} -> case Enum.split_while(previous, &(&1.id != id)) do - {[], right} -> right {left, [found | right]} -> [found | left] ++ right - {left, right} -> left ++ right + {left, []} -> left end _ -> previous @@ -135,7 +138,7 @@ defp trace_depth_first_search(flows, visited, contained, modified, delivered, sa when id in ~w[pickup dropoff accept modify pack unpack] -> {flows, visited, contained, modified, delivered, saved_event} _ -> - visited = MapSet.put(visited, {EconomicEvent, item.id}) + visited = MapSet.put(visited, {item.__struct__, item.id}) flows = [item | flows] trace_depth_first_search(flows, visited, contained, modified, delivered, saved_event) end