From bba2c8a9942b5ffdaa182a370e5c80c52c7b8ad5 Mon Sep 17 00:00:00 2001 From: Bassel Date: Mon, 21 Nov 2022 14:52:57 +0200 Subject: [PATCH] Make deleteAllRecords accept contentTypes to delete rather than exceptions --- .../providers/local-file-source-provider.ts | 5 +- .../restore.ts | 57 +++++++++++-------- 2 files changed, 35 insertions(+), 27 deletions(-) diff --git a/packages/core/data-transfer/lib/providers/local-file-source-provider.ts b/packages/core/data-transfer/lib/providers/local-file-source-provider.ts index 21d6263d2d..e4bc344e5a 100644 --- a/packages/core/data-transfer/lib/providers/local-file-source-provider.ts +++ b/packages/core/data-transfer/lib/providers/local-file-source-provider.ts @@ -87,9 +87,10 @@ class LocalFileSourceProvider implements ISourceProvider { } async getSchemas() { - const schemas = await collect(this.streamSchemas() as Readable); + // const schemas = await collect(this.streamSchemas() as Readable); - return keyBy('uid', schemas); + // return keyBy('uid', schemas); + return null; } streamEntities(): NodeJS.ReadableStream { diff --git a/packages/core/data-transfer/lib/providers/local-strapi-destination-provider/restore.ts b/packages/core/data-transfer/lib/providers/local-strapi-destination-provider/restore.ts index f7ad0fdaa3..50d4dd112f 100644 --- a/packages/core/data-transfer/lib/providers/local-strapi-destination-provider/restore.ts +++ b/packages/core/data-transfer/lib/providers/local-strapi-destination-provider/restore.ts @@ -1,31 +1,38 @@ import type { ContentTypeSchema } from '@strapi/strapi'; - -const defaultExceptions = ['admin::permission', 'admin::user', 'admin::role', 'admin::api-token', 'admin::api-token-permission', 'plugin::i18n.locale'] - export type DeleteOptions = { - exceptions?: string[], - conditions?: { - [contentTypeUid: string]: { - where: any - } - } -} + contentTypes?: ContentTypeSchema[]; + conditions?: { + [contentTypeUid: string]: { + where: any; + }; + }; +}; export const deleteAllRecords = async (strapi: Strapi.Strapi, deleteOptions?: DeleteOptions) => { - const conditions = deleteOptions?.conditions ?? {}; - const exceptions = deleteOptions?.exceptions ?? defaultExceptions; - const contentTypes: ContentTypeSchema[] = Object.values(strapi.contentTypes); - let count = 0; - await Promise.all(contentTypes.map(async (contentType) => { - const filters = conditions[contentType.uid] ?? {} - if (!exceptions.includes(contentType.uid)) { - const result = await strapi?.db.query(contentType.uid).deleteMany({ - filters - }); - count += result.count; - } - })) + const conditions = deleteOptions?.conditions ?? {}; + const exceptions = [ + 'admin::permission', + 'admin::user', + 'admin::role', + 'admin::api-token', + 'admin::api-token-permission', + ]; + const allContentTypes: ContentTypeSchema[] = Object.values(strapi.contentTypes); + const defaultContentTypes: ContentTypeSchema[] = allContentTypes.filter( + (contentType) => !exceptions.includes(contentType.uid) + ); + const contentTypes: ContentTypeSchema[] = deleteOptions?.contentTypes ?? defaultContentTypes; + let count = 0; + await Promise.all( + contentTypes.map(async (contentType) => { + const filters = conditions[contentType.uid] ?? {}; + const result = await strapi?.db.query(contentType.uid).deleteMany({ + filters, + }); + count += result.count; + }) + ); - return { count } -} \ No newline at end of file + return { count }; +};