diff --git a/packages/cli/src/ActiveWorkflowRunner.ts b/packages/cli/src/ActiveWorkflowRunner.ts index 4332fe1ada19a..14961f2c5ba30 100644 --- a/packages/cli/src/ActiveWorkflowRunner.ts +++ b/packages/cli/src/ActiveWorkflowRunner.ts @@ -63,6 +63,7 @@ import { NodeTypes } from '@/NodeTypes'; import { WorkflowRunner } from '@/WorkflowRunner'; import { ExternalHooks } from '@/ExternalHooks'; import { whereClause } from './UserManagement/UserManagementHelper'; +import { WorkflowsService } from './workflows/workflows.services'; const WEBHOOK_PROD_UNREGISTERED_HINT = "The workflow must be active for a production URL to run successfully. You can activate the workflow using the toggle in the top-right of the editor. Note that unlike test URL calls, production URL calls aren't shown on the canvas (only in the executions list)"; @@ -867,7 +868,7 @@ export class ActiveWorkflowRunner { workflowInstance.getPollNodes().length + WebhookHelpers.getWorkflowWebhooks(workflowInstance, additionalData, undefined, true) .length; - await Db.collections.Workflow.update(workflowInstance.id, { triggerCount }); + await WorkflowsService.updateWorkflowTriggerCount(workflowInstance.id, triggerCount); } } catch (error) { // There was a problem activating the workflow diff --git a/packages/cli/src/workflows/workflows.services.ts b/packages/cli/src/workflows/workflows.services.ts index 902896ac127fc..3b5fd2d928bee 100644 --- a/packages/cli/src/workflows/workflows.services.ts +++ b/packages/cli/src/workflows/workflows.services.ts @@ -1,7 +1,7 @@ import { validate as jsonSchemaValidate } from 'jsonschema'; import type { INode, IPinData, JsonObject } from 'n8n-workflow'; import { NodeApiError, jsonParse, LoggerProxy, Workflow } from 'n8n-workflow'; -import type { FindOptionsWhere } from 'typeorm'; +import type { FindOptionsWhere, UpdateResult } from 'typeorm'; import { In } from 'typeorm'; import pick from 'lodash.pick'; import { v4 as uuid } from 'uuid'; @@ -459,4 +459,21 @@ export class WorkflowsService { return sharedWorkflow.workflow; } + + static async updateWorkflowTriggerCount(id: string, triggerCount: number): Promise { + const qb = Db.collections.Workflow.createQueryBuilder('workflow'); + return qb + .update() + .set({ + triggerCount, + updatedAt: () => { + if (['mysqldb', 'mariadb'].includes(config.getEnv('database.type'))) { + return 'updatedAt'; + } + return '"updatedAt"'; + }, + }) + .where('id = :id', { id }) + .execute(); + } }