42 lines
1.0 KiB
TypeScript
42 lines
1.0 KiB
TypeScript
import { IData, IJSONObject } from '@automatisch/types';
|
|
import Context from '../../types/express/context';
|
|
import App from '../../models/app';
|
|
import globalVariable from '../../helpers/global-variable';
|
|
|
|
type Params = {
|
|
stepId: string;
|
|
key: string;
|
|
parameters: IJSONObject;
|
|
};
|
|
|
|
const getData = async (_parent: unknown, params: Params, context: Context) => {
|
|
const step = await context.currentUser
|
|
.$relatedQuery('steps')
|
|
.withGraphFetched({
|
|
connection: true,
|
|
flow: true,
|
|
})
|
|
.findById(params.stepId);
|
|
|
|
if (!step) return null;
|
|
|
|
const connection = step.connection;
|
|
|
|
if (!connection || !step.appKey) return null;
|
|
|
|
const app = await App.findOneByKey(step.appKey);
|
|
const $ = await globalVariable({ connection, app, flow: step.flow, step });
|
|
|
|
const command = app.data.find((data: IData) => data.key === params.key);
|
|
|
|
const fetchedData = await command.run($);
|
|
|
|
if (fetchedData.error) {
|
|
throw new Error(JSON.stringify(fetchedData.error));
|
|
}
|
|
|
|
return fetchedData.data;
|
|
};
|
|
|
|
export default getData;
|