From dc09aa2f8fcd7cbbed2bec00a603b36f45ed5a42 Mon Sep 17 00:00:00 2001 From: Marc-Roig Date: Tue, 18 Jul 2023 16:22:20 +0200 Subject: [PATCH] fix: move cron utils to upload --- .../review-workflows/metrics/weekly-metrics.js | 14 +++++++++----- .../server/services/metrics/weekly-metrics.js | 4 +++- .../server/utils/__tests__/cron.test.js} | 5 +++-- packages/core/upload/server/utils/cron.js | 8 ++++++++ packages/core/utils/src/cron.ts | 6 ------ packages/core/utils/src/index.ts | 1 - 6 files changed, 23 insertions(+), 15 deletions(-) rename packages/core/{utils/src/__tests__/cron.test.ts => upload/server/utils/__tests__/cron.test.js} (82%) create mode 100644 packages/core/upload/server/utils/cron.js delete mode 100644 packages/core/utils/src/cron.ts diff --git a/packages/core/admin/ee/server/services/review-workflows/metrics/weekly-metrics.js b/packages/core/admin/ee/server/services/review-workflows/metrics/weekly-metrics.js index b77f9673ff..fc61df3834 100644 --- a/packages/core/admin/ee/server/services/review-workflows/metrics/weekly-metrics.js +++ b/packages/core/admin/ee/server/services/review-workflows/metrics/weekly-metrics.js @@ -2,14 +2,18 @@ const { flow, map, sum, size, mean, max, defaultTo } = require('lodash/fp'); const { add } = require('date-fns'); - -const { ONE_WEEK, getWeeklyCronScheduleAt } = require('@strapi/utils').cron; const { getService } = require('../../../../../server/utils'); +const ONE_WEEK = 7 * 24 * 60 * 60 * 1000; + +const getWeeklyCronScheduleAt = (date) => + `${date.getSeconds()} ${date.getMinutes()} ${date.getHours()} * * ${date.getDay()}`; + const getMetricsStoreValue = async () => { const value = await strapi.store.get({ type: 'plugin', name: 'ee', key: 'metrics' }); return defaultTo({}, value); }; + const setMetricsStoreValue = (value) => strapi.store.set({ type: 'plugin', name: 'ee', key: 'metrics', value }); @@ -20,7 +24,7 @@ module.exports = ({ strapi }) => { return { async computeMetrics() { // There will never be more than 200 workflow, so we can safely fetch them all - const workflows = await workflowsService.findMany({ populate: 'stages' }); + const workflows = await workflowsService.find({ populate: 'stages' }); const stagesCount = flow( map('stages'), // Number of stages per workflow @@ -41,7 +45,7 @@ module.exports = ({ strapi }) => { }, async sendMetrics() { - const computedMetrics = this.computeMetrics(); + const computedMetrics = await this.computeMetrics(); metrics.sendDidSendReviewWorkflowPropertiesOnceAWeek(computedMetrics); const metricsInfoStored = await getMetricsStoreValue(); @@ -56,7 +60,7 @@ module.exports = ({ strapi }) => { let weeklySchedule = currentSchedule; if (!currentSchedule || !lastWeeklyUpdate || lastWeeklyUpdate + ONE_WEEK < now.getTime()) { - weeklySchedule = getWeeklyCronScheduleAt(add(now, { minutes: 5 })); + weeklySchedule = getWeeklyCronScheduleAt(add(now, { seconds: 10 })); await setMetricsStoreValue({ ...metricsInfoStored, weeklySchedule }); } diff --git a/packages/core/upload/server/services/metrics/weekly-metrics.js b/packages/core/upload/server/services/metrics/weekly-metrics.js index 8c6afbeed7..e8ba5fb864 100644 --- a/packages/core/upload/server/services/metrics/weekly-metrics.js +++ b/packages/core/upload/server/services/metrics/weekly-metrics.js @@ -2,9 +2,11 @@ const { defaultTo } = require('lodash/fp'); const { add } = require('date-fns'); -const { ONE_WEEK, getWeeklyCronScheduleAt } = require('@strapi/utils').cron; +const { getWeeklyCronScheduleAt } = require('../../utils/cron'); const { FOLDER_MODEL_UID, FILE_MODEL_UID } = require('../../constants'); +const ONE_WEEK = 7 * 24 * 60 * 60 * 1000; + const getMetricsStoreValue = async () => { const value = await strapi.store.get({ type: 'plugin', name: 'upload', key: 'metrics' }); return defaultTo({}, value); diff --git a/packages/core/utils/src/__tests__/cron.test.ts b/packages/core/upload/server/utils/__tests__/cron.test.js similarity index 82% rename from packages/core/utils/src/__tests__/cron.test.ts rename to packages/core/upload/server/utils/__tests__/cron.test.js index 09af6c029d..9ef896bcd7 100644 --- a/packages/core/utils/src/__tests__/cron.test.ts +++ b/packages/core/upload/server/utils/__tests__/cron.test.js @@ -1,10 +1,11 @@ -import { getWeeklyCronScheduleAt } from '../cron'; +'use strict'; + +const { getWeeklyCronScheduleAt } = require('../cron'); describe('cron', () => { describe('getWeeklyCronScheduleAt', () => { test('2022-07-22T15:43:40.036 => 40 43 15 * * 5', () => { const date = new Date('2022-07-22T15:43:40.036'); // it's a friday - const result = getWeeklyCronScheduleAt(date); expect(result).toBe('40 43 15 * * 5'); }); diff --git a/packages/core/upload/server/utils/cron.js b/packages/core/upload/server/utils/cron.js new file mode 100644 index 0000000000..9fc47e7e72 --- /dev/null +++ b/packages/core/upload/server/utils/cron.js @@ -0,0 +1,8 @@ +('use strict'); + +const getWeeklyCronScheduleAt = (date) => + `${date.getSeconds()} ${date.getMinutes()} ${date.getHours()} * * ${date.getDay()}`; + +module.exports = { + getWeeklyCronScheduleAt, +}; diff --git a/packages/core/utils/src/cron.ts b/packages/core/utils/src/cron.ts deleted file mode 100644 index e843b4098d..0000000000 --- a/packages/core/utils/src/cron.ts +++ /dev/null @@ -1,6 +0,0 @@ -const ONE_WEEK: number = 7 * 24 * 60 * 60 * 1000; -const getWeeklyCronScheduleAt = (date: Date): string => `0 * * * * *`; -// TODO revert to this -// `${date.getSeconds()} ${date.getMinutes()} ${date.getHours()} * * ${date.getDay()}`; - -export { ONE_WEEK, getWeeklyCronScheduleAt }; diff --git a/packages/core/utils/src/index.ts b/packages/core/utils/src/index.ts index fb5334466b..350395a96a 100644 --- a/packages/core/utils/src/index.ts +++ b/packages/core/utils/src/index.ts @@ -41,4 +41,3 @@ export * as file from './file'; export * as traverse from './traverse'; export { default as webhook } from './webhook'; export { isOperator, isOperatorOfType } from './operators'; -export * as cron from './cron';