diff --git a/packages/backend/src/graphql/queries/get-flow.ts b/packages/backend/src/graphql/queries/get-flow.ts new file mode 100644 index 00000000..bc74ebd2 --- /dev/null +++ b/packages/backend/src/graphql/queries/get-flow.ts @@ -0,0 +1,29 @@ +import { GraphQLNonNull, GraphQLString } from 'graphql'; +import Flow from '../../models/flow'; +import RequestWithCurrentUser from '../../types/express/request-with-current-user'; +import flowType from '../types/flow'; + +type Params = { + id: number +} + +const getFlowResolver = async (params: Params, req: RequestWithCurrentUser) => { + const flowParams = { user_id: req.currentUser.id, id: params.id } + + const flow = await Flow.query() + .withGraphFetched('steps') + .findOne(flowParams) + .throwIfNotFound(); + + return flow; +} + +const getFlow = { + type: flowType, + args: { + id: { type: GraphQLNonNull(GraphQLString) }, + }, + resolve: (_: any, params: Params, req: RequestWithCurrentUser) => getFlowResolver(params, req) +} + +export default getFlow; diff --git a/packages/backend/src/graphql/root-query.ts b/packages/backend/src/graphql/root-query.ts index 622179ec..08cdb318 100644 --- a/packages/backend/src/graphql/root-query.ts +++ b/packages/backend/src/graphql/root-query.ts @@ -4,6 +4,7 @@ import getApp from './queries/get-app'; import getConnectedApps from './queries/get-connected-apps'; import getAppConnections from './queries/get-app-connections'; import testConnection from './queries/test-connection'; +import getFlow from './queries/get-flow'; import getFlows from './queries/get-flows'; const rootQuery = new GraphQLObjectType({ @@ -14,6 +15,7 @@ const rootQuery = new GraphQLObjectType({ getConnectedApps, getAppConnections, testConnection, + getFlow, getFlows } }); diff --git a/packages/backend/src/graphql/types/flow.ts b/packages/backend/src/graphql/types/flow.ts index 92e7ab2f..15979569 100644 --- a/packages/backend/src/graphql/types/flow.ts +++ b/packages/backend/src/graphql/types/flow.ts @@ -1,10 +1,14 @@ -import { GraphQLObjectType, GraphQLString } from 'graphql'; +import { GraphQLList, GraphQLObjectType, GraphQLString } from 'graphql'; +import StepType from './step'; const flowType = new GraphQLObjectType({ name: 'Flow', fields: { id: { type: GraphQLString }, - name: { type: GraphQLString } + name: { type: GraphQLString }, + steps: { + type: GraphQLList(StepType), + } } }) diff --git a/packages/backend/src/graphql/types/step.ts b/packages/backend/src/graphql/types/step.ts index 71f9820b..a80bc6fb 100644 --- a/packages/backend/src/graphql/types/step.ts +++ b/packages/backend/src/graphql/types/step.ts @@ -3,6 +3,7 @@ import { GraphQLObjectType, GraphQLString, GraphQLNonNull, GraphQLEnumType, Grap const stepType = new GraphQLObjectType({ name: 'Step', fields: { + id: { type: GraphQLString }, key: { type: GraphQLNonNull(GraphQLString) }, appKey: { type: GraphQLNonNull(GraphQLString) }, type: {