def relation_validated
bendvy-ecs-core@0.1.0.4 · ordinary_reader_stream_parameter.bend:572
import bendvy-ecs-core@0.1.0.4/ordinary_reader_stream_parameter.bend as OrdinaryReaderStreamParameter
import Base
import bendvy-ecs-core@0.1.0.4/reader_parameter.bend as RP
import bendvy-ecs-core@0.1.0.4/world.bend as W
import bendvy-ecs-core@0.1.0.4/event_family_routing.bend as Route
import bendvy-ecs-core@0.1.0.4/event_notice_runtime.bend as Mixed
import bendvy-ecs-core@0.1.0.4/relation_commands.bend as Notice
import bendvy-ecs-core@0.1.0.4/relation_failure_reader.bend as KDecl
import bendvy-ecs-core@0.1.0.4/internal/relation_failures/domains.bend as KD
572def relation_validated(~S:Data,~C:Type,~R:Type,~P:Data,~F:Type,~H:Type,
573 ~declarations:List<&2,KDecl.Declaration<S>>,
574 state:Mixed.State<S,P,F,H>,tick:Nat,facts:RP.RegistrationFacts,
575 +id:Maybe<&2,U32>,+keys:List<&2,KD.DescriptorKey<S>>,
576 registered:W.World<S,C,R,Notice.Notice<S,P>> & Bool) -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> & (RelationOwner<S,P> & Bool):
577 match facts:
578 case RP.RegistrationFacts{_,_,_,+access}:
579 match registered:
580 case (world,isRegistered):
581 +expected=relation_access(~S,declarations)
582 +valid=Bool.and(isRegistered,Bool.and(access_subset(expected,access),
583 Bool.and(relation_keys_equal(~S,keys,KDecl.keys(~S,declarations)),has_reader(id))))
584 (Route.Runtime{world,state,tick},(RelationOwner{facts,id,keys},valid))