type Relations
bendvy-ecs-core@0.1.0.3 · execution_command_permission.bend:18
import bendvy-ecs-core@0.1.0.3/execution_command_permission.bend as ExecutionCommandPermission
import Base
import bendvy-ecs-core@0.1.0.3/execution_composer_layout.bend as Layout
import bendvy-ecs-core@0.1.0.3/execution_resource_policy.bend as Policy
import bendvy-ecs-core@0.1.0.3/execution_relation_store.bend as RelationStore
import bendvy-ecs-core@0.1.0.3/relation_types.bend as Relation
import bendvy-ecs-core@0.1.0.3/execution_lifetime_scope_store.bend as ScopeStore
18
19
20type Relations<-S:Data,-resources:Layout.Layout> is Data:
21 NoRelations{}
22 RelationAllowed{route:Layout.Route,valid:{Layout.grant_valid(~resources,~route) == True{} : Bool},descriptor:Relation.Descriptor<S>,payload:{Layout.payload(resources,route) == RelationStore.Store<S,descriptor> : Type},view:{Layout.view(resources,route) == RelationStore.View<S,descriptor> : Data},protected:{Layout.policy(resources,route) == Policy.ProtectedRelation{S,descriptor} : Policy.Policy},rest:Relations<S,resources>}
23 ScopeAllowed{route:Layout.Route,valid:{Layout.grant_valid(~resources,~route) == True{} : Bool},payload:{Layout.payload(resources,route) == ScopeStore.Store<S> : Type},view:{Layout.view(resources,route) == ScopeStore.View<S> : Data},protected:{Layout.policy(resources,route) == Policy.ProtectedLifetimeScope{S} : Policy.Policy},rest:Relations<S,resources>}