diff --git a/packages/core/admin/ee/server/src/services/index.ts b/packages/core/admin/ee/server/src/services/index.ts index 1eb920f8dd..995a9835ee 100644 --- a/packages/core/admin/ee/server/src/services/index.ts +++ b/packages/core/admin/ee/server/src/services/index.ts @@ -2,7 +2,7 @@ import auth from './auth'; import passport from './passport'; import role from './role'; import user from './user'; -import metrics from './metrics'; +import * as metrics from './metrics'; import seatEnforcement from './seat-enforcement'; import workflows from './review-workflows/workflows'; import stages from './review-workflows/stages'; diff --git a/packages/core/admin/ee/server/src/services/metrics.ts b/packages/core/admin/ee/server/src/services/metrics.ts index 4066fa8bdd..3bebfb640a 100644 --- a/packages/core/admin/ee/server/src/services/metrics.ts +++ b/packages/core/admin/ee/server/src/services/metrics.ts @@ -1,11 +1,51 @@ +import { assign } from 'lodash/fp'; +import type { Strapi } from '@strapi/types'; +import EE from '@strapi/strapi/dist/utils/ee'; +import { getService } from '../utils'; + const getSSOProvidersList = async () => { const { providerRegistry } = strapi.admin.services.passport; - return providerRegistry.getAll().map(({ uid }) => uid); + return providerRegistry.getAll().map(({ uid }: { uid: string }) => uid); } -export default { - getSSOProvidersList, +const sendUpdateProjectInformation = async () => { + let groupProperties = {}; + + const numberOfActiveAdminUsers = await getService('user').count({ isActive: true }); + const numberOfAdminUsers = await getService('user').count(); + + if (EE.features.isEnabled('sso')) { + const SSOProviders = await getSSOProvidersList(); + + groupProperties = assign(groupProperties, { SSOProviders, isSSOConfigured: SSOProviders.length !== 0 }); + } + + if (EE.features.isEnabled('cms-content-releases')) { + const numberOfContentReleases = await strapi.entityService.count('plugin::content-releases.release'); + const numberOfPublishedContentReleases = await strapi.entityService.count('plugin::content-releases.release', { + filters: { $not: { releasedAt: null } } + }); + + groupProperties = assign(groupProperties, { numberOfContentReleases, numberOfPublishedContentReleases }); + } + + groupProperties = assign(groupProperties, { numberOfActiveAdminUsers, numberOfAdminUsers }); + + strapi.telemetry.send('didUpdateProjectInformation', { + groupProperties + }); +} + +const startCron = (strapi: Strapi) => { + strapi.cron.add({ + '0 0 0 * * *': () => sendUpdateProjectInformation(), + }); +}; + +export { + startCron, + getSSOProvidersList, + sendUpdateProjectInformation, }; - \ No newline at end of file diff --git a/packages/core/admin/server/src/services/metrics.ts b/packages/core/admin/server/src/services/metrics.ts index d347ad8254..c2ed26528f 100644 --- a/packages/core/admin/server/src/services/metrics.ts +++ b/packages/core/admin/server/src/services/metrics.ts @@ -1,8 +1,6 @@ -import EE from '@strapi/strapi/dist/utils/ee'; import type { Strapi } from '@strapi/types'; import { assign } from 'lodash/fp'; import { getService } from '../utils'; -import metrics from '../../../ee/server/src/services/metrics'; const sendDidInviteUser = async () => { const numberOfUsers = await getService('user').count(); @@ -27,21 +25,6 @@ const sendUpdateProjectInformation = async () => { const numberOfActiveAdminUsers = await getService('user').count({ isActive: true }); const numberOfAdminUsers = await getService('user').count(); - - if (EE.features.isEnabled('sso')) { - const SSOProviders = await metrics.getSSOProvidersList(); - - groupProperties = assign(groupProperties, { SSOProviders, isSSOConfigured: SSOProviders.length !== 0 }); - } - - if (EE.features.isEnabled('cms-content-releases')) { - const numberOfContentReleases = await strapi.entityService.count('plugin::content-releases.release'); - const numberOfPublishedContentReleases = await strapi.entityService.count('plugin::content-releases.release', { - filters: { $not: { releasedAt: null } } - }); - - groupProperties = assign(groupProperties, { numberOfContentReleases, numberOfPublishedContentReleases }); - } groupProperties = assign(groupProperties, { numberOfActiveAdminUsers, numberOfAdminUsers });