relation_types.bend
bendvy-ecs-core@0.1.0.1 · 46 lines · 0 definitions
1import Base
2import entity_key.bend as K
3
4type RelationKind is Data:
5 Ordinary{}
6 Hierarchy{}
7type Descriptor<S: Data> is Data:
8 Descriptor{key: U32,name: String,inverseName: String,kind: RelationKind}
9type Edge<S: Data> is Data:
10 Edge{relation: Descriptor<S>,source: K.Key,target: K.Key}
11type Error is Data:
12 MissingEntity{source: K.Key}
13 MissingTargetEntity{source: K.Key,target: K.Key,relation: String}
14 SelfRelationNotAllowed{source: K.Key,relation: String}
15 HierarchyCycle{source: K.Key,target: K.Key,relation: String}
16 MissingChildEntity{source: K.Key,child: K.Key,relation: String}
17 DuplicateChild{source: K.Key,child: K.Key,relation: String}
18 ChildNotRelatedToParent{source: K.Key,child: K.Key,relation: String}
19 ChildSetMismatch{source: K.Key,relation: String}
20type Operation is Data:
21 Relate{}
22 ReorderChildren{}
23type Failure<S: Data> is Data:
24 Failure{relation: Descriptor<S>,operation: Operation,source: K.Key,target: K.Key,error: Error}
25type Inverse<S: Data> is Data:
26 Inverse{relation: Descriptor<S>,target: K.Key,sources: List<&2,K.Key>}
27type SpecGraph<S: Data> is Data:
28 SpecGraph{edges: List<&2,Edge<S>>}
29type Graph<S: Data> is Data:
30 Graph{edges: List<&2,Edge<S>>,inverses: List<&2,Inverse<S>>}
31type SpecResult<S: Data> is Data:
32 SpecResult{graph: SpecGraph<S>,error: Maybe<&2,Error>}
33type CoreResult<S: Data> is Data:
34 CoreResult{graph: Graph<S>,error: Maybe<&2,Error>}
35type ChildStatus is Data:
36 ChildStatus{id: K.Key,live: Bool}
37
38# Diagnostic continuation, not a new relation rejection policy.
39type CleanupFrame<S:Data> is Data:
40 CleanupEnter{id:K.Key}
41 CleanupDescriptors{id:K.Key,remaining:List<&2,Descriptor<S>>}
42 CleanupChildren{id:K.Key,descriptor:Descriptor<S>,remainingDescriptors:List<&2,Descriptor<S>>,remainingChildren:List<&2,K.Key>}
43 CleanupFinish{id:K.Key}
44# Public reorder provisioning accepts this nominal hierarchy family only.
45type HierarchyDescriptor<S:Data> is Data:
46 HierarchyDescriptor{key:U32,name:String,inverseName:String}