{"version":3,"file":"documents.mjs","sources":["../../../server/src/middlewares/documents.ts"],"sourcesContent":["import type { Modules, UID } from '@strapi/types';\nimport { contentTypes } from '@strapi/utils';\nimport { RELEASE_MODEL_UID, RELEASE_ACTION_MODEL_UID } from '../constants';\nimport { getService, isEntryValid } from '../utils';\n\ntype Middleware = Modules.Documents.Middleware.Middleware;\n\ninterface ReleaseActionsParams {\n  contentType: UID.ContentType;\n  entryDocumentId?: Modules.Documents.ID;\n  locale?: string;\n}\n\nconst updateActionsStatusAndUpdateReleaseStatus = async (\n  contentType: UID.ContentType,\n  entry: Modules.Documents.AnyDocument\n) => {\n  const releases = await strapi.db.query(RELEASE_MODEL_UID).findMany({\n    where: {\n      releasedAt: null,\n      actions: {\n        contentType,\n        entryDocumentId: entry.documentId,\n        locale: entry.locale,\n      },\n    },\n  });\n\n  const entryStatus = await isEntryValid(contentType, entry, { strapi });\n\n  await strapi.db.query(RELEASE_ACTION_MODEL_UID).updateMany({\n    where: {\n      contentType,\n      entryDocumentId: entry.documentId,\n      locale: entry.locale,\n    },\n    data: {\n      isEntryValid: entryStatus,\n    },\n  });\n\n  for (const release of releases) {\n    getService('release', { strapi }).updateReleaseStatus(release.id);\n  }\n};\n\nconst deleteActionsAndUpdateReleaseStatus = async (params: ReleaseActionsParams) => {\n  const releases = await strapi.db.query(RELEASE_MODEL_UID).findMany({\n    where: {\n      actions: params,\n    },\n  });\n\n  await strapi.db.query(RELEASE_ACTION_MODEL_UID).deleteMany({\n    where: params,\n  });\n\n  for (const release of releases) {\n    getService('release', { strapi }).updateReleaseStatus(release.id);\n  }\n};\n\nconst deleteActionsOnDelete: Middleware = async (ctx, next) => {\n  if (ctx.action !== 'delete') {\n    return next();\n  }\n\n  if (!contentTypes.hasDraftAndPublish(ctx.contentType)) {\n    return next();\n  }\n\n  const contentType = ctx.contentType.uid;\n  const { documentId, locale } = ctx.params;\n\n  const result = await next();\n\n  if (!result) {\n    return result;\n  }\n\n  try {\n    deleteActionsAndUpdateReleaseStatus({\n      contentType,\n      entryDocumentId: documentId,\n      ...(locale !== '*' && { locale }),\n    });\n  } catch (error) {\n    strapi.log.error('Error while deleting release actions after delete', {\n      error,\n    });\n  }\n\n  return result;\n};\n\nconst updateActionsOnUpdate: Middleware = async (ctx, next) => {\n  if (ctx.action !== 'update') {\n    return next();\n  }\n\n  if (!contentTypes.hasDraftAndPublish(ctx.contentType)) {\n    return next();\n  }\n\n  const contentType = ctx.contentType.uid;\n\n  const result = (await next()) as Modules.Documents.AnyDocument;\n\n  if (!result) {\n    return result;\n  }\n\n  try {\n    updateActionsStatusAndUpdateReleaseStatus(contentType, result);\n  } catch (error) {\n    strapi.log.error('Error while updating release actions after update', {\n      error,\n    });\n  }\n\n  return result;\n};\n\nexport { deleteActionsOnDelete, updateActionsOnUpdate };\n"],"names":["updateActionsStatusAndUpdateReleaseStatus","contentType","entry","releases","strapi","db","query","RELEASE_MODEL_UID","findMany","where","releasedAt","actions","entryDocumentId","documentId","locale","entryStatus","isEntryValid","RELEASE_ACTION_MODEL_UID","updateMany","data","release","getService","updateReleaseStatus","id","deleteActionsAndUpdateReleaseStatus","params","deleteMany","deleteActionsOnDelete","ctx","next","action","contentTypes","hasDraftAndPublish","uid","result","error","log","updateActionsOnUpdate"],"mappings":"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"}