{"version":3,"file":"5.0.0-document-id-in-actions.mjs","sources":["../../../../server/src/migrations/database/5.0.0-document-id-in-actions.ts"],"sourcesContent":["import { async } from '@strapi/utils';\n\nimport type { Migration, Database } from '@strapi/database';\n\ntype Knex = Parameters[0];\n\n/**\n * On v4, release actions are linked with entries using the built in Polymorphic relations.\n *\n * On v5, we are going to save entryDocumentId on the release action and make the link manually.\n * This because entryId is not a reliable way to link documents, as it can change.\n */\nexport const addEntryDocumentToReleaseActions: Migration = {\n name: 'content-releases::5.0.0-add-entry-document-id-to-release-actions',\n async up(trx: Knex, db: Database) {\n // Check if the table exists\n const hasTable = await trx.schema.hasTable('strapi_release_actions');\n\n if (!hasTable) {\n return;\n }\n\n const hasPolymorphicColumn = await trx.schema.hasColumn('strapi_release_actions', 'target_id');\n\n // If user has PolymorphicColumn means that is coming from v4\n if (hasPolymorphicColumn) {\n // First time coming from v4 user doesn't have entryDocumentId\n // but we double check to avoid errors\n const hasEntryDocumentIdColumn = await trx.schema.hasColumn(\n 'strapi_release_actions',\n 'entry_document_id'\n );\n\n if (!hasEntryDocumentIdColumn) {\n await trx.schema.alterTable('strapi_release_actions', (table) => {\n table.string('entry_document_id');\n });\n }\n\n const releaseActions = await trx.select('*').from('strapi_release_actions');\n\n await async.map(releaseActions, async (action: any) => {\n const { target_type: targetType, target_id: targetId } = action;\n\n const entry = await db.query(targetType).findOne({ where: { id: targetId } });\n\n if (entry) {\n await trx('strapi_release_actions')\n .update({ entry_document_id: entry.documentId })\n .where('id', action.id);\n }\n });\n }\n },\n async down() {\n throw new Error('not implemented');\n },\n};\n"],"names":["addEntryDocumentToReleaseActions","name","up","trx","db","hasTable","schema","hasPolymorphicColumn","hasColumn","hasEntryDocumentIdColumn","alterTable","table","string","releaseActions","select","from","async","map","action","target_type","targetType","target_id","targetId","entry","query","findOne","where","id","update","entry_document_id","documentId","down","Error"],"mappings":";;AAMA;;;;;UAMaA,gCAAAA,GAA8C;IACzDC,IAAAA,EAAM,kEAAA;IACN,MAAMC,EAAAA,CAAAA,CAAGC,GAAS,EAAEC,EAAY,EAAA;;AAE9B,QAAA,MAAMC,WAAW,MAAMF,GAAAA,CAAIG,MAAM,CAACD,QAAQ,CAAC,wBAAA,CAAA;AAE3C,QAAA,IAAI,CAACA,QAAAA,EAAU;AACb,YAAA;AACF,QAAA;AAEA,QAAA,MAAME,uBAAuB,MAAMJ,GAAAA,CAAIG,MAAM,CAACE,SAAS,CAAC,wBAAA,EAA0B,WAAA,CAAA;;AAGlF,QAAA,IAAID,oBAAAA,EAAsB;;;AAGxB,YAAA,MAAME,2BAA2B,MAAMN,GAAAA,CAAIG,MAAM,CAACE,SAAS,CACzD,wBAAA,EACA,mBAAA,CAAA;AAGF,YAAA,IAAI,CAACC,wBAAAA,EAA0B;AAC7B,gBAAA,MAAMN,IAAIG,MAAM,CAACI,UAAU,CAAC,0BAA0B,CAACC,KAAAA,GAAAA;AACrDA,oBAAAA,KAAAA,CAAMC,MAAM,CAAC,mBAAA,CAAA;AACf,gBAAA,CAAA,CAAA;AACF,YAAA;AAEA,YAAA,MAAMC,iBAAiB,MAAMV,GAAAA,CAAIW,MAAM,CAAC,GAAA,CAAA,CAAKC,IAAI,CAAC,wBAAA,CAAA;AAElD,YAAA,MAAMC,KAAAA,CAAMC,GAAG,CAACJ,cAAAA,EAAgB,OAAOK,MAAAA,GAAAA;AACrC,gBAAA,MAAM,EAAEC,WAAAA,EAAaC,UAAU,EAAEC,SAAAA,EAAWC,QAAQ,EAAE,GAAGJ,MAAAA;AAEzD,gBAAA,MAAMK,QAAQ,MAAMnB,EAAAA,CAAGoB,KAAK,CAACJ,UAAAA,CAAAA,CAAYK,OAAO,CAAC;oBAAEC,KAAAA,EAAO;wBAAEC,EAAAA,EAAIL;AAAS;AAAE,iBAAA,CAAA;AAE3E,gBAAA,IAAIC,KAAAA,EAAO;oBACT,MAAMpB,GAAAA,CAAI,wBAAA,CAAA,CACPyB,MAAM,CAAC;AAAEC,wBAAAA,iBAAAA,EAAmBN,MAAMO;AAAW,qBAAA,CAAA,CAC7CJ,KAAK,CAAC,IAAA,EAAMR,MAAAA,CAAOS,EAAE,CAAA;AAC1B,gBAAA;AACF,YAAA,CAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;IACA,MAAMI,IAAAA,CAAAA,GAAAA;AACJ,QAAA,MAAM,IAAIC,KAAAA,CAAM,iBAAA,CAAA;AAClB,IAAA;AACF;;;;"}