diff --git a/packages/core/content-manager/server/src/history/services/__tests__/lifecycles.test.ts b/packages/core/content-manager/server/src/history/services/__tests__/lifecycles.test.ts index 103249a1bc..ab8058a7c0 100644 --- a/packages/core/content-manager/server/src/history/services/__tests__/lifecycles.test.ts +++ b/packages/core/content-manager/server/src/history/services/__tests__/lifecycles.test.ts @@ -21,7 +21,11 @@ const mockGetRequestContext = jest.fn(() => { }); const mockStrapi = { - service: jest.fn(), + service: jest.fn((name: string) => { + if (name === 'admin::persist-tables') { + return { persistTablesWithPrefix: jest.fn() }; + } + }), plugins: { 'content-manager': { service: jest.fn(() => ({ @@ -81,9 +85,9 @@ describe('history lifecycles service', () => { jest.useRealTimers(); }); - it('inits service only once', () => { - lifecyclesService.bootstrap(); - lifecyclesService.bootstrap(); + it('inits service only once', async () => { + await lifecyclesService.bootstrap(); + await lifecyclesService.bootstrap(); // @ts-expect-error - ignore expect(mockStrapi.documents.use).toHaveBeenCalledTimes(1); }); diff --git a/packages/core/content-manager/server/src/history/services/lifecycles.ts b/packages/core/content-manager/server/src/history/services/lifecycles.ts index e2574eaeed..ffa54d4d35 100644 --- a/packages/core/content-manager/server/src/history/services/lifecycles.ts +++ b/packages/core/content-manager/server/src/history/services/lifecycles.ts @@ -101,6 +101,7 @@ const createLifecyclesService = ({ strapi }: { strapi: Core.Strapi }) => { }; const serviceUtils = createServiceUtils({ strapi }); + const { persistTablesWithPrefix } = strapi.service('admin::persist-tables'); return { async bootstrap() { @@ -109,6 +110,9 @@ const createLifecyclesService = ({ strapi }: { strapi: Core.Strapi }) => { return; } + // Avoid data loss in case users temporarily don't have a license + await persistTablesWithPrefix('strapi_history_versions'); + strapi.documents.use(async (context, next) => { const result = (await next()) as any;