restore_save.bend
bendvy-ecs-core@0.1.0.4 · 23 lines · 3 definitions
1import Base
2import bendvy-ecs-core@0.1.0.4/snapshot_schema.bend as Schema
3import bendvy-ecs-core@0.1.0.4/ordinary_schema.bend as Ordinary
4import bendvy-ecs-core@0.1.0.4/owner_product.bend as Product
5import bendvy-ecs-core@0.1.0.4/decode_data.bend as D
6
7def resources_join(~User:Type,~Logs:Type,logs:Logs,observed:User & List<&2,D.Field>) -> Product.Owner<User,Logs> & List<&2,D.Field>:
8 match observed:
9 case (user,fields):(Product.Owner{user,logs},fields)
10
11
12def resources(~User:Type,~Logs:Type,~project:User -> User & List<&2,D.Field>,owner:Product.Owner<User,Logs>) -> Product.Owner<User,Logs> & List<&2,D.Field>:
13 match owner:
14 case Product.Owner{user,logs}:resources_join(~User,~Logs,logs,project(user))
15
16
17
18
19
20
21def with_events(~S:Data,~C:Type,~User:Type,~Logs:Type,~components:U32 -> C -> C & List<&2,D.Field>,~user:User -> User & List<&2,D.Field>,schema:Schema.Schema<S,C,User,True{},components,user>) -> Schema.Schema<S,C,Product.Owner<User,Logs>,True{},components,resources(~User,~Logs,~user)>:
22 match schema:
23 case Schema.Schema{Ordinary.Schema{entries}}:Schema.Schema{Ordinary.Schema{entries}}