tachybase_todo/packages/plugins/workflow/src/server/instructions/query.ts

30 lines
1007 B
TypeScript

import FlowNodeModel from "../models/FlowNode";
import Processor from "../Processor";
import { JOB_STATUS } from "../constants";
export default {
async run(node: FlowNodeModel, input, processor: Processor) {
const {
collection,
multiple,
params = {}
} = node.config;
const repo = (<typeof FlowNodeModel>node.constructor).database.getRepository(collection);
const options = processor.getParsedValue(params);
const result = await (multiple ? repo.find : repo.findOne).call(repo, {
...options,
context: processor.options._context,
transaction: processor.transaction
});
// NOTE: `toJSON()` to avoid getting undefined value from Proxied model instance (#380)
// e.g. Object.prototype.hasOwnProperty.call(result, 'id') // false
// so the properties can not be get by json-templates(object-path)
return {
result: multiple ? result.map(item => item.toJSON()) : result?.toJSON(),
status: JOB_STATUS.RESOLVED
};
}
};