{"version":3,"file":"entities.mjs","sources":["../../../../../../src/strapi/providers/local-destination/strategies/restore/entities.ts"],"sourcesContent":["import { Writable } from 'stream';\nimport type { Core, UID } from '@strapi/types';\n\nimport { ProviderTransferError } from '../../../../../errors/providers';\nimport type { IEntity, Transaction } from '../../../../../types';\nimport * as queries from '../../../../queries';\nimport { collectComponentIdMappings } from '../../../../../utils/components';\n\ninterface IEntitiesRestoreStreamOptions {\n  strapi: Core.Strapi;\n  updateMappingTable<TSchemaUID extends UID.Schema>(\n    type: TSchemaUID,\n    oldID: number,\n    newID: number\n  ): void;\n  transaction?: Transaction;\n}\n\nexport const createEntitiesWriteStream = (options: IEntitiesRestoreStreamOptions) => {\n  const { strapi, updateMappingTable, transaction } = options;\n  const query = queries.entity.createEntityQuery(strapi);\n\n  return new Writable({\n    objectMode: true,\n\n    async write(entity: IEntity, _encoding, callback) {\n      await transaction?.attach(async () => {\n        const { type, id, data } = entity;\n        const { create, getDeepPopulateComponentLikeQuery } = query(type);\n        const contentType = strapi.getModel(type);\n\n        try {\n          const created = await create({\n            data,\n            populate: getDeepPopulateComponentLikeQuery(contentType, { select: 'id' }),\n            select: 'id',\n          });\n\n          updateMappingTable(type, id, created.id);\n\n          // Register the ID of every component instance that was re-created\n          // with the entity — including the ones whose ID did not change — so\n          // that the links stage can resolve component-side references and\n          // tell transferred components apart from missing/orphaned ones\n          const componentMappings = collectComponentIdMappings({\n            data,\n            created,\n            schema: contentType,\n            strapi,\n          });\n\n          for (const { uid, oldID, newID } of componentMappings) {\n            updateMappingTable(uid, oldID, newID);\n          }\n        } catch (e) {\n          if (e instanceof Error) {\n            return callback(e);\n          }\n\n          return callback(new ProviderTransferError(`Failed to create \"${type}\" (${id})`));\n        }\n\n        return callback(null);\n      });\n    },\n  });\n};\n"],"names":["createEntitiesWriteStream","options","strapi","updateMappingTable","transaction","query","queries","Writable","objectMode","write","entity","_encoding","callback","attach","type","id","data","create","getDeepPopulateComponentLikeQuery","contentType","getModel","created","populate","select","componentMappings","collectComponentIdMappings","schema","uid","oldID","newID","e","Error","ProviderTransferError"],"mappings":";;;;;;AAkBO,MAAMA,4BAA4B,CAACC,OAAAA,GAAAA;AACxC,IAAA,MAAM,EAAEC,MAAM,EAAEC,kBAAkB,EAAEC,WAAW,EAAE,GAAGH,OAAAA;AACpD,IAAA,MAAMI,KAAAA,GAAQC,iBAAgC,CAACJ,MAAAA,CAAAA;AAE/C,IAAA,OAAO,IAAIK,QAAAA,CAAS;QAClBC,UAAAA,EAAY,IAAA;AAEZ,QAAA,MAAMC,KAAAA,CAAAA,CAAMC,MAAe,EAAEC,SAAS,EAAEC,QAAQ,EAAA;AAC9C,YAAA,MAAMR,aAAaS,MAAAA,CAAO,UAAA;AACxB,gBAAA,MAAM,EAAEC,IAAI,EAAEC,EAAE,EAAEC,IAAI,EAAE,GAAGN,MAAAA;AAC3B,gBAAA,MAAM,EAAEO,MAAM,EAAEC,iCAAiC,EAAE,GAAGb,KAAAA,CAAMS,IAAAA,CAAAA;gBAC5D,MAAMK,WAAAA,GAAcjB,MAAAA,CAAOkB,QAAQ,CAACN,IAAAA,CAAAA;gBAEpC,IAAI;oBACF,MAAMO,OAAAA,GAAU,MAAMJ,MAAAA,CAAO;AAC3BD,wBAAAA,IAAAA;AACAM,wBAAAA,QAAAA,EAAUJ,kCAAkCC,WAAAA,EAAa;4BAAEI,MAAAA,EAAQ;AAAK,yBAAA,CAAA;wBACxEA,MAAAA,EAAQ;AACV,qBAAA,CAAA;oBAEApB,kBAAAA,CAAmBW,IAAAA,EAAMC,EAAAA,EAAIM,OAAAA,CAAQN,EAAE,CAAA;;;;;AAMvC,oBAAA,MAAMS,oBAAoBC,0BAAAA,CAA2B;AACnDT,wBAAAA,IAAAA;AACAK,wBAAAA,OAAAA;wBACAK,MAAAA,EAAQP,WAAAA;AACRjB,wBAAAA;AACF,qBAAA,CAAA;oBAEA,KAAK,MAAM,EAAEyB,GAAG,EAAEC,KAAK,EAAEC,KAAK,EAAE,IAAIL,iBAAAA,CAAmB;AACrDrB,wBAAAA,kBAAAA,CAAmBwB,KAAKC,KAAAA,EAAOC,KAAAA,CAAAA;AACjC,oBAAA;AACF,gBAAA,CAAA,CAAE,OAAOC,CAAAA,EAAG;AACV,oBAAA,IAAIA,aAAaC,KAAAA,EAAO;AACtB,wBAAA,OAAOnB,QAAAA,CAASkB,CAAAA,CAAAA;AAClB,oBAAA;oBAEA,OAAOlB,QAAAA,CAAS,IAAIoB,qBAAAA,CAAsB,CAAC,kBAAkB,EAAElB,IAAAA,CAAK,GAAG,EAAEC,EAAAA,CAAG,CAAC,CAAC,CAAA,CAAA;AAChF,gBAAA;AAEA,gBAAA,OAAOH,QAAAA,CAAS,IAAA,CAAA;AAClB,YAAA,CAAA,CAAA;AACF,QAAA;AACF,KAAA,CAAA;AACF;;;;"}