{"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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"}