From e3184aedb834d4865d7b7b5c0cac776943046626 Mon Sep 17 00:00:00 2001 From: Faruk AYDIN Date: Fri, 24 Dec 2021 16:05:44 +0300 Subject: [PATCH] feat: Implement get flow graphQL query --- .../backend/src/graphql/queries/get-flow.ts | 29 +++++++++++++++++++ packages/backend/src/graphql/root-query.ts | 2 ++ packages/backend/src/graphql/types/flow.ts | 8 +++-- packages/backend/src/graphql/types/step.ts | 1 + 4 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 packages/backend/src/graphql/queries/get-flow.ts 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: {