diff --git a/packages/backend/src/db/migrations/20220817121241_add_published_at_column_to_flows.ts b/packages/backend/src/db/migrations/20220817121241_add_published_at_column_to_flows.ts new file mode 100644 index 00000000..d20ce715 --- /dev/null +++ b/packages/backend/src/db/migrations/20220817121241_add_published_at_column_to_flows.ts @@ -0,0 +1,13 @@ +import { Knex } from 'knex'; + +export async function up(knex: Knex): Promise { + return knex.schema.table('flows', (table) => { + table.timestamp('published_at').nullable(); + }); +} + +export async function down(knex: Knex): Promise { + return knex.schema.table('flows', (table) => { + table.dropColumn('published_at'); + }); +} diff --git a/packages/backend/src/graphql/mutations/update-flow-status.ts b/packages/backend/src/graphql/mutations/update-flow-status.ts index e7ac45a4..11ec676e 100644 --- a/packages/backend/src/graphql/mutations/update-flow-status.ts +++ b/packages/backend/src/graphql/mutations/update-flow-status.ts @@ -36,9 +36,13 @@ const updateFlowStatus = async ( const interval = trigger.interval; const repeatOptions = { cron: interval || EVERY_15_MINUTES_CRON, - } + }; if (flow.active) { + flow = await flow.$query().patchAndFetch({ + published_at: new Date().toISOString(), + }); + await processorQueue.add( JOB_NAME, { flowId: flow.id }, @@ -49,7 +53,7 @@ const updateFlowStatus = async ( ); } else { const repeatableJobs = await processorQueue.getRepeatableJobs(); - const job = repeatableJobs.find(job => job.id === flow.id); + const job = repeatableJobs.find((job) => job.id === flow.id); await processorQueue.removeRepeatableByKey(job.key); } diff --git a/packages/backend/src/models/flow.ts b/packages/backend/src/models/flow.ts index 2cfdb8bc..3d6a82d4 100644 --- a/packages/backend/src/models/flow.ts +++ b/packages/backend/src/models/flow.ts @@ -11,6 +11,7 @@ class Flow extends Base { userId!: string; active = false; steps?: [Step]; + published_at: string; static tableName = 'flows';