Skip to content

Commit

Permalink
add self realted procedue waypoint finding
Browse files Browse the repository at this point in the history
  • Loading branch information
WMXPY committed Oct 21, 2023
1 parent 964106f commit 6dfb5a2
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 7 deletions.
5 changes: 3 additions & 2 deletions src/record/definition/procedure-enrich.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,13 @@ export type PubRecordProcedureEnrichRecord =
Record<string, PubRecordProcedureEnrich<PUB_PROCEDURE_TYPE>>;

export type PubRecordProcedureEnrich<T extends PUB_PROCEDURE_TYPE> =
& PubRecordProcedureEnrichCommon
& PubRecordProcedureEnrichCommon<T>
& PubRecordProcedureEnrichSwitch<T>;

export type PubRecordProcedureEnrichCommon = {
export type PubRecordProcedureEnrichCommon<T extends PUB_PROCEDURE_TYPE> = {

readonly procedureIdentifier: string;
readonly procedureType: T;

readonly enterWaypoint: string;
};
Expand Down
55 changes: 51 additions & 4 deletions src/record/enrich/find-procedure-waypoint.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,65 @@
* @description Find Procedure Waypoint
*/

import { CONNECTION_WAYPOINT_TYPE, PubConnectionConfiguration } from "../../connection/definition/configuration";
import { PubRecordEnrichProcedureTypeInvalidError } from "../../error/record/enrich/procedure-type-invalid";
import { PUB_PROCEDURE_TYPE } from "../../procedure/definition/configuration";
import { PubRecordProcedureEnrich } from "../definition/procedure-enrich";

export const findTriggerProcedureWaypoint = (
connection: PubConnectionConfiguration,
enrichProcedure: PubRecordProcedureEnrich<PUB_PROCEDURE_TYPE>,
): string => {

return findProcedureWaypoint(
connection.triggerProcedureWaypointType,
enrichProcedure,
);
};

export const findNextProcedureWaypoint = (
connection: PubConnectionConfiguration,
enrichProcedure: PubRecordProcedureEnrich<PUB_PROCEDURE_TYPE>,
): string => {

if (connection.nextProcedureWaypointType === CONNECTION_WAYPOINT_TYPE.PROCEDURE_SELF_START) {
return findProcedureWaypoint(
connection.nextProcedureWaypointType,
enrichProcedure,
);
};

const findProcedureWaypoint = (
procedureWaypointType: CONNECTION_WAYPOINT_TYPE,
enrichProcedure: PubRecordProcedureEnrich<PUB_PROCEDURE_TYPE>,
): string => {

if (procedureWaypointType === CONNECTION_WAYPOINT_TYPE.PROCEDURE_SELF_START) {
return enrichProcedure.enterWaypoint;
}

if (connection.nextProcedureWaypointType === CONNECTION_WAYPOINT_TYPE.PROCEDURE_SELF_END) {
if (enr)
if (procedureWaypointType === CONNECTION_WAYPOINT_TYPE.PROCEDURE_SELF_END) {

return enrichProcedure.exitWaypoint;
const requiredTypes: PUB_PROCEDURE_TYPE[] = [
PUB_PROCEDURE_TYPE.START,
PUB_PROCEDURE_TYPE.DRIVER,
PUB_PROCEDURE_TYPE.MAP,
];

if (!requiredTypes.includes(enrichProcedure.procedureType)) {
throw PubRecordEnrichProcedureTypeInvalidError.create(
procedureWaypointType,
requiredTypes,
);
}

const fixedTypeEnrichProcedure: PubRecordProcedureEnrich<
| PUB_PROCEDURE_TYPE.START
| PUB_PROCEDURE_TYPE.DRIVER
| PUB_PROCEDURE_TYPE.MAP> =
enrichProcedure as any;

return fixedTypeEnrichProcedure.exitWaypoint;
}

return "";
};
3 changes: 2 additions & 1 deletion src/record/enrich/init-procedure.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,9 @@ export const recordInitEnrichProcedure = <T extends PUB_PROCEDURE_TYPE>(
procedure: PubProcedureConfiguration<T>,
): PubRecordProcedureEnrich<T> => {

const common: PubRecordProcedureEnrichCommon = {
const common: PubRecordProcedureEnrichCommon<T> = {
procedureIdentifier: procedure.identifier,
procedureType: procedure.type,
enterWaypoint: generateIdentifier(),
};

Expand Down

0 comments on commit 6dfb5a2

Please sign in to comment.