{"version":3,"sources":["../../src/versions/enforceMaxVersions.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from '../collections/config/types.js'\nimport type { DeleteVersionsArgs } from '../database/types.js'\nimport type { SanitizedGlobalConfig } from '../globals/config/types.js'\nimport type { Payload, PayloadRequest, Where } from '../types/index.js'\n\ntype Args = {\n collection?: SanitizedCollectionConfig\n global?: SanitizedGlobalConfig\n id?: number | string\n max: number\n payload: Payload\n req?: PayloadRequest\n}\n\nexport const enforceMaxVersions = async ({\n id,\n collection,\n global: globalConfig,\n max,\n payload,\n req,\n}: Args): Promise => {\n const entityType = collection ? 'collection' : 'global'\n const slug = collection ? collection.slug : globalConfig?.slug\n\n try {\n const where: Where = {}\n let oldestAllowedDoc\n\n if (collection) {\n where.parent = {\n equals: id,\n }\n\n const query = await payload.db.findVersions({\n collection: collection.slug,\n limit: 1,\n page: max + 1,\n pagination: false,\n req,\n sort: '-updatedAt',\n where,\n })\n\n ;[oldestAllowedDoc] = query.docs\n } else if (globalConfig) {\n const query = await payload.db.findGlobalVersions({\n global: globalConfig.slug,\n limit: 1,\n page: max + 1,\n pagination: false,\n req,\n sort: '-updatedAt',\n where,\n })\n\n ;[oldestAllowedDoc] = query.docs\n }\n\n if (oldestAllowedDoc?.updatedAt) {\n const deleteQuery: Where = {\n updatedAt: {\n less_than_equal: oldestAllowedDoc.updatedAt,\n },\n }\n\n if (collection) {\n deleteQuery.parent = {\n equals: id,\n }\n }\n\n const deleteVersionsArgs: DeleteVersionsArgs = { req, where: deleteQuery }\n\n if (globalConfig) {\n deleteVersionsArgs.globalSlug = slug\n } else {\n deleteVersionsArgs.collection = slug\n }\n\n await payload.db.deleteVersions(deleteVersionsArgs)\n }\n } catch (err) {\n payload.logger.error(err)\n payload.logger.error(\n `There was an error cleaning up old versions for the ${entityType} ${slug}`,\n )\n }\n}\n"],"names":["enforceMaxVersions","id","collection","global","globalConfig","max","payload","req","entityType","slug","where","oldestAllowedDoc","parent","equals","query","db","findVersions","limit","page","pagination","sort","docs","findGlobalVersions","updatedAt","deleteQuery","less_than_equal","deleteVersionsArgs","globalSlug","deleteVersions","err","logger","error"],"mappings":"AAcA,OAAO,MAAMA,qBAAqB,OAAO,EACvCC,EAAE,EACFC,UAAU,EACVC,QAAQC,YAAY,EACpBC,GAAG,EACHC,OAAO,EACPC,GAAG,EACE;IACL,MAAMC,aAAaN,aAAa,eAAe;IAC/C,MAAMO,OAAOP,aAAaA,WAAWO,IAAI,GAAGL,cAAcK;IAE1D,IAAI;QACF,MAAMC,QAAe,CAAC;QACtB,IAAIC;QAEJ,IAAIT,YAAY;YACdQ,MAAME,MAAM,GAAG;gBACbC,QAAQZ;YACV;YAEA,MAAMa,QAAQ,MAAMR,QAAQS,EAAE,CAACC,YAAY,CAAC;gBAC1Cd,YAAYA,WAAWO,IAAI;gBAC3BQ,OAAO;gBACPC,MAAMb,MAAM;gBACZc,YAAY;gBACZZ;gBACAa,MAAM;gBACNV;YACF;YAEC,CAACC,iBAAiB,GAAGG,MAAMO,IAAI;QAClC,OAAO,IAAIjB,cAAc;YACvB,MAAMU,QAAQ,MAAMR,QAAQS,EAAE,CAACO,kBAAkB,CAAC;gBAChDnB,QAAQC,aAAaK,IAAI;gBACzBQ,OAAO;gBACPC,MAAMb,MAAM;gBACZc,YAAY;gBACZZ;gBACAa,MAAM;gBACNV;YACF;YAEC,CAACC,iBAAiB,GAAGG,MAAMO,IAAI;QAClC;QAEA,IAAIV,kBAAkBY,WAAW;YAC/B,MAAMC,cAAqB;gBACzBD,WAAW;oBACTE,iBAAiBd,iBAAiBY,SAAS;gBAC7C;YACF;YAEA,IAAIrB,YAAY;gBACdsB,YAAYZ,MAAM,GAAG;oBACnBC,QAAQZ;gBACV;YACF;YAEA,MAAMyB,qBAAyC;gBAAEnB;gBAAKG,OAAOc;YAAY;YAEzE,IAAIpB,cAAc;gBAChBsB,mBAAmBC,UAAU,GAAGlB;YAClC,OAAO;gBACLiB,mBAAmBxB,UAAU,GAAGO;YAClC;YAEA,MAAMH,QAAQS,EAAE,CAACa,cAAc,CAACF;QAClC;IACF,EAAE,OAAOG,KAAK;QACZvB,QAAQwB,MAAM,CAACC,KAAK,CAACF;QACrBvB,QAAQwB,MAAM,CAACC,KAAK,CAClB,CAAC,oDAAoD,EAAEvB,WAAW,CAAC,EAAEC,MAAM;IAE/E;AACF,EAAC"}