58 lines
1.1 KiB
TypeScript
58 lines
1.1 KiB
TypeScript
import App from '../../models/app';
|
|
import Step from '../../models/step';
|
|
import Context from '../../types/express/context';
|
|
|
|
type Params = {
|
|
input: {
|
|
triggerAppKey: string;
|
|
connectionId: string;
|
|
};
|
|
};
|
|
|
|
const createFlow = async (
|
|
_parent: unknown,
|
|
params: Params,
|
|
context: Context
|
|
) => {
|
|
context.currentUser.can('create', 'Flow');
|
|
|
|
const connectionId = params?.input?.connectionId;
|
|
const appKey = params?.input?.triggerAppKey;
|
|
|
|
if (appKey) {
|
|
await App.findOneByKey(appKey);
|
|
}
|
|
|
|
const flow = await context.currentUser.$relatedQuery('flows').insert({
|
|
name: 'Name your flow',
|
|
});
|
|
|
|
if (connectionId) {
|
|
const hasConnection = await context.currentUser
|
|
.$relatedQuery('connections')
|
|
.findById(connectionId);
|
|
|
|
if (!hasConnection) {
|
|
throw new Error('The connection does not exist!');
|
|
}
|
|
}
|
|
|
|
await Step.query().insert({
|
|
flowId: flow.id,
|
|
type: 'trigger',
|
|
position: 1,
|
|
appKey,
|
|
connectionId,
|
|
});
|
|
|
|
await Step.query().insert({
|
|
flowId: flow.id,
|
|
type: 'action',
|
|
position: 2,
|
|
});
|
|
|
|
return flow;
|
|
};
|
|
|
|
export default createFlow;
|