{"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<Migration['up']>[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, target_id } = action;\n\n        const entry = await db.query(target_type).findOne({ where: { id: target_id } });\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","target_id","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,WAAW,EAAEC,SAAS,EAAE,GAAGF,MAAAA;AAEnC,gBAAA,MAAMG,QAAQ,MAAMjB,EAAAA,CAAGkB,KAAK,CAACH,WAAAA,CAAAA,CAAaI,OAAO,CAAC;oBAAEC,KAAAA,EAAO;wBAAEC,EAAAA,EAAIL;AAAU;AAAE,iBAAA,CAAA;AAE7E,gBAAA,IAAIC,KAAAA,EAAO;oBACT,MAAMlB,GAAAA,CAAI,wBAAA,CAAA,CACPuB,MAAM,CAAC;AAAEC,wBAAAA,iBAAAA,EAAmBN,MAAMO;AAAW,qBAAA,CAAA,CAC7CJ,KAAK,CAAC,IAAA,EAAMN,MAAAA,CAAOO,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;;;;"}