diff --git a/packages/core/data-transfer/src/strapi/providers/local-destination/index.ts b/packages/core/data-transfer/src/strapi/providers/local-destination/index.ts index 64dbe7c6d3..95f3b016d1 100644 --- a/packages/core/data-transfer/src/strapi/providers/local-destination/index.ts +++ b/packages/core/data-transfer/src/strapi/providers/local-destination/index.ts @@ -291,6 +291,7 @@ class LocalStrapiDestinationProvider implements IDestinationProvider { const strapi = this.strapi; const transaction = this.transaction; const backupDirectory = this.uploadsBackupDirectoryName; + const fileEntitiesMapper = this.#entitiesMapper['plugin::upload.file']; const restoreMediaEntitiesContent = this.#isContentTypeIncluded('plugin::upload.file'); @@ -357,14 +358,14 @@ class LocalStrapiDestinationProvider implements IDestinationProvider { // Files formats are stored within the parent file entity if (uploadData?.type) { const entry: IFile = await strapi.db.query('plugin::upload.file').findOne({ - where: { hash: uploadData.mainHash }, + where: { id: fileEntitiesMapper[uploadData.id] }, }); const specificFormat = entry?.formats?.[uploadData.type]; if (specificFormat) { specificFormat.url = uploadData.url; } await strapi.db.query('plugin::upload.file').update({ - where: { hash: uploadData.mainHash }, + where: { id: entry.id }, data: { formats: entry.formats, provider, @@ -373,11 +374,11 @@ class LocalStrapiDestinationProvider implements IDestinationProvider { return callback(); } const entry: IFile = await strapi.db.query('plugin::upload.file').findOne({ - where: { hash: uploadData.hash }, + where: { id: fileEntitiesMapper[uploadData.id] }, }); entry.url = uploadData.url; await strapi.db.query('plugin::upload.file').update({ - where: { hash: uploadData.hash }, + where: { id: entry.id }, data: { url: entry.url, provider, diff --git a/packages/core/data-transfer/src/strapi/providers/local-source/assets.ts b/packages/core/data-transfer/src/strapi/providers/local-source/assets.ts index 66b772b85a..212b61b9e6 100644 --- a/packages/core/data-transfer/src/strapi/providers/local-source/assets.ts +++ b/packages/core/data-transfer/src/strapi/providers/local-source/assets.ts @@ -94,10 +94,9 @@ export const createAssetsStream = (strapi: LoadedStrapi): Duplex => { const fileFormatFilepath = isLocalProvider ? join(strapi.dirs.static.public, fileFormat.url) : fileFormat.url; - const fileFormatStats = await getFileStats(fileFormatFilepath, isLocalProvider); const fileFormatStream = getFileStream(fileFormatFilepath, isLocalProvider); - const metadata = { ...fileFormat, type: format, mainHash: file.hash }; + const metadata = { ...fileFormat, type: format, id: file.id }; yield { metadata, filepath: fileFormatFilepath, diff --git a/packages/core/data-transfer/src/strapi/providers/utils.ts b/packages/core/data-transfer/src/strapi/providers/utils.ts index b8862c0051..905c0c4bc6 100644 --- a/packages/core/data-transfer/src/strapi/providers/utils.ts +++ b/packages/core/data-transfer/src/strapi/providers/utils.ts @@ -25,7 +25,7 @@ export const createDispatcher = ( ws: WebSocket, retryMessageOptions = { retryMessageMaxRetries: 5, - retryMessageTimeout: 15000, + retryMessageTimeout: 30000, } ) => { const state: IDispatcherState = {}; diff --git a/packages/core/data-transfer/types/common-entities.d.ts b/packages/core/data-transfer/types/common-entities.d.ts index d05b3d7ed5..f2e0c87c67 100644 --- a/packages/core/data-transfer/types/common-entities.d.ts +++ b/packages/core/data-transfer/types/common-entities.d.ts @@ -130,6 +130,7 @@ export interface IConfiguration { } interface IFile { + id: number; name: string; alternativeText?: string; caption?: string; @@ -146,7 +147,6 @@ interface IFile { provider?: string; provider_metadata?: Record; type?: string; - mainHash?: string; } export interface IAsset { filename: string;