UpdateByIdJob.ts 852 B

123456789101112131415161718192021222324252627
  1. import { isObjectIdOrHexString } from "mongoose";
  2. import DataModule from "../DataModule";
  3. import DataModuleJob from "./DataModuleJob";
  4. export default abstract class UpdateByIdJob extends DataModuleJob {
  5. protected override async _validate() {
  6. if (typeof this._payload !== "object" || this._payload === null)
  7. throw new Error("Payload must be an object");
  8. if (!isObjectIdOrHexString(this._payload._id))
  9. throw new Error("_id is not an ObjectId");
  10. if (typeof this._payload.query !== "object")
  11. throw new Error("Query is not an object");
  12. if (Object.keys(this._payload.query).length === 0)
  13. throw new Error("Empty query object provided");
  14. }
  15. protected async _execute() {
  16. const { _id, query } = this._payload;
  17. const model = await DataModule.getModel(this.getModelName());
  18. return model.updateOne({ _id }, { $set: query });
  19. }
  20. }