FindManyByIdJob.ts 858 B

1234567891011121314151617181920212223242526272829
  1. import { isValidObjectId } from "mongoose";
  2. import DataModule from "../DataModule";
  3. import DataModuleJob from "./DataModuleJob";
  4. export default abstract class FindManyByIdJob extends DataModuleJob {
  5. protected static _isBulk = true;
  6. protected override async _validate() {
  7. if (typeof this._payload !== "object" || this._payload === null)
  8. throw new Error("Payload must be an object");
  9. if (!Array.isArray(this._payload._ids))
  10. throw new Error("Payload._ids must be an array");
  11. if (!this._payload._ids.every((_id: unknown) => isValidObjectId(_id)))
  12. throw new Error(
  13. "One or more payload._ids item(s) is not a valid ObjectId"
  14. );
  15. }
  16. protected async _execute() {
  17. const model = await DataModule.getModel(this.getModelName());
  18. const { _ids } = this._payload;
  19. const query = model.find({
  20. _id: _ids
  21. });
  22. return query.exec();
  23. }
  24. }