From 9af44b313fbaadbbe1d484f70634c6dce4ed1071 Mon Sep 17 00:00:00 2001 From: WMXPY Date: Sun, 22 Oct 2023 00:26:29 -0700 Subject: [PATCH] add iternal procedue way point --- src/record/enrich/find-procedure-waypoint.ts | 43 ++++++++++++++++++-- src/record/enrich/init-connection.ts | 15 ++++++- 2 files changed, 53 insertions(+), 5 deletions(-) diff --git a/src/record/enrich/find-procedure-waypoint.ts b/src/record/enrich/find-procedure-waypoint.ts index 1b59fed..495a3f7 100644 --- a/src/record/enrich/find-procedure-waypoint.ts +++ b/src/record/enrich/find-procedure-waypoint.ts @@ -39,6 +39,7 @@ const findProcedureWaypoint = ( switch (procedureWaypointType) { case CONNECTION_WAYPOINT_TYPE.PROCEDURE_SELF_START: { + return enrichProcedure.enterWaypoint; } case CONNECTION_WAYPOINT_TYPE.PROCEDURE_SELF_END: { @@ -59,11 +60,47 @@ const findProcedureWaypoint = ( const fixedTypeEnrichProcedure: PubRecordProcedureEnrich< | PUB_PROCEDURE_TYPE.START | PUB_PROCEDURE_TYPE.DRIVER - | PUB_PROCEDURE_TYPE.MAP> = - enrichProcedure as any; + | PUB_PROCEDURE_TYPE.MAP> = enrichProcedure as any; return fixedTypeEnrichProcedure.exitWaypoint; } + case CONNECTION_WAYPOINT_TYPE.PROCEDURE_ITERATE_START: { + + const requiredTypes: PUB_PROCEDURE_TYPE[] = [ + PUB_PROCEDURE_TYPE.MAP, + ]; + + if (!requiredTypes.includes(enrichProcedure.procedureType)) { + throw PubRecordEnrichProcedureTypeInvalidError.create( + procedureWaypointType, + requiredTypes, + ); + } + + const fixedTypeEnrichProcedure: PubRecordProcedureEnrich< + | PUB_PROCEDURE_TYPE.MAP + > = enrichProcedure as any; + + return fixedTypeEnrichProcedure.iterationStartWaypoint; + } + case CONNECTION_WAYPOINT_TYPE.PROCEDURE_ITERATE_END: { + + const requiredTypes: PUB_PROCEDURE_TYPE[] = [ + PUB_PROCEDURE_TYPE.MAP, + ]; + + if (!requiredTypes.includes(enrichProcedure.procedureType)) { + throw PubRecordEnrichProcedureTypeInvalidError.create( + procedureWaypointType, + requiredTypes, + ); + } + + const fixedTypeEnrichProcedure: PubRecordProcedureEnrich< + | PUB_PROCEDURE_TYPE.MAP + > = enrichProcedure as any; + + return fixedTypeEnrichProcedure.iterationEndWaypoint; + } } - return ""; }; diff --git a/src/record/enrich/init-connection.ts b/src/record/enrich/init-connection.ts index 2a6a56f..15be7dc 100644 --- a/src/record/enrich/init-connection.ts +++ b/src/record/enrich/init-connection.ts @@ -9,6 +9,7 @@ import { PubRecordEnrichProcedureIdentifierNotFoundDuringEnrichError } from "../ import { PUB_PROCEDURE_TYPE } from "../../procedure/definition/configuration"; import { PubRecordConnectionEnrich, PubRecordConnectionEnrichMap } from "../definition/connection-enrich"; import { PubRecordProcedureEnrich, PubRecordProcedureEnrichMap } from "../definition/procedure-enrich"; +import { findNextProcedureWaypoint, findTriggerProcedureWaypoint } from "./find-procedure-waypoint"; export const recordInitEnrichConnectionMap = ( connections: PubConnectionConfiguration[], @@ -39,6 +40,11 @@ export const recordInitEnrichConnection = ( throw PubRecordEnrichProcedureIdentifierNotFoundDuringEnrichError.create(connection.triggerProcedureIdentifier); } + const triggerWaypoint: string = findTriggerProcedureWaypoint( + connection, + triggerEnrich, + ); + const nextEnrich: PubRecordProcedureEnrich | undefined = enrichProcedureMap.get(connection.nextProcedureIdentifier); @@ -46,11 +52,16 @@ export const recordInitEnrichConnection = ( throw PubRecordEnrichProcedureIdentifierNotFoundDuringEnrichError.create(connection.nextProcedureIdentifier); } + const nextWaypoint: string = findNextProcedureWaypoint( + connection, + nextEnrich, + ); + return { connectionIdentifier: connection.identifier, - triggerWaypoint: triggerEnrich.enterWaypoint, - nextWaypoint: nextEnrich.enterWaypoint, + triggerWaypoint, + nextWaypoint, }; };