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 9d0eb1e7f9..e22082d11a 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 @@ -68,6 +68,12 @@ class LocalStrapiDestinationProvider implements IDestinationProvider { return restore.deleteRecords(this.strapi, this.options.restore); } + async rollback(e: Error): Promise { + await this.transaction(async () => { + throw e; + }); + } + async beforeTransfer() { if (!this.strapi) { throw new Error('Strapi instance not found'); diff --git a/packages/core/data-transfer/src/utils/transaction.ts b/packages/core/data-transfer/src/utils/transaction.ts index 216f75e60a..9db08fbe10 100644 --- a/packages/core/data-transfer/src/utils/transaction.ts +++ b/packages/core/data-transfer/src/utils/transaction.ts @@ -30,6 +30,7 @@ export const createTransaction = async (strapi: Strapi) => { const res = await fn(trx); e.emit(uuid, { data: res }); } catch (error) { + await trx.rollback(); e.emit(uuid, { error }); } } @@ -54,7 +55,7 @@ export const createTransaction = async (strapi: Strapi) => { } if (error) { - reject(data); + reject(error); } resolve(undefined); });