ordinary_app_checked_family_schedule.bend

bendvy-ecs-core@0.1.0.1 · 69 lines · 0 definitions

1import Base
2import bendvy-ecs-core@0.1.0.1/execution_context.bend as Ctx
3import bendvy-ecs-core@0.1.0.1/ordinary_app_execution.bend as Execution
4import bendvy-ecs-core@0.1.0.1/ordinary_app_event_family_runtime.bend as Family
5import bendvy-ecs-core@0.1.0.1/event_family_routing.bend as Route
6import bendvy-ecs-core@0.1.0.1/ordinary_app_checked_schedule.bend as Old
7import bendvy-ecs-core@0.1.0.1/ordinary_app_schedule.bend as Single
8import bendvy-ecs-core@0.1.0.1/ordinary_app_schema.bend as App
9import bendvy-ecs-core@0.1.0.1/ordinary_app_composer.bend as Build
10import bendvy-ecs-core@0.1.0.1/ordinary_app_observation_data.bend as DTO
11import bendvy-ecs-core@0.1.0.1/ordinary_app_registration_fields.bend as Fields
12import bendvy-ecs-core@0.1.0.1/ordinary_checked_bindings.bend as B
13import bendvy-ecs-core@0.1.0.1/world.bend as W
14import bendvy-ecs-core@0.1.0.1/system.bend as Sys
15import bendvy-ecs-core@0.1.0.1/schedule_provision.bend as SP
16import bendvy-ecs-core@0.1.0.1/checked_condition_schedule.bend as Checked
17# Family and tick are an opaque part of the existing scheduler owner.
18# The existing reader-owner fold remains the sole metadata source.
19def folded(~S:Data,~H:Type,~F:Type,held:F & Nat,value:H & List<&2,Fields.Fields<S>>) -> (H & (F & Nat)) & List<&2,Fields.Fields<S>>:
20  match value:
21    case (owners,fields):((owners,held),fields)
22def fold_family(~S:Data,~H:Type,~F:Type,~fold:H -> H & List<&2,Fields.Fields<S>>,value:H & (F & Nat)) -> (H & (F & Nat)) & List<&2,Fields.Fields<S>>:
23  match value:
24    case (owners,held):folded(~S,~H,~F,held,fold(owners))
25type Application<S:Data,C:Type,R:Type,E:Data,F:Type,H:Type,Rows:Data,-observe:W.World<S,C,R,E> -> W.World<S,C,R,E> & DTO.Observation<Rows>,-fold:H -> H & List<&2,Fields.Fields<S>>,B:Type,-select:B -> W.World<S,C,R,E> -> U32 -> B.Selection<W.World<S,C,R,E>,B>> is Type:
26  Application{app:Old.Application<S,C,R,E,(H & (F & Nat)),Rows,observe,fold_family(~S,~H,~F,~fold),B,select>}
27type Attachment<-Original:Type,-Guards:Type,-Scheduled:Type> is Type:
28  Attached{app:Scheduled}
29  Invalid{app:Original,bindings:Guards}
30def original(~S:Data,~C:Type,~R:Type,~E:Data,~F:Type,~H:Type,~Rows:Data,~observe:W.World<S,C,R,E> -> W.World<S,C,R,E> & DTO.Observation<Rows>,~fold:H -> H & List<&2,Fields.Fields<S>>,value:App.Application<S,C,R,E,(H & (F & Nat)),Rows,observe,fold_family(~S,~H,~F,~fold)>) -> Family.Application<S,C,R,E,F,H,Rows,observe,fold>:
31  match value:
32    case App.Application{schema,Build.Registered{world,(owners,(family,tick)),recipe,debug}}:Family.Application{schema,Route.Runtime{world,family,tick},owners,recipe,debug}
33def checked(~S:Data,~C:Type,~R:Type,~E:Data,~F:Type,~H:Type,~Rows:Data,~observe:W.World<S,C,R,E> -> W.World<S,C,R,E> & DTO.Observation<Rows>,~fold:H -> H & List<&2,Fields.Fields<S>>,~B:Type,~select:B -> W.World<S,C,R,E> -> U32 -> B.Selection<W.World<S,C,R,E>,B>,value:Old.Attachment<Single.Application<S,C,R,E,(H & (F & Nat)),Rows,observe,fold_family(~S,~H,~F,~fold)>,B.Bindings<W.World<S,C,R,E>,B,select>,Old.Application<S,C,R,E,(H & (F & Nat)),Rows,observe,fold_family(~S,~H,~F,~fold),B,select>>) -> Attachment<Family.Application<S,C,R,E,F,H,Rows,observe,fold>,B.Bindings<W.World<S,C,R,E>,B,select>,Application<S,C,R,E,F,H,Rows,observe,fold,B,select>>:
34  match value:
35    case Old.Attached{app}:Attached{Application{app}}
36    case Old.Invalid{Single.Application{app,_,_,_,_,_},bindings}:Invalid{original(~S,~C,~R,~E,~F,~H,~Rows,~observe,~fold,app),bindings}
37def scheduled(~S:Data,~C:Type,~R:Type,~E:Data,~F:Type,~H:Type,~Rows:Data,~observe:W.World<S,C,R,E> -> W.World<S,C,R,E> & DTO.Observation<Rows>,~fold:H -> H & List<&2,Fields.Fields<S>>,~B:Type,~select:B -> W.World<S,C,R,E> -> U32 -> B.Selection<W.World<S,C,R,E>,B>,bindings:B.Bindings<W.World<S,C,R,E>,B,select>,value:Single.Attachment<App.Application<S,C,R,E,(H & (F & Nat)),Rows,observe,fold_family(~S,~H,~F,~fold)>,Single.Application<S,C,R,E,(H & (F & Nat)),Rows,observe,fold_family(~S,~H,~F,~fold)>>) -> Attachment<Family.Application<S,C,R,E,F,H,Rows,observe,fold>,B.Bindings<W.World<S,C,R,E>,B,select>,Application<S,C,R,E,F,H,Rows,observe,fold,B,select>>:
38  match value:
39    case Single.Invalid{app}:Invalid{original(~S,~C,~R,~E,~F,~H,~Rows,~observe,~fold,app),bindings}
40    case Single.Attached{app}:checked(~S,~C,~R,~E,~F,~H,~Rows,~observe,~fold,~B,~select,Old.attach(~S,~C,~R,~E,~(H & (F & Nat)),~Rows,~observe,~fold_family(~S,~H,~F,~fold),~B,~select,app,bindings))
41def attach(~S:Data,~C:Type,~R:Type,~E:Data,~F:Type,~H:Type,~Rows:Data,~observe:W.World<S,C,R,E> -> W.World<S,C,R,E> & DTO.Observation<Rows>,~fold:H -> H & List<&2,Fields.Fields<S>>,~B:Type,~select:B -> W.World<S,C,R,E> -> U32 -> B.Selection<W.World<S,C,R,E>,B>,value:Family.Application<S,C,R,E,F,H,Rows,observe,fold>,name:String,plan:SP.Plan<S>,bindings:B.Bindings<W.World<S,C,R,E>,B,select>) -> Attachment<Family.Application<S,C,R,E,F,H,Rows,observe,fold>,B.Bindings<W.World<S,C,R,E>,B,select>,Application<S,C,R,E,F,H,Rows,observe,fold,B,select>>:
42  match value:
43    case Family.Application{schema,Route.Runtime{world,family,tick},owners,recipe,debug}:scheduled(~S,~C,~R,~E,~F,~H,~Rows,~observe,~fold,~B,~select,bindings,Single.attach(~S,~C,~R,~E,~(H & (F & Nat)),~Rows,~observe,~fold_family(~S,~H,~F,~fold),App.Application{schema,Build.Registered{world,(owners,(family,tick)),recipe,debug}},name,plan))
44def enabled(~S:Data,~C:Type,~R:Type,~E:Data,~F:Type,~H:Type,~Rows:Data,~observe:W.World<S,C,R,E> -> W.World<S,C,R,E> & DTO.Observation<Rows>,~fold:H -> H & List<&2,Fields.Fields<S>>,~B:Type,~select:B -> W.World<S,C,R,E> -> U32 -> B.Selection<W.World<S,C,R,E>,B>,value:Application<S,C,R,E,F,H,Rows,observe,fold,B,select>,flag:Bool) -> Application<S,C,R,E,F,H,Rows,observe,fold,B,select>:
45  match value:
46    case Application{app}:Application{Old.enabled(~S,~C,~R,~E,~(H & (F & Nat)),~Rows,~observe,~fold_family(~S,~H,~F,~fold),~B,~select,app,flag)}
47def observed(~S:Data,~C:Type,~R:Type,~E:Data,~F:Type,~H:Type,~Rows:Data,~observe:W.World<S,C,R,E> -> W.World<S,C,R,E> & DTO.Observation<Rows>,~fold:H -> H & List<&2,Fields.Fields<S>>,~B:Type,~select:B -> W.World<S,C,R,E> -> U32 -> B.Selection<W.World<S,C,R,E>,B>,value:Old.Application<S,C,R,E,(H & (F & Nat)),Rows,observe,fold_family(~S,~H,~F,~fold),B,select> & Maybe<&2,Old.Description<S,Rows>>) -> Application<S,C,R,E,F,H,Rows,observe,fold,B,select> & Maybe<&2,Old.Description<S,Rows>>:
48  match value:
49    case (app,view):(Application{app},view)
50def snapshot(~S:Data,~C:Type,~R:Type,~E:Data,~F:Type,~H:Type,~Rows:Data,~observe:W.World<S,C,R,E> -> W.World<S,C,R,E> & DTO.Observation<Rows>,~fold:H -> H & List<&2,Fields.Fields<S>>,~B:Type,~select:B -> W.World<S,C,R,E> -> U32 -> B.Selection<W.World<S,C,R,E>,B>,value:Application<S,C,R,E,F,H,Rows,observe,fold,B,select>) -> Application<S,C,R,E,F,H,Rows,observe,fold,B,select> & Maybe<&2,Old.Description<S,Rows>>:
51  match value:
52    case Application{app}:observed(~S,~C,~R,~E,~F,~H,~Rows,~observe,~fold,~B,~select,Old.snapshot(~S,~C,~R,~E,~(H & (F & Nat)),~Rows,~observe,~fold_family(~S,~H,~F,~fold),~B,~select,app))
53def returned(~S:Data,~C:Type,~R:Type,~E:Data,~F:Type,~H:Type,~Rows:Data,~observe:W.World<S,C,R,E> -> W.World<S,C,R,E> & DTO.Observation<Rows>,~fold:H -> H & List<&2,Fields.Fields<S>>,~B:Type,~select:B -> W.World<S,C,R,E> -> U32 -> B.Selection<W.World<S,C,R,E>,B>,~Error:Data,value:Single.RunResult<Old.Application<S,C,R,E,(H & (F & Nat)),Rows,observe,fold_family(~S,~H,~F,~fold),B,select>,S,Checked.Error<Error>>) -> Single.RunResult<Application<S,C,R,E,F,H,Rows,observe,fold,B,select>,S,Checked.Error<Error>>:
54  match value:
55    case Single.Finished{app,observations}:Single.Finished{Application{app},observations}
56    case Single.Failed{app,error,observations}:Single.Failed{Application{app},error,observations}
57    case Single.Rejected{app}:Single.Rejected{Application{app}}
58    case Single.Missing{app,requirements}:Single.Missing{Application{app},requirements}
59def run_classic(~S:Data,~C:Type,~R:Type,~E:Data,~F:Type,~H:Type,~Rows:Data,~observe:W.World<S,C,R,E> -> W.World<S,C,R,E> & DTO.Observation<Rows>,~fold:H -> H & List<&2,Fields.Fields<S>>,~B:Type,~select:B -> W.World<S,C,R,E> -> U32 -> B.Selection<W.World<S,C,R,E>,B>,~Error:Data,~dispatch:(H & (F & Nat)) -> W.World<S,C,R,E> -> U32 -> (H & (F & Nat)) & Sys.Outcome<W.World<S,C,R,E>,Error,Unit>,~provision:W.World<S,C,R,E> -> W.World<S,C,R,E> & List<&2,SP.Requirement<S>>,value:Application<S,C,R,E,F,H,Rows,observe,fold,B,select>) -> Single.RunResult<Application<S,C,R,E,F,H,Rows,observe,fold,B,select>,S,Checked.Error<Error>>:
60  match value:
61    case Application{app}:returned(~S,~C,~R,~E,~F,~H,~Rows,~observe,~fold,~B,~select,~Error,Old.run_classic(~S,~C,~R,~E,~(H & (F & Nat)),~Rows,~observe,~fold_family(~S,~H,~F,~fold),~B,~select,~Error,~dispatch,~provision,app))
62
63def returned_context(~S:Data,~C:Type,~R:Type,~E:Data,~F:Type,~H:Type,~Rows:Data,~observe:W.World<S,C,R,E> -> W.World<S,C,R,E> & DTO.Observation<Rows>,~fold:H -> H & List<&2,Fields.Fields<S>>,~B:Type,~select:B -> W.World<S,C,R,E> -> U32 -> B.Selection<W.World<S,C,R,E>,B>,~Error:Data,value:Execution.Run<Old.Application<S,C,R,E,(H & (F & Nat)),Rows,observe,fold_family(~S,~H,~F,~fold),B,select>,S,Checked.Error<Error>>) -> Execution.Run<Application<S,C,R,E,F,H,Rows,observe,fold,B,select>,S,Checked.Error<Error>>:
64  match value:
65    case Execution.Run{result,batch}:Execution.Run{returned(~S,~C,~R,~E,~F,~H,~Rows,~observe,~fold,~B,~select,~Error,result),batch}
66
67def run(~S:Data,~C:Type,~R:Type,~E:Data,~F:Type,~H:Type,~Rows:Data,~observe:W.World<S,C,R,E> -> W.World<S,C,R,E> & DTO.Observation<Rows>,~fold:H -> H & List<&2,Fields.Fields<S>>,~B:Type,~select:B -> W.World<S,C,R,E> -> U32 -> B.Selection<W.World<S,C,R,E>,B>,~Error:Data,~dispatch:(H & (F & Nat)) -> Ctx.Context<W.World<S,C,R,E>> -> U32 -> (H & (F & Nat)) & Sys.Outcome<Ctx.Context<W.World<S,C,R,E>>,Error,Unit>,~provision:W.World<S,C,R,E> -> W.World<S,C,R,E> & List<&2,SP.Requirement<S>>,value:Application<S,C,R,E,F,H,Rows,observe,fold,B,select>) -> Execution.Run<Application<S,C,R,E,F,H,Rows,observe,fold,B,select>,S,Checked.Error<Error>>:
68  match value:
69    case Application{app}:returned_context(~S,~C,~R,~E,~F,~H,~Rows,~observe,~fold,~B,~select,~Error,Old.run(~S,~C,~R,~E,~(H & (F & Nat)),~Rows,~observe,~fold_family(~S,~H,~F,~fold),~B,~select,~Error,~dispatch,~provision,app))