{"version":3,"sources":["../../../src/queues/utilities/updateJob.ts"],"sourcesContent":["import type { ManyOptions } from '../../collections/operations/local/update.js'\nimport type { UpdateJobsArgs } from '../../database/types.js'\nimport type { Job } from '../../index.js'\nimport type { PayloadRequest, Sort, Where } from '../../types/index.js'\n\nimport { jobAfterRead, jobsCollectionSlug } from '../config/collection.js'\nimport { getCurrentDate } from './getCurrentDate.js'\n\ntype BaseArgs = {\n  data: Partial<Job>\n  depth?: number\n  disableTransaction?: boolean\n  limit?: number\n  req: PayloadRequest\n  returning?: boolean\n}\n\ntype ArgsByID = {\n  id: number | string\n  limit?: never\n  sort?: never\n  where?: never\n}\n\ntype ArgsWhere = {\n  id?: never\n  limit?: number\n  sort?: Sort\n  where: Where\n}\n\ntype RunJobsArgs = (ArgsByID | ArgsWhere) & BaseArgs\n\n/**\n * Convenience method for updateJobs by id\n */\nexport async function updateJob(args: ArgsByID & BaseArgs) {\n  const result = await updateJobs(args)\n  if (result) {\n    return result[0]\n  }\n}\n\n/**\n * Helper for updating jobs in the most performant way possible.\n * Handles deciding whether it can used direct db methods or not, and if so,\n * manually runs the afterRead hook that populates the `taskStatus` property.\n */\nexport async function updateJobs({\n  id,\n  data,\n  depth,\n  disableTransaction,\n  limit: limitArg,\n  req,\n  returning,\n  sort,\n  where: whereArg,\n}: RunJobsArgs): Promise<Job[] | null> {\n  const limit = id ? 1 : limitArg\n  const where = id ? { id: { equals: id } } : whereArg\n\n  if (depth || req.payload.config?.jobs?.runHooks) {\n    const result = await req.payload.update({\n      id,\n      collection: jobsCollectionSlug,\n      data,\n      depth,\n      disableTransaction,\n      limit,\n      req,\n      where,\n    } as ManyOptions<any, any>)\n    if (returning === false || !result) {\n      return null\n    }\n    return result.docs as Job[]\n  }\n\n  const jobReq = {\n    transactionID:\n      req.payload.db.name !== 'mongoose'\n        ? ((await req.payload.db.beginTransaction()) as string)\n        : undefined,\n  }\n\n  if (typeof data.updatedAt === 'undefined') {\n    // Ensure updatedAt date is always updated\n    data.updatedAt = getCurrentDate().toISOString()\n  }\n\n  const args: UpdateJobsArgs = id\n    ? {\n        id,\n        data,\n        req: jobReq,\n        returning,\n      }\n    : {\n        data,\n        limit,\n        req: jobReq,\n        returning,\n        sort,\n        where: where as Where,\n      }\n\n  const updatedJobs: Job[] | null = await req.payload.db.updateJobs(args)\n\n  if (req.payload.db.name !== 'mongoose' && jobReq.transactionID) {\n    await req.payload.db.commitTransaction(jobReq.transactionID)\n  }\n\n  if (returning === false || !updatedJobs?.length) {\n    return null\n  }\n\n  return updatedJobs.map((updatedJob) => {\n    return jobAfterRead({\n      config: req.payload.config,\n      doc: updatedJob,\n    })\n  })\n}\n"],"names":["jobAfterRead","jobsCollectionSlug","getCurrentDate","updateJob","args","result","updateJobs","id","data","depth","disableTransaction","limit","limitArg","req","returning","sort","where","whereArg","equals","payload","config","jobs","runHooks","update","collection","docs","jobReq","transactionID","db","name","beginTransaction","undefined","updatedAt","toISOString","updatedJobs","commitTransaction","length","map","updatedJob","doc"],"mappings":"AAKA,SAASA,YAAY,EAAEC,kBAAkB,QAAQ,0BAAyB;AAC1E,SAASC,cAAc,QAAQ,sBAAqB;AA2BpD;;CAEC,GACD,OAAO,eAAeC,UAAUC,IAAyB;IACvD,MAAMC,SAAS,MAAMC,WAAWF;IAChC,IAAIC,QAAQ;QACV,OAAOA,MAAM,CAAC,EAAE;IAClB;AACF;AAEA;;;;CAIC,GACD,OAAO,eAAeC,WAAW,EAC/BC,EAAE,EACFC,IAAI,EACJC,KAAK,EACLC,kBAAkB,EAClBC,OAAOC,QAAQ,EACfC,GAAG,EACHC,SAAS,EACTC,IAAI,EACJC,OAAOC,QAAQ,EACH;IACZ,MAAMN,QAAQJ,KAAK,IAAIK;IACvB,MAAMI,QAAQT,KAAK;QAAEA,IAAI;YAAEW,QAAQX;QAAG;IAAE,IAAIU;IAE5C,IAAIR,SAASI,IAAIM,OAAO,CAACC,MAAM,EAAEC,MAAMC,UAAU;QAC/C,MAAMjB,SAAS,MAAMQ,IAAIM,OAAO,CAACI,MAAM,CAAC;YACtChB;YACAiB,YAAYvB;YACZO;YACAC;YACAC;YACAC;YACAE;YACAG;QACF;QACA,IAAIF,cAAc,SAAS,CAACT,QAAQ;YAClC,OAAO;QACT;QACA,OAAOA,OAAOoB,IAAI;IACpB;IAEA,MAAMC,SAAS;QACbC,eACEd,IAAIM,OAAO,CAACS,EAAE,CAACC,IAAI,KAAK,aAClB,MAAMhB,IAAIM,OAAO,CAACS,EAAE,CAACE,gBAAgB,KACvCC;IACR;IAEA,IAAI,OAAOvB,KAAKwB,SAAS,KAAK,aAAa;QACzC,0CAA0C;QAC1CxB,KAAKwB,SAAS,GAAG9B,iBAAiB+B,WAAW;IAC/C;IAEA,MAAM7B,OAAuBG,KACzB;QACEA;QACAC;QACAK,KAAKa;QACLZ;IACF,IACA;QACEN;QACAG;QACAE,KAAKa;QACLZ;QACAC;QACAC,OAAOA;IACT;IAEJ,MAAMkB,cAA4B,MAAMrB,IAAIM,OAAO,CAACS,EAAE,CAACtB,UAAU,CAACF;IAElE,IAAIS,IAAIM,OAAO,CAACS,EAAE,CAACC,IAAI,KAAK,cAAcH,OAAOC,aAAa,EAAE;QAC9D,MAAMd,IAAIM,OAAO,CAACS,EAAE,CAACO,iBAAiB,CAACT,OAAOC,aAAa;IAC7D;IAEA,IAAIb,cAAc,SAAS,CAACoB,aAAaE,QAAQ;QAC/C,OAAO;IACT;IAEA,OAAOF,YAAYG,GAAG,CAAC,CAACC;QACtB,OAAOtC,aAAa;YAClBoB,QAAQP,IAAIM,OAAO,CAACC,MAAM;YAC1BmB,KAAKD;QACP;IACF;AACF"}