UNPKG

@strapi/data-transfer

Version:

Data transfer capabilities for Strapi

1 lines 4.78 kB
{"version":3,"file":"links.mjs","sources":["../../../../../../src/strapi/providers/local-destination/strategies/restore/links.ts"],"sourcesContent":["import { Writable } from 'stream';\nimport type { Core } from '@strapi/types';\nimport { ProviderTransferError } from '../../../../../errors/providers';\nimport { ILink, Transaction } from '../../../../../../types';\nimport { createLinkQuery } from '../../../../queries/link';\n\ninterface ErrorWithCode extends Error {\n code: string;\n}\n\nconst isErrorWithCode = (error: any): error is ErrorWithCode => {\n return error && typeof error.code === 'string';\n};\n\nconst isForeignKeyConstraintError = (e: Error) => {\n const MYSQL_FK_ERROR_CODES = ['1452', '1557', '1216', '1217', '1451'];\n const POSTGRES_FK_ERROR_CODE = '23503';\n const SQLITE_FK_ERROR_CODE = 'SQLITE_CONSTRAINT_FOREIGNKEY';\n\n if (isErrorWithCode(e) && e.code) {\n return [SQLITE_FK_ERROR_CODE, POSTGRES_FK_ERROR_CODE, ...MYSQL_FK_ERROR_CODES].includes(e.code);\n }\n\n return e.message.toLowerCase().includes('foreign key constraint');\n};\n\nexport const createLinksWriteStream = (\n mapID: (uid: string, id: number) => number | undefined,\n strapi: Core.Strapi,\n transaction?: Transaction,\n onWarning?: (message: string) => void\n) => {\n return new Writable({\n objectMode: true,\n async write(link: ILink, _encoding, callback) {\n await transaction?.attach(async (trx) => {\n const { left, right } = link;\n const query = createLinkQuery(strapi, trx);\n\n const originalLeftRef = left.ref;\n const originalRightRef = right.ref;\n\n // Map IDs if needed\n left.ref = mapID(left.type, originalLeftRef) ?? originalLeftRef;\n right.ref = mapID(right.type, originalRightRef) ?? originalRightRef;\n\n try {\n await query().insert(link);\n } catch (e) {\n if (e instanceof Error) {\n if (isForeignKeyConstraintError(e)) {\n onWarning?.(\n `Skipping link ${left.type}:${originalLeftRef} -> ${right.type}:${originalRightRef} due to a foreign key constraint.`\n );\n return callback(null);\n }\n return callback(e);\n }\n\n return callback(\n new ProviderTransferError(\n `An error happened while trying to import a ${left.type} link.`\n )\n );\n }\n\n callback(null);\n });\n },\n });\n};\n"],"names":["isErrorWithCode","error","code","isForeignKeyConstraintError","e","MYSQL_FK_ERROR_CODES","POSTGRES_FK_ERROR_CODE","SQLITE_FK_ERROR_CODE","includes","message","toLowerCase","createLinksWriteStream","mapID","strapi","transaction","onWarning","Writable","objectMode","write","link","_encoding","callback","attach","trx","left","right","query","createLinkQuery","originalLeftRef","ref","originalRightRef","type","insert","Error","ProviderTransferError"],"mappings":";;;;AAUA,MAAMA,kBAAkB,CAACC,KAAAA,GAAAA;AACvB,IAAA,OAAOA,KAAS,IAAA,OAAOA,KAAMC,CAAAA,IAAI,KAAK,QAAA;AACxC,CAAA;AAEA,MAAMC,8BAA8B,CAACC,CAAAA,GAAAA;AACnC,IAAA,MAAMC,oBAAuB,GAAA;AAAC,QAAA,MAAA;AAAQ,QAAA,MAAA;AAAQ,QAAA,MAAA;AAAQ,QAAA,MAAA;AAAQ,QAAA;AAAO,KAAA;AACrE,IAAA,MAAMC,sBAAyB,GAAA,OAAA;AAC/B,IAAA,MAAMC,oBAAuB,GAAA,8BAAA;AAE7B,IAAA,IAAIP,eAAgBI,CAAAA,CAAAA,CAAAA,IAAMA,CAAEF,CAAAA,IAAI,EAAE;QAChC,OAAO;AAACK,YAAAA,oBAAAA;AAAsBD,YAAAA,sBAAAA;AAA2BD,YAAAA,GAAAA;SAAqB,CAACG,QAAQ,CAACJ,CAAAA,CAAEF,IAAI,CAAA;AAChG;AAEA,IAAA,OAAOE,EAAEK,OAAO,CAACC,WAAW,EAAA,CAAGF,QAAQ,CAAC,wBAAA,CAAA;AAC1C,CAAA;AAEaG,MAAAA,sBAAAA,GAAyB,CACpCC,KAAAA,EACAC,QACAC,WACAC,EAAAA,SAAAA,GAAAA;AAEA,IAAA,OAAO,IAAIC,QAAS,CAAA;QAClBC,UAAY,EAAA,IAAA;AACZ,QAAA,MAAMC,KAAMC,CAAAA,CAAAA,IAAW,EAAEC,SAAS,EAAEC,QAAQ,EAAA;YAC1C,MAAMP,WAAAA,EAAaQ,OAAO,OAAOC,GAAAA,GAAAA;AAC/B,gBAAA,MAAM,EAAEC,IAAI,EAAEC,KAAK,EAAE,GAAGN,IAAAA;gBACxB,MAAMO,KAAAA,GAAQC,gBAAgBd,MAAQU,EAAAA,GAAAA,CAAAA;gBAEtC,MAAMK,eAAAA,GAAkBJ,KAAKK,GAAG;gBAChC,MAAMC,gBAAAA,GAAmBL,MAAMI,GAAG;;AAGlCL,gBAAAA,IAAAA,CAAKK,GAAG,GAAGjB,KAAAA,CAAMY,IAAKO,CAAAA,IAAI,EAAEH,eAAoBA,CAAAA,IAAAA,eAAAA;AAChDH,gBAAAA,KAAAA,CAAMI,GAAG,GAAGjB,KAAAA,CAAMa,KAAMM,CAAAA,IAAI,EAAED,gBAAqBA,CAAAA,IAAAA,gBAAAA;gBAEnD,IAAI;oBACF,MAAMJ,KAAAA,EAAAA,CAAQM,MAAM,CAACb,IAAAA,CAAAA;AACvB,iBAAA,CAAE,OAAOf,CAAG,EAAA;AACV,oBAAA,IAAIA,aAAa6B,KAAO,EAAA;AACtB,wBAAA,IAAI9B,4BAA4BC,CAAI,CAAA,EAAA;AAClCW,4BAAAA,SAAAA,GACE,CAAC,cAAc,EAAES,KAAKO,IAAI,CAAC,CAAC,EAAEH,eAAAA,CAAgB,IAAI,EAAEH,MAAMM,IAAI,CAAC,CAAC,EAAED,gBAAAA,CAAiB,iCAAiC,CAAC,CAAA;AAEvH,4BAAA,OAAOT,QAAS,CAAA,IAAA,CAAA;AAClB;AACA,wBAAA,OAAOA,QAASjB,CAAAA,CAAAA,CAAAA;AAClB;oBAEA,OAAOiB,QAAAA,CACL,IAAIa,qBAAAA,CACF,CAAC,2CAA2C,EAAEV,IAAKO,CAAAA,IAAI,CAAC,MAAM,CAAC,CAAA,CAAA;AAGrE;gBAEAV,QAAS,CAAA,IAAA,CAAA;AACX,aAAA,CAAA;AACF;AACF,KAAA,CAAA;AACF;;;;"}