diff --git a/.changeset/eleven-schools-know.md b/.changeset/eleven-schools-know.md new file mode 100644 index 0000000..dcfe62d --- /dev/null +++ b/.changeset/eleven-schools-know.md @@ -0,0 +1,5 @@ +--- +"@pluginpal/webtools-core": patch +--- + +Update all the URL alias localizations on update/create/clone in the query layer decorator diff --git a/packages/core/server/admin-api/services/query-layer-decorator.ts b/packages/core/server/admin-api/services/query-layer-decorator.ts index 441cb9d..08cf6cd 100644 --- a/packages/core/server/admin-api/services/query-layer-decorator.ts +++ b/packages/core/server/admin-api/services/query-layer-decorator.ts @@ -105,6 +105,21 @@ const decorator = (service: IDecoratedService) => ({ }); } + // Update all the URL alias localizations. + await Promise.all(urlAliasLocalizations.map(async (localization) => { + await strapi.db.query('plugin::webtools.url-alias').update({ + where: { + id: localization, + }, + data: { + localizations: [ + ...(urlAliasLocalizations.filter((loc) => loc !== localization)), + urlAliasEntity.id, + ], + }, + }); + })); + // Eventually update the entity to include the URL alias. const dataWithUrlAlias = { ...opts.data, url_alias: urlAliasEntity.id }; const updatedEntity = await service.update.call(this, uid, newEntity.id, { @@ -216,6 +231,21 @@ const decorator = (service: IDecoratedService) => ({ }); } + // Update all the URL alias localizations. + await Promise.all(urlAliasLocalizations.map(async (localization) => { + await strapi.db.query('plugin::webtools.url-alias').update({ + where: { + id: localization, + }, + data: { + localizations: [ + ...(urlAliasLocalizations.filter((loc) => loc !== localization)), + urlAliasEntity.id, + ], + }, + }); + })); + // Eventually update the entity. return service.update.call(this, uid, entityId, { ...opts, @@ -322,6 +352,21 @@ const decorator = (service: IDecoratedService) => ({ localizations: urlAliasLocalizations, }); + // Update all the URL alias localizations. + await Promise.all(urlAliasLocalizations.map(async (localization) => { + await strapi.db.query('plugin::webtools.url-alias').update({ + where: { + id: localization, + }, + data: { + localizations: [ + ...(urlAliasLocalizations.filter((loc) => loc !== localization)), + newUrlAlias.id, + ], + }, + }); + })); + // Update the cloned entity with the new URL alias id return service.update.call(this, uid, clonedEntity.id, { data: { url_alias: newUrlAlias.id }, populate: ['url_alias'] }); },