From 81d04e417d9826ca24e64378a1e89e66674bfcf2 Mon Sep 17 00:00:00 2001 From: Faruk AYDIN Date: Wed, 24 Nov 2021 16:48:42 +0100 Subject: [PATCH] chore: Add available app enum type to validate app keys --- .../src/graphql/mutations/create-connection.ts | 5 +++-- .../graphql/types/available-apps-enum-type.ts | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 packages/backend/src/graphql/types/available-apps-enum-type.ts diff --git a/packages/backend/src/graphql/mutations/create-connection.ts b/packages/backend/src/graphql/mutations/create-connection.ts index b7c63a23..43ccadd8 100644 --- a/packages/backend/src/graphql/mutations/create-connection.ts +++ b/packages/backend/src/graphql/mutations/create-connection.ts @@ -1,7 +1,8 @@ -import { GraphQLString, GraphQLNonNull } from 'graphql'; +import { GraphQLString, GraphQLNonNull, GraphQLEnumType } from 'graphql'; import Connection from '../../models/connection'; import App from '../../models/app'; import connectionType from '../types/connection'; +import availableAppsEnumType from '../types/available-apps-enum-type'; import RequestWithCurrentUser from '../../types/express/request-with-current-user'; import { GraphQLJSONObject } from 'graphql-type-json'; @@ -27,7 +28,7 @@ const createConnectionResolver = async (params: Params, req: RequestWithCurrentU const createConnection = { type: connectionType, args: { - key: { type: GraphQLNonNull(GraphQLString) }, + key: { type: availableAppsEnumType }, data: { type: GraphQLNonNull(GraphQLJSONObject) } }, resolve: (_: any, params: Params, req: RequestWithCurrentUser) => createConnectionResolver(params, req) diff --git a/packages/backend/src/graphql/types/available-apps-enum-type.ts b/packages/backend/src/graphql/types/available-apps-enum-type.ts new file mode 100644 index 00000000..ab21e194 --- /dev/null +++ b/packages/backend/src/graphql/types/available-apps-enum-type.ts @@ -0,0 +1,17 @@ +import { GraphQLEnumType } from 'graphql'; +import App from '../../models/app'; +import appInfoType from '../../types/app-info' + +const apps = App.findAll(); +const availableAppEnumValues: any = {} + +apps.forEach((app: appInfoType) => { + availableAppEnumValues[app.key] = { value: app.key } +}) + +const availableAppsEnumType = new GraphQLEnumType({ + name: 'AvailableAppsEnumType', + values: availableAppEnumValues +}) + +export default availableAppsEnumType;