blob: 820748321ac93e9da6659f09154ed4fec4ede1d5 [file] [log] [blame]
module CanonicElement;
create OUT: PEOPLE from IN: ROLES;
helper context ROLES!Role def: toTuple: TupleType(id: String, firstName: String,
lastName: String) =
Tuple{id = self.personId, firstName = self.personFirstName, lastName = self.
personLastName};
helper def: roleByTuple: Map(TupleType(id: String, firstName: String, lastName: String),
ROLES!Role) =
ROLES!Role.allInstances() -> iterate(r; acc: Map(TupleType(id: String, firstName:
String, lastName: String), ROLES!Role) = Map {} | acc.including(r.toTuple,
r));
helper context ROLES!Role def: canonic: ROLES!Role =
thisModule.roleByTuple.get(self.toTuple);
unique lazy rule RolesToPerson {
from
r: TupleType(id: String, firstName: String, lastName: String)
using {
roles: Sequence(ROLES!Role) = ROLES!Role.allInstances() -> select(e | e.personId
= r.id);
}
to
p: PEOPLE!Person (
id <- r.id,
firstName <- r.firstName,
lastName <- r.lastName
)
}
endpoint rule Transform() {
do {
for (r in ROLES!Role.allInstances()) {
thisModule.RolesToPerson(r.toTuple);
}
}
}