diff --git a/Common/Types/Workflow/ComponentID.ts b/Common/Types/Workflow/ComponentID.ts index 75ea15576b..f910fbda7c 100644 --- a/Common/Types/Workflow/ComponentID.ts +++ b/Common/Types/Workflow/ComponentID.ts @@ -3,7 +3,7 @@ enum ComponentID { Log = 'log', Schedule = 'schedule', JavaScriptCode = 'javascript', - Manual = 'manual' + Manual = 'manual', } export default ComponentID; diff --git a/CommonServer/Infrastructure/Queue.ts b/CommonServer/Infrastructure/Queue.ts index 283732d5f8..5497bbd084 100644 --- a/CommonServer/Infrastructure/Queue.ts +++ b/CommonServer/Infrastructure/Queue.ts @@ -21,19 +21,18 @@ export default class Queue { public static async removeJob( queueName: QueueName, - jobId: string, + jobId: string ): Promise { - - - let job: Job | undefined = await this.getQueue(queueName).getJob(jobId); + const job: Job | undefined = await this.getQueue(queueName).getJob( + jobId + ); if (job) { await job.remove(); } // remove existing repeatable job - await this.getQueue(queueName).removeRepeatableByKey(jobId) - + await this.getQueue(queueName).removeRepeatableByKey(jobId); } public static async addJob( @@ -56,7 +55,9 @@ export default class Queue { }; } - let job: Job | undefined = await this.getQueue(queueName).getJob(jobId); + const job: Job | undefined = await this.getQueue(queueName).getJob( + jobId + ); if (job) { await job.remove(); @@ -64,10 +65,16 @@ export default class Queue { if (options?.repeatableKey) { // remove existing repeatable job - await this.getQueue(queueName).removeRepeatableByKey(options?.repeatableKey) + await this.getQueue(queueName).removeRepeatableByKey( + options?.repeatableKey + ); } - const jobAdded = await this.getQueue(queueName).add(jobName, data, optionsObject); + const jobAdded: Job = await this.getQueue(queueName).add( + jobName, + data, + optionsObject + ); return jobAdded; } diff --git a/CommonServer/Services/WorkflowService.ts b/CommonServer/Services/WorkflowService.ts index 0287aa94af..f2ba13afe5 100644 --- a/CommonServer/Services/WorkflowService.ts +++ b/CommonServer/Services/WorkflowService.ts @@ -27,8 +27,6 @@ export class Service extends DatabaseService { ): Promise> { /// save trigger and trigger args. - - if ( onUpdate.updateBy.data && (onUpdate.updateBy.data as any).graph && @@ -36,7 +34,6 @@ export class Service extends DatabaseService { 'nodes' ] as Array) ) { - let trigger: NodeDataProp | null = null; // check if it has a trigger node. @@ -66,9 +63,12 @@ export class Service extends DatabaseService { }); } - await API.post( - new URL(Protocol.HTTP, WorkflowHostname, new Route('/workflow/update/' + onUpdate.updateBy.query._id!)), + new URL( + Protocol.HTTP, + WorkflowHostname, + new Route('/workflow/update/' + onUpdate.updateBy.query._id!) + ), {}, { ...ClusterKeyAuthorization.getClusterKeyHeaders(), diff --git a/CommonServer/Types/Workflow/ComponentCode.ts b/CommonServer/Types/Workflow/ComponentCode.ts index 5bc8fa5e46..348289641f 100644 --- a/CommonServer/Types/Workflow/ComponentCode.ts +++ b/CommonServer/Types/Workflow/ComponentCode.ts @@ -7,8 +7,6 @@ import { JSONObject } from 'Common/Types/JSON'; import ObjectID from 'Common/Types/ObjectID'; import ComponentMetadata, { Port } from 'Common/Types/Workflow/Component'; - - export interface RunOptions { log: Function; workflowLogId: ObjectID; @@ -24,7 +22,7 @@ export interface RunReturnType { export default class ComponentCode { private metadata: ComponentMetadata | null = null; - + public constructor() {} public setMetadata(metadata: ComponentMetadata): void { diff --git a/CommonServer/Types/Workflow/Components/Index.ts b/CommonServer/Types/Workflow/Components/Index.ts index b3fc7e7292..d7ced7914a 100644 --- a/CommonServer/Types/Workflow/Components/Index.ts +++ b/CommonServer/Types/Workflow/Components/Index.ts @@ -26,7 +26,7 @@ const Components: Dictionary = { [ComponentID.Log]: new Log(), [ComponentID.Schedule]: new Schedule(), [ComponentID.JavaScriptCode]: new JavaScirptCode(), - [ComponentID.Manual]: new ManualTrigger() + [ComponentID.Manual]: new ManualTrigger(), }; for (const baseModelService of BaseModelServices) { diff --git a/CommonServer/Types/Workflow/Components/Manual.ts b/CommonServer/Types/Workflow/Components/Manual.ts index eea1d02248..900f202ba3 100644 --- a/CommonServer/Types/Workflow/Components/Manual.ts +++ b/CommonServer/Types/Workflow/Components/Manual.ts @@ -7,10 +7,11 @@ import TriggerCode from '../TriggerCode'; export default class ManualTrigger extends TriggerCode { public constructor() { super(); - const Component: ComponentMetadata | undefined = - ManualComponents.find((i: ComponentMetadata) => { + const Component: ComponentMetadata | undefined = ManualComponents.find( + (i: ComponentMetadata) => { return i.id === ComponentID.Manual; - }); + } + ); if (!Component) { throw new BadDataException('Component not found.'); diff --git a/CommonServer/Types/Workflow/Components/OnTriggerBaseModel.ts b/CommonServer/Types/Workflow/Components/OnTriggerBaseModel.ts index 65e9943dd0..385276af5c 100644 --- a/CommonServer/Types/Workflow/Components/OnTriggerBaseModel.ts +++ b/CommonServer/Types/Workflow/Components/OnTriggerBaseModel.ts @@ -5,10 +5,7 @@ import ComponentMetadata from 'Common/Types/Workflow/Component'; import DatabaseService from '../../../Services/DatabaseService'; import { ExpressRequest, ExpressResponse } from '../../../Utils/Express'; import Response from '../../../Utils/Response'; -import TriggerCode, { - ExecuteWorkflowType, - InitProps, -} from '../TriggerCode'; +import TriggerCode, { ExecuteWorkflowType, InitProps } from '../TriggerCode'; import BaseModelComponents from 'Common/Types/Workflow/Components/BaseModel'; import Text from 'Common/Types/Text'; import WorkflowService from '../../../Services/WorkflowService'; diff --git a/CommonServer/Types/Workflow/Components/Schedule.ts b/CommonServer/Types/Workflow/Components/Schedule.ts index c85f2ed504..e5ed2b21b0 100644 --- a/CommonServer/Types/Workflow/Components/Schedule.ts +++ b/CommonServer/Types/Workflow/Components/Schedule.ts @@ -36,7 +36,7 @@ export default class WebhookTrigger extends TriggerCode { select: { _id: true, triggerArguments: true, - isEnabled: true + isEnabled: true, }, props: { isRoot: true, @@ -54,7 +54,8 @@ export default class WebhookTrigger extends TriggerCode { if ( workflow.triggerArguments && - workflow.triggerArguments['schedule'] && workflow.isEnabled + workflow.triggerArguments['schedule'] && + workflow.isEnabled ) { await props.scheduleWorkflow( executeWorkflow, @@ -62,16 +63,13 @@ export default class WebhookTrigger extends TriggerCode { ); } - if(!workflow.isEnabled){ - props.removeWorkflow(workflow.id!); + if (!workflow.isEnabled) { + await props.removeWorkflow(workflow.id!); } } } public override async update(props: UpdateProps): Promise { - - console.log("Schedule update"); - const workflow: Workflow | null = await WorkflowService.findOneBy({ query: { triggerId: ComponentID.Schedule, @@ -81,24 +79,21 @@ export default class WebhookTrigger extends TriggerCode { select: { _id: true, triggerArguments: true, - isEnabled: true + isEnabled: true, }, props: { isRoot: true, - } + }, }); - if(!workflow){ + if (!workflow) { return; } - if(!this.scheduleWorkflow){ + if (!this.scheduleWorkflow) { return; } - console.log("Workflow enabled"); - console.log(workflow.isEnabled); - const executeWorkflow: ExecuteWorkflowType = { workflowId: new ObjectID(workflow._id!), returnValues: {}, @@ -106,7 +101,8 @@ export default class WebhookTrigger extends TriggerCode { if ( workflow.triggerArguments && - workflow.triggerArguments['schedule'] && workflow.isEnabled + workflow.triggerArguments['schedule'] && + workflow.isEnabled ) { await this.scheduleWorkflow( executeWorkflow, @@ -114,17 +110,12 @@ export default class WebhookTrigger extends TriggerCode { ); } - console.log("Removing workflow"); - console.log(workflow.isEnabled); - - if(!this.removeWorkflow){ + if (!this.removeWorkflow) { return; } - if(!workflow.isEnabled){ - console.log("Here 2"); - this.removeWorkflow(workflow.id!); + if (!workflow.isEnabled) { + await this.removeWorkflow(workflow.id!); } - } } diff --git a/CommonServer/Types/Workflow/Components/Webhook.ts b/CommonServer/Types/Workflow/Components/Webhook.ts index 6dfcbe27e9..8de5e878ef 100644 --- a/CommonServer/Types/Workflow/Components/Webhook.ts +++ b/CommonServer/Types/Workflow/Components/Webhook.ts @@ -5,10 +5,7 @@ import ComponentID from 'Common/Types/Workflow/ComponentID'; import WebhookComponents from 'Common/Types/Workflow/Components/Webhook'; import { ExpressRequest, ExpressResponse } from '../../../Utils/Express'; import Response from '../../../Utils/Response'; -import TriggerCode, { - ExecuteWorkflowType, - InitProps, -} from '../TriggerCode'; +import TriggerCode, { ExecuteWorkflowType, InitProps } from '../TriggerCode'; export default class WebhookTrigger extends TriggerCode { public constructor() { diff --git a/CommonServer/Types/Workflow/TriggerCode.ts b/CommonServer/Types/Workflow/TriggerCode.ts index 57da1a5979..daacb6046a 100644 --- a/CommonServer/Types/Workflow/TriggerCode.ts +++ b/CommonServer/Types/Workflow/TriggerCode.ts @@ -18,9 +18,7 @@ export interface InitProps { executeWorkflow: ExecuteWorkflowType, scheduleAt: string ) => Promise; - removeWorkflow: (( - workflowId: ObjectID - ) => Promise); + removeWorkflow: (workflowId: ObjectID) => Promise; } export interface UpdateProps { @@ -28,26 +26,25 @@ export interface UpdateProps { } export default class TrigegrCode extends ComponentCode { + public executeWorkflow: + | ((executeWorkflow: ExecuteWorkflowType) => Promise) + | null = null; + public scheduleWorkflow: + | (( + executeWorkflow: ExecuteWorkflowType, + scheduleAt: string + ) => Promise) + | null = null; - public executeWorkflow: ((executeWorkflow: ExecuteWorkflowType) => Promise) | null = null; - - public scheduleWorkflow: (( - executeWorkflow: ExecuteWorkflowType, - scheduleAt: string - ) => Promise) | null = null; - - public removeWorkflow: (( - workflowId: ObjectID - ) => Promise) | null = null; + public removeWorkflow: ((workflowId: ObjectID) => Promise) | null = + null; public constructor() { super(); } - public async setupComponent(props: InitProps): Promise { - this.executeWorkflow = props.executeWorkflow; this.scheduleWorkflow = props.scheduleWorkflow; this.removeWorkflow = props.removeWorkflow; diff --git a/CommonServer/Types/Workflow/Workflow.ts b/CommonServer/Types/Workflow/Workflow.ts index 7589d29e27..7b62532835 100644 --- a/CommonServer/Types/Workflow/Workflow.ts +++ b/CommonServer/Types/Workflow/Workflow.ts @@ -1,9 +1,9 @@ -import { JSONObject } from "Common/Types/JSON"; -import ObjectID from "Common/Types/ObjectID"; +import { JSONObject } from 'Common/Types/JSON'; +import ObjectID from 'Common/Types/ObjectID'; export interface RunProps { arguments: JSONObject; workflowId: ObjectID; workflowLogId: ObjectID | null; timeout: number; -} \ No newline at end of file +} diff --git a/Model/Models/IncidentCustomField.ts b/Model/Models/IncidentCustomField.ts index d092df8ad4..c72bfb251a 100644 --- a/Model/Models/IncidentCustomField.ts +++ b/Model/Models/IncidentCustomField.ts @@ -20,7 +20,6 @@ import CustomFieldType from 'Common/Types/CustomField/CustomFieldType'; import TableBillingAccessControl from 'Common/Types/Database/AccessControl/TableBillingAccessControl'; import { PlanSelect } from 'Common/Types/Billing/SubscriptionPlan'; - @TableBillingAccessControl({ create: PlanSelect.Growth, read: PlanSelect.Growth, diff --git a/Model/Models/MonitorCustomField.ts b/Model/Models/MonitorCustomField.ts index 6b87df9ffd..de0590ba43 100644 --- a/Model/Models/MonitorCustomField.ts +++ b/Model/Models/MonitorCustomField.ts @@ -20,7 +20,6 @@ import CustomFieldType from 'Common/Types/CustomField/CustomFieldType'; import TableBillingAccessControl from 'Common/Types/Database/AccessControl/TableBillingAccessControl'; import { PlanSelect } from 'Common/Types/Billing/SubscriptionPlan'; - @TableBillingAccessControl({ create: PlanSelect.Growth, read: PlanSelect.Growth, diff --git a/Model/Models/ScheduledMaintenanceCustomField.ts b/Model/Models/ScheduledMaintenanceCustomField.ts index d8114bb0eb..ba3d1c5a5d 100644 --- a/Model/Models/ScheduledMaintenanceCustomField.ts +++ b/Model/Models/ScheduledMaintenanceCustomField.ts @@ -20,7 +20,6 @@ import CustomFieldType from 'Common/Types/CustomField/CustomFieldType'; import TableBillingAccessControl from 'Common/Types/Database/AccessControl/TableBillingAccessControl'; import { PlanSelect } from 'Common/Types/Billing/SubscriptionPlan'; - @TableBillingAccessControl({ create: PlanSelect.Growth, read: PlanSelect.Growth, diff --git a/Model/Models/StatusPageCustomField.ts b/Model/Models/StatusPageCustomField.ts index 5a964a59e6..87ace737b7 100644 --- a/Model/Models/StatusPageCustomField.ts +++ b/Model/Models/StatusPageCustomField.ts @@ -20,7 +20,6 @@ import CustomFieldType from 'Common/Types/CustomField/CustomFieldType'; import TableBillingAccessControl from 'Common/Types/Database/AccessControl/TableBillingAccessControl'; import { PlanSelect } from 'Common/Types/Billing/SubscriptionPlan'; - @TableBillingAccessControl({ create: PlanSelect.Growth, read: PlanSelect.Growth, diff --git a/Model/Models/Workflow.ts b/Model/Models/Workflow.ts index 9ee3ac8e9f..a20a1c839f 100644 --- a/Model/Models/Workflow.ts +++ b/Model/Models/Workflow.ts @@ -31,7 +31,6 @@ import AccessControlColumn from 'Common/Types/Database/AccessControlColumn'; import TableBillingAccessControl from 'Common/Types/Database/AccessControl/TableBillingAccessControl'; import { PlanSelect } from 'Common/Types/Billing/SubscriptionPlan'; - @TableBillingAccessControl({ create: PlanSelect.Growth, read: PlanSelect.Growth, @@ -441,7 +440,6 @@ export default class Workflow extends BaseModel { }) public triggerArguments?: JSONObject = undefined; - // This is a BullMQ job key that is used to schedule job for this workflow. This is used internally to remove existing job. @ColumnAccessControl({ create: [], diff --git a/Model/Models/WorkflowVariable.ts b/Model/Models/WorkflowVariable.ts index 76e762fe86..2429d7dcde 100644 --- a/Model/Models/WorkflowVariable.ts +++ b/Model/Models/WorkflowVariable.ts @@ -20,7 +20,6 @@ import Workflow from './Workflow'; import TableBillingAccessControl from 'Common/Types/Database/AccessControl/TableBillingAccessControl'; import { PlanSelect } from 'Common/Types/Billing/SubscriptionPlan'; - @TableBillingAccessControl({ create: PlanSelect.Growth, read: PlanSelect.Growth, diff --git a/Workflow/API/ComponentCode.ts b/Workflow/API/ComponentCode.ts index e72143cd84..becf7dc1d4 100644 --- a/Workflow/API/ComponentCode.ts +++ b/Workflow/API/ComponentCode.ts @@ -25,7 +25,7 @@ export default class ComponentCodeAPI { router: this.router, scheduleWorkflow: this.scheduleWorkflow, executeWorkflow: this.executeWorkflow, - removeWorkflow: this.removeWorkflow + removeWorkflow: this.removeWorkflow, }) .catch((err: Error) => { logger.error(err); @@ -38,7 +38,6 @@ export default class ComponentCodeAPI { executeWorkflow: ExecuteWorkflowType, scheduleAt: string ): Promise { - /// add to queue. await QueueWorkflow.addWorkflowToQueue(executeWorkflow, scheduleAt); } @@ -50,12 +49,7 @@ export default class ComponentCodeAPI { await QueueWorkflow.addWorkflowToQueue(executeWorkflow); } - public async removeWorkflow( - workflowId: ObjectID - ): Promise { - - console.log("REMOVE WORKFLOW") - + public async removeWorkflow(workflowId: ObjectID): Promise { // add to queue. await QueueWorkflow.removeWorkflow(workflowId); } diff --git a/Workflow/API/Workflow.ts b/Workflow/API/Workflow.ts index 428aa6d3ac..9cb7d1dd90 100644 --- a/Workflow/API/Workflow.ts +++ b/Workflow/API/Workflow.ts @@ -19,9 +19,17 @@ export default class WorkflowAPI { public constructor() { this.router = Express.getRouter(); - this.router.get(`/update/:workflowId`, ClusterKeyAuthorization.isAuthorizedServiceMiddleware, this.updateWorkflow); + this.router.get( + `/update/:workflowId`, + ClusterKeyAuthorization.isAuthorizedServiceMiddleware, + this.updateWorkflow + ); - this.router.post(`/update/:workflowId`, ClusterKeyAuthorization.isAuthorizedServiceMiddleware, this.updateWorkflow); + this.router.post( + `/update/:workflowId`, + ClusterKeyAuthorization.isAuthorizedServiceMiddleware, + this.updateWorkflow + ); } public async updateWorkflow( @@ -46,7 +54,7 @@ export default class WorkflowAPI { }, props: { isRoot: true, - } + }, }); if (!workflow) { @@ -55,13 +63,14 @@ export default class WorkflowAPI { }); } - if(!workflow.triggerId){ + if (!workflow.triggerId) { return Response.sendJsonObjectResponse(req, res, { status: 'Trigger not found in workflow', }); } - const componentCode: ComponentCode | undefined = Components[workflow.triggerId]; + const componentCode: ComponentCode | undefined = + Components[workflow.triggerId]; if (!componentCode) { return Response.sendJsonObjectResponse(req, res, { @@ -71,7 +80,7 @@ export default class WorkflowAPI { if (componentCode instanceof TriggerCode) { await componentCode.update({ - workflowId: workflow.id! + workflowId: workflow.id!, }); } diff --git a/Workflow/Index.ts b/Workflow/Index.ts index 290eec975e..7d8696f552 100644 --- a/Workflow/Index.ts +++ b/Workflow/Index.ts @@ -39,13 +39,11 @@ app.get( QueueWorker.getWorker( QueueName.Workflow, async (job: QueueJob) => { - - console.log("Job Pending: "); - console.log(job.data); - await new RunWorkflow().runWorkflow({ workflowId: new ObjectID(job.data['workflowId'] as string), - workflowLogId: job.data['workflowLogId'] ? new ObjectID(job.data['workflowLogId'] as string): null, + workflowLogId: job.data['workflowLogId'] + ? new ObjectID(job.data['workflowLogId'] as string) + : null, arguments: job.data.data as JSONObject, timeout: 5000, }); diff --git a/Workflow/Services/QueueWorkflow.ts b/Workflow/Services/QueueWorkflow.ts index 806c51a11b..9a4781d66f 100644 --- a/Workflow/Services/QueueWorkflow.ts +++ b/Workflow/Services/QueueWorkflow.ts @@ -13,16 +13,16 @@ import QueryHelper from 'CommonServer/Types/Database/QueryHelper'; import WorkflowPlan from 'Common/Types/Workflow/WorkflowPlan'; import PositiveNumber from 'Common/Types/PositiveNumber'; import { PlanSelect } from 'Common/Types/Billing/SubscriptionPlan'; +import { Job } from 'bullmq'; export default class QueueWorkflow { - - public static async removeWorkflow(workflowId: ObjectID) { + public static async removeWorkflow(workflowId: ObjectID): Promise { // get workflow to see if its enabled. const workflow: Workflow | null = await WorkflowService.findOneById({ id: workflowId, select: { projectId: true, - repeatableJobKey: true + repeatableJobKey: true, }, props: { isRoot: true, @@ -39,26 +39,21 @@ export default class QueueWorkflow { ); } - await Queue.removeJob( - QueueName.Workflow, - workflow.repeatableJobKey! - ); + await Queue.removeJob(QueueName.Workflow, workflow.repeatableJobKey!); - // update workflow. + // update workflow. await WorkflowService.updateOneById({ id: workflow.id!, data: { - repeatableJobKey: null! + repeatableJobKey: null!, }, props: { isRoot: true, - ignoreHooks: true - } + ignoreHooks: true, + }, }); - } - public static async addWorkflowToQueue( executeWorkflow: ExecuteWorkflowType, scheduleAt?: string @@ -71,7 +66,7 @@ export default class QueueWorkflow { select: { isEnabled: true, projectId: true, - repeatableJobKey: true + repeatableJobKey: true, }, props: { isRoot: true, @@ -143,7 +138,8 @@ export default class QueueWorkflow { runLog.workflowStatus = WorkflowStatus.WorkflowCountExceeded; runLog.logs = OneUptimeDate.getCurrentDateAsFormattedString() + - `: Workflow cannot run because it already ran ${workflowCount.toNumber()} in the last 30 days. Your current plan limit is ${WorkflowPlan[projectPlan.plan] + `: Workflow cannot run because it already ran ${workflowCount.toNumber()} in the last 30 days. Your current plan limit is ${ + WorkflowPlan[projectPlan.plan] }`; await WorkflowLogService.create({ @@ -177,33 +173,38 @@ export default class QueueWorkflow { }); } - - const job = await Queue.addJob( + const job: Job = await Queue.addJob( QueueName.Workflow, - workflowLog ? workflowLog._id?.toString()! : workflow._id?.toString()!, - workflowLog ? workflowLog._id?.toString()! : workflow._id?.toString()!, + workflowLog + ? workflowLog._id?.toString()! + : workflow._id?.toString()!, + workflowLog + ? workflowLog._id?.toString()! + : workflow._id?.toString()!, { data: executeWorkflow.returnValues, workflowLogId: workflowLog?._id || null, workflowId: workflow._id, }, - { scheduleAt: scheduleAt, repeatableKey: workflow.repeatableJobKey || undefined } + { + scheduleAt: scheduleAt, + repeatableKey: workflow.repeatableJobKey || undefined, + } ); // update workflow with repeatable key. if (job.repeatJobKey) { - - // update workflow. + // update workflow. await WorkflowService.updateOneById({ id: workflow.id!, data: { - repeatableJobKey: job.repeatJobKey + repeatableJobKey: job.repeatJobKey, }, props: { isRoot: true, - ignoreHooks: true - } + ignoreHooks: true, + }, }); } } diff --git a/Workflow/Services/RunWorkflow.ts b/Workflow/Services/RunWorkflow.ts index b061427162..828239b6f8 100644 --- a/Workflow/Services/RunWorkflow.ts +++ b/Workflow/Services/RunWorkflow.ts @@ -13,7 +13,7 @@ import WorkflowService from 'CommonServer/Services/WorkflowService'; import ComponentCode, { RunReturnType, } from 'CommonServer/Types/Workflow/ComponentCode'; -import { RunProps } from "CommonServer/Types/Workflow/Workflow"; +import { RunProps } from 'CommonServer/Types/Workflow/Workflow'; import WorkflowVariable from 'Model/Models/WorkflowVariable'; import WorkflowVariableService from 'CommonServer/Services/WorkflowVariableService'; import { LIMIT_PER_PROJECT } from 'Common/Types/Database/LimitMax'; @@ -98,9 +98,8 @@ export default class RunWorkflow { this.projectId = workflow.projectId || null; - if (!runProps.workflowLogId) { - // create a new workflow log here. + // create a new workflow log here. // if the workflow is to be run immeidately. const runLog: WorkflowLog = new WorkflowLog(); runLog.workflowId = runProps.workflowId; @@ -110,15 +109,16 @@ export default class RunWorkflow { OneUptimeDate.getCurrentDateAsFormattedString() + ': Workflow Scheduled.'; - runProps.workflowLogId = (await WorkflowLogService.create({ - data: runLog, - props: { - isRoot: true, - }, - })).id!; + runProps.workflowLogId = ( + await WorkflowLogService.create({ + data: runLog, + props: { + isRoot: true, + }, + }) + ).id!; } - // update workflow log. await WorkflowLogService.updateOneById({ id: runProps.workflowLogId, @@ -158,8 +158,8 @@ export default class RunWorkflow { if (didWorkflowTimeOut) { throw new TimeoutException( 'Workflow execution time was more than ' + - runProps.timeout + - 'ms and workflow timed-out.' + runProps.timeout + + 'ms and workflow timed-out.' ); } @@ -171,8 +171,8 @@ export default class RunWorkflow { if (componentsExecuted.includes(executeComponentId)) { throw new BadDataException( 'Cyclic Workflow Detected. Cannot execute ' + - executeComponentId + - ' when it has already been executed.' + executeComponentId + + ' when it has already been executed.' ); } @@ -186,8 +186,8 @@ export default class RunWorkflow { if (!stackItem) { throw new BadDataException( 'Component with ID ' + - executeComponentId + - ' not found.' + executeComponentId + + ' not found.' ); } @@ -253,7 +253,7 @@ export default class RunWorkflow { this.log(result.returnValues); this.log( 'Executing Port: ' + result.executePort?.title || - '' + '' ); storageMap.local.components[stackItem.node.id] = { @@ -515,8 +515,8 @@ export default class RunWorkflow { } else { this.logs.push( OneUptimeDate.getCurrentDateAsFormattedString() + - ': ' + - JSON.stringify(data) + ': ' + + JSON.stringify(data) ); } } @@ -590,7 +590,7 @@ export default class RunWorkflow { const trigger: any | undefined = nodes.find((n: any) => { return ( (n.data as NodeDataProp).componentType === - ComponentType.Trigger && + ComponentType.Trigger && (n.data as NodeDataProp).nodeType === NodeType.Node ); });