FindByIdJob.ts 632 B

123456789101112131415161718192021
  1. import { Types, isObjectIdOrHexString } from "mongoose";
  2. import DataModule from "../DataModule";
  3. import DataModuleJob from "./DataModuleJob";
  4. export default abstract class FindByIdJob extends DataModuleJob {
  5. protected override async _validate() {
  6. if (typeof this._payload !== "object")
  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. }
  11. protected async _execute({ _id }: { _id: Types.ObjectId }) {
  12. const model = await DataModule.getModel(this.getModelName());
  13. const query = model.findById(_id);
  14. return query.exec();
  15. }
  16. }