def snapshot

bendvy-ecs-core@0.1.0.4 · ordinary_app_composer.bend:31

import bendvy-ecs-core@0.1.0.4/ordinary_app_composer.bend as OrdinaryAppComposer
import Base
import bendvy-ecs-core@0.1.0.4/ordinary_app_registration_fields.bend as Records
import bendvy-ecs-core@0.1.0.4/ordinary_app_observation_data.bend as DTO

31# Return App and optional detached bindings/observation. Disabled returns None
32# before calling fold or observe. Enabled folds registration owners first, then
33# observes World, retaining both returned owners. The callbacks remain trusted;
34# this wrapper is not a universal noninterference proof or a restorable save.
35# See ordinary-app-component.bend and examples/scheduled-health/application.bend.
36def snapshot(~S:Data,~World:Type,~Owners:Type,~Rows:Data,~observe:World -> World & DTO.Observation<Rows>,~fold:Owners -> Owners & List<&2,Records.Fields<S>>,app:Registered<S,World,Owners,Rows,observe,fold>) -> Registered<S,World,Owners,Rows,observe,fold> & Maybe<&2,DTO.Product<List<&2,DTO.Binding<S>>,DTO.Observation<Rows>>>:
37  match app:
38    case Registered{world,owners,recipe,False{}}:(Registered{world,owners,recipe,False{}},None{})
39    case Registered{world,owners,_,True{}}:folded(~S,~World,~Owners,~Rows,~observe,~fold,world,fold(owners))

Uses (11)

Used by (4)