From 61e1488e1128c5b46371f17d7b1e94dbce4af143 Mon Sep 17 00:00:00 2001 From: Faruk AYDIN Date: Mon, 11 Oct 2021 21:01:34 +0200 Subject: [PATCH] chore: Refactor graphQL queries structure --- .../backend/src/graphql/graphql-schema.ts | 30 +++---------------- .../backend/src/graphql/queries/get-app.ts | 22 ++++++++++++-- .../backend/src/graphql/queries/get-apps.ts | 18 +++++++++-- packages/backend/src/graphql/root-query.ts | 13 ++++++++ packages/backend/src/graphql/root-resolver.ts | 7 ----- .../backend/src/helpers/graphql-instance.ts | 1 - 6 files changed, 52 insertions(+), 39 deletions(-) create mode 100644 packages/backend/src/graphql/root-query.ts delete mode 100644 packages/backend/src/graphql/root-resolver.ts diff --git a/packages/backend/src/graphql/graphql-schema.ts b/packages/backend/src/graphql/graphql-schema.ts index 5b911151..fffd590d 100644 --- a/packages/backend/src/graphql/graphql-schema.ts +++ b/packages/backend/src/graphql/graphql-schema.ts @@ -1,30 +1,8 @@ -import { GraphQLObjectType, GraphQLSchema, GraphQLString, GraphQLList, GraphQLNonNull } from 'graphql'; -import getApps from './queries/get-apps'; -import getApp from './queries/get-app'; -import appType from './types/app'; +import { GraphQLSchema } from 'graphql'; +import rootQuery from './root-query'; -const queryType = new GraphQLObjectType({ - name: 'Query', - fields: { - getApps: { - type: GraphQLList(appType), - args: { - name: { type: GraphQLString } - }, - resolve: (_, { name }) => getApps(name) - }, - getApp: { - type: appType, - args: { - name: { type: GraphQLNonNull(GraphQLString) }, - }, - resolve: (_, { name }) => getApp(name) - }, - } -}); - -var graphQLSchema = new GraphQLSchema({ - query: queryType, +const graphQLSchema = new GraphQLSchema({ + query: rootQuery, }); export default graphQLSchema; diff --git a/packages/backend/src/graphql/queries/get-app.ts b/packages/backend/src/graphql/queries/get-app.ts index 586e2392..1daa2526 100644 --- a/packages/backend/src/graphql/queries/get-app.ts +++ b/packages/backend/src/graphql/queries/get-app.ts @@ -1,11 +1,27 @@ +import { GraphQLString, GraphQLNonNull } from 'graphql'; import App from '../../models/app'; +import appType from '../types/app'; -const getApp = (name: string) => { - if(!name) { +type Params = { + name: string +} + +const getAppResolver = (params: Params) => { + if(!params.name) { throw new Error('No name provided.') } - return App.findOneByName(name) + return App.findOneByName(params.name) } +const getApp = { + type: appType, + args: { + name: { type: GraphQLNonNull(GraphQLString) }, + }, + resolve: (_: any, params: Params) => getAppResolver(params) +} + + + export default getApp; diff --git a/packages/backend/src/graphql/queries/get-apps.ts b/packages/backend/src/graphql/queries/get-apps.ts index 5b45c95b..dd80ffc9 100644 --- a/packages/backend/src/graphql/queries/get-apps.ts +++ b/packages/backend/src/graphql/queries/get-apps.ts @@ -1,7 +1,21 @@ +import { GraphQLString, GraphQLList } from 'graphql'; +import appType from '../types/app'; import App from '../../models/app'; -const getApps = (name: string) => { - return App.findAll(name) +type Params = { + name: string +} + +const getAppsResolver = (params: Params) => { + return App.findAll(params.name) +} + +const getApps = { + type: GraphQLList(appType), + args: { + name: { type: GraphQLString } + }, + resolve: (_: any, params: Params) => getAppsResolver(params) } export default getApps; diff --git a/packages/backend/src/graphql/root-query.ts b/packages/backend/src/graphql/root-query.ts new file mode 100644 index 00000000..5ae6dada --- /dev/null +++ b/packages/backend/src/graphql/root-query.ts @@ -0,0 +1,13 @@ +import { GraphQLObjectType } from 'graphql'; +import getApps from './queries/get-apps'; +import getApp from './queries/get-app'; + +const rootQuery = new GraphQLObjectType({ + name: 'Query', + fields: { + getApps: getApps, + getApp: getApp + } +}); + +export default rootQuery; diff --git a/packages/backend/src/graphql/root-resolver.ts b/packages/backend/src/graphql/root-resolver.ts deleted file mode 100644 index 9ecc7dec..00000000 --- a/packages/backend/src/graphql/root-resolver.ts +++ /dev/null @@ -1,7 +0,0 @@ -import getApps from './queries/get-apps'; - -const rootResolver = { - getApps: getApps -}; - -export default rootResolver; diff --git a/packages/backend/src/helpers/graphql-instance.ts b/packages/backend/src/helpers/graphql-instance.ts index 27d521a8..614ec183 100644 --- a/packages/backend/src/helpers/graphql-instance.ts +++ b/packages/backend/src/helpers/graphql-instance.ts @@ -1,5 +1,4 @@ import { graphqlHTTP } from 'express-graphql'; -import rootResolver from '../graphql/root-resolver' import graphQLSchema from '../graphql/graphql-schema' const graphQLInstance = graphqlHTTP({