1 import Base
2 import ./ordinary_event_family.bend as Family
3 import ./event_publication.bend as Publication
4
5 # These are the existing Data-family singleton injections and ordered branch
6 # projections, specialized to log-local Nat IDs. Equal IDs on sibling branches
7 # remain distinct because each declaration binds both its route and resource path.
8 def inject_leaf(id:Nat) -> Nat:Family.inject_leaf(~Nat,id)
9 def inject_left(~A:Data,~B:Data,~inject:Nat -> A,id:Nat) -> Publication.Publication:
10 Family.inject_left(~Nat,~A,~B,~inject,id)
11 def inject_right(~A:Data,~B:Data,~inject:Nat -> B,id:Nat) -> Publication.Publication:
12 Family.inject_right(~Nat,~A,~B,~inject,id)
13 def select_leaf(ids:List<&2,Nat>) -> List<&2,Nat>:ids
14 def select_left(~A:Data,~B:Data,~select:List<&2,A> -> List<&2,Nat>,records:List<&2,Publication.Publication>) -> List<&2,Nat>:
15 select(Publication.first_values(~A,~B,records))
16 def select_right(~A:Data,~B:Data,~select:List<&2,B> -> List<&2,Nat>,records:List<&2,Publication.Publication>) -> List<&2,Nat>:
17 select(Publication.second_values(~A,~B,records))