Skip to content

Commit

Permalink
refactor connection type for break change
Browse files Browse the repository at this point in the history
  • Loading branch information
WMXPY committed Oct 16, 2023
1 parent a145922 commit 3daec22
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 150 deletions.
37 changes: 3 additions & 34 deletions src/connection/definition/configuration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,43 +4,12 @@
* @description Configuration
*/

import { PUB_CONNECTION_PROCEDURE_REFERENCE_TYPE, PubConnectionProcedureReference } from "./procedure-reference";

export enum PUB_CONNECTION_TYPE {

DIRECT = "DIRECT",
CONDITIONAL = "CONDITIONAL",
}

export type PubConnectionConfiguration<T extends PUB_CONNECTION_TYPE> = {
export type PubConnectionConfiguration = {

readonly identifier: string;

readonly triggerProcedure: PubConnectionProcedureReference<
PUB_CONNECTION_PROCEDURE_REFERENCE_TYPE
>;
readonly nextProcedure: PubConnectionProcedureReference<
PUB_CONNECTION_PROCEDURE_REFERENCE_TYPE
>;
readonly triggerWaypoint: string;
readonly targetWaypoint: string;

readonly parametersMapping: Record<string, string>;

readonly type: T;

readonly payload: PubConnectionConfigurationPayloadSwitch<T>;
};

export type PubConnectionConfigurationPayloadSwitch<T extends PUB_CONNECTION_TYPE> =
T extends PUB_CONNECTION_TYPE.DIRECT ? PubConnectionConfiguration_Direct :
T extends PUB_CONNECTION_TYPE.CONDITIONAL ? PubConnectionConfiguration_Conditional :
never;

export type PubConnectionConfiguration_Direct = {

// No Payload
};

export type PubConnectionConfiguration_Conditional = {

// No Payload
};
39 changes: 0 additions & 39 deletions src/connection/definition/procedure-reference.ts

This file was deleted.

55 changes: 26 additions & 29 deletions src/execute/resume-execute.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,9 @@
* @description Resume Execute
*/

import { PUB_CONNECTION_TYPE, PubConnectionConfiguration } from "../connection/definition/configuration";
import { PUB_CONNECTION_PROCEDURE_REFERENCE_TYPE, PubConnectionProcedureReference } from "../connection/definition/procedure-reference";
import { PubConnectionConfiguration } from "../connection/definition/configuration";
import { PubExecuteConfigurationConnectionNotFoundError } from "../error/execute/configuration/connection-not-found";
import { PubExecuteConfigurationProcedureNotFoundError } from "../error/execute/configuration/procedure-not-found";
import { OrchestrationResourceManager } from "../orchestration/resource/manager";
import { PUB_PROCEDURE_TYPE, PubProcedureConfiguration } from "../procedure/definition/configuration";
import { PubRecordProjection } from "../record/definition/projection";
import { PubRecord } from "../record/record";

Expand All @@ -22,12 +19,12 @@ export const resumeExecute = async (

for (const projection of projections) {

const connections: Array<PubConnectionConfiguration<PUB_CONNECTION_TYPE>> =
const connections: PubConnectionConfiguration[] =
projection.triggerConnections
.map((
connectionIdentifier: string,
) => {
const connection: PubConnectionConfiguration<PUB_CONNECTION_TYPE> | null =
const connection: PubConnectionConfiguration | null =
record.cachedConfiguration.getConnectionByIdentifier(connectionIdentifier);

if (!connection) {
Expand All @@ -39,34 +36,34 @@ export const resumeExecute = async (
return connection;
});

const dependencyProcedures: Array<PubProcedureConfiguration<PUB_PROCEDURE_TYPE>> =
connections
.filter((connection: PubConnectionConfiguration<PUB_CONNECTION_TYPE>) =>
connection.nextProcedure.type === PUB_CONNECTION_PROCEDURE_REFERENCE_TYPE.PROCEDURE,
)
.map((connection: PubConnectionConfiguration<PUB_CONNECTION_TYPE>) => {
// const dependencyProcedures: Array<PubProcedureConfiguration<PUB_PROCEDURE_TYPE>> =
// connections
// .filter((connection: PubConnectionConfiguration) =>
// connection.nextProcedure.type === PUB_CONNECTION_PROCEDURE_REFERENCE_TYPE.PROCEDURE,
// )
// .map((connection: PubConnectionConfiguration) => {

const nextProcedure: PubConnectionProcedureReference<
PUB_CONNECTION_PROCEDURE_REFERENCE_TYPE.PROCEDURE
> = connection.nextProcedure as PubConnectionProcedureReference<
PUB_CONNECTION_PROCEDURE_REFERENCE_TYPE.PROCEDURE
>;
// const nextProcedure: PubConnectionProcedureReference<
// PUB_CONNECTION_PROCEDURE_REFERENCE_TYPE.PROCEDURE
// > = connection.nextProcedure as PubConnectionProcedureReference<
// PUB_CONNECTION_PROCEDURE_REFERENCE_TYPE.PROCEDURE
// >;

const procedure: PubProcedureConfiguration<PUB_PROCEDURE_TYPE> | null =
record.cachedConfiguration.getProcedureByIdentifier(
nextProcedure.payload.procedureIdentifier,
);
// const procedure: PubProcedureConfiguration<PUB_PROCEDURE_TYPE> | null =
// record.cachedConfiguration.getProcedureByIdentifier(
// nextProcedure.payload.procedureIdentifier,
// );

if (!procedure) {
throw PubExecuteConfigurationProcedureNotFoundError.withIdentifier(
nextProcedure.payload.procedureIdentifier,
);
}
// if (!procedure) {
// throw PubExecuteConfigurationProcedureNotFoundError.withIdentifier(
// nextProcedure.payload.procedureIdentifier,
// );
// }

return procedure;
});
// return procedure;
// });

console.log(connections, dependencyProcedures);
console.log(connections);
}

return record;
Expand Down
45 changes: 3 additions & 42 deletions src/orchestration/procedure/find-depdencies.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,52 +4,13 @@
* @description Find Dependencies
*/

import { PUB_CONNECTION_TYPE, PubConnectionConfiguration } from "../../connection/definition/configuration";
import { PUB_CONNECTION_PROCEDURE_REFERENCE_TYPE, PubConnectionProcedureReference } from "../../connection/definition/procedure-reference";
import { PubExecuteConfigurationProcedureNotFoundError } from "../../error/execute/configuration/procedure-not-found";
import { PUB_PROCEDURE_TYPE, PubProcedureConfiguration } from "../../procedure/definition/configuration";
import { PubRecord } from "../../record/record";

export const findProcedureDependencies = (
record: PubRecord,
procedure: PubConnectionConfiguration<PUB_CONNECTION_TYPE>,
_record: PubRecord,
_procedure: PubProcedureConfiguration<PUB_PROCEDURE_TYPE>,
): Array<PubProcedureConfiguration<PUB_PROCEDURE_TYPE>> => {

const dependencyProcedures: Array<PubProcedureConfiguration<PUB_PROCEDURE_TYPE>> =
record.cachedConfiguration.configuration.connections
.filter((connection: PubConnectionConfiguration<PUB_CONNECTION_TYPE>) => {
return connection.type === PUB_CONNECTION_TYPE.DIRECT;
})
.filter((connection: PubConnectionConfiguration<PUB_CONNECTION_TYPE>) => {
return connection.nextProcedure.type === PUB_CONNECTION_PROCEDURE_REFERENCE_TYPE.PROCEDURE;
})
.map((connection: PubConnectionConfiguration<PUB_CONNECTION_TYPE>) => {

const nextProcedure: PubConnectionProcedureReference<
PUB_CONNECTION_PROCEDURE_REFERENCE_TYPE.PROCEDURE
> = connection.nextProcedure as PubConnectionProcedureReference<
PUB_CONNECTION_PROCEDURE_REFERENCE_TYPE.PROCEDURE
>;

return nextProcedure.payload.procedureIdentifier;
})
.filter((nextProcedureIdentifier: string) => {
return nextProcedureIdentifier === procedure.identifier;
})
.map((nextProcedureIdentifier: string) => {

const dependencyProcedure: PubProcedureConfiguration<PUB_PROCEDURE_TYPE> | null =
record.cachedConfiguration.getProcedureByIdentifier(
nextProcedureIdentifier,
);

if (dependencyProcedure === null) {
throw PubExecuteConfigurationProcedureNotFoundError.withIdentifier(
nextProcedureIdentifier,
);
}
return dependencyProcedure;
});

return dependencyProcedures;
return [];
};
8 changes: 4 additions & 4 deletions src/workflow/cache/configuration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* @description Configuration
*/

import { PUB_CONNECTION_TYPE, PubConnectionConfiguration } from "../../connection/definition/configuration";
import { PubConnectionConfiguration } from "../../connection/definition/configuration";
import { PUB_PROCEDURE_TYPE, PubProcedureConfiguration } from "../../procedure/definition/configuration";
import { PubWorkflowConfiguration } from "../definition/configuration";

Expand All @@ -25,7 +25,7 @@ export class PubCachedWorkflowConfiguration {
>;
private readonly _connectionsCache: Map<
string,
PubConnectionConfiguration<PUB_CONNECTION_TYPE>
PubConnectionConfiguration
>;

private constructor(
Expand Down Expand Up @@ -61,7 +61,7 @@ export class PubCachedWorkflowConfiguration {

public getConnectionByIdentifier(
identifier: string,
): PubConnectionConfiguration<PUB_CONNECTION_TYPE> | null {
): PubConnectionConfiguration | null {

if (!this._connectionsCache.has(identifier)) {

Expand All @@ -73,6 +73,6 @@ export class PubCachedWorkflowConfiguration {
}
}

return this._connectionsCache.get(identifier) as PubConnectionConfiguration<PUB_CONNECTION_TYPE> ?? null;
return this._connectionsCache.get(identifier) as PubConnectionConfiguration ?? null;
}
}
4 changes: 2 additions & 2 deletions src/workflow/definition/configuration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
*/

import { Pattern } from "@sudoo/pattern";
import { PUB_CONNECTION_TYPE, PubConnectionConfiguration } from "../../connection/definition/configuration";
import { PubConnectionConfiguration } from "../../connection/definition/configuration";
import { PUB_PROCEDURE_TYPE, PubProcedureConfiguration } from "../../procedure/definition/configuration";

export type PubWorkflowConfiguration = {
Expand All @@ -15,5 +15,5 @@ export type PubWorkflowConfiguration = {

readonly startParametersPattern: Record<string, Pattern>;
readonly procedures: Array<PubProcedureConfiguration<PUB_PROCEDURE_TYPE>>;
readonly connections: Array<PubConnectionConfiguration<PUB_CONNECTION_TYPE>>;
readonly connections: PubConnectionConfiguration[];
};

0 comments on commit 3daec22

Please sign in to comment.