From 039bca157105937e4130d60ae1c2e77c5bca4fe4 Mon Sep 17 00:00:00 2001 From: Nikola Bjelo Date: Fri, 19 Oct 2018 14:23:25 +0200 Subject: [PATCH] Refactoring queries and mutations, removing default exports --- server/src/schema/index.js | 72 ++++--------------- .../src/schema/mutations/HostCompetition.js | 45 ++++++++++++ server/src/schema/mutations/index.js | 5 ++ server/src/schema/queries/Competitions.js | 16 +++++ .../src/schema/queries/CompetitionsByHost.js | 25 +++++++ server/src/schema/queries/index.js | 7 ++ server/src/schema/types/index.js | 1 - 7 files changed, 111 insertions(+), 60 deletions(-) create mode 100644 server/src/schema/mutations/HostCompetition.js create mode 100644 server/src/schema/mutations/index.js create mode 100644 server/src/schema/queries/Competitions.js create mode 100644 server/src/schema/queries/CompetitionsByHost.js create mode 100644 server/src/schema/queries/index.js diff --git a/server/src/schema/index.js b/server/src/schema/index.js index 79102d8fe..ad95b4c32 100644 --- a/server/src/schema/index.js +++ b/server/src/schema/index.js @@ -1,73 +1,27 @@ import { GraphQLObjectType, - GraphQLSchema, - GraphQLString, - GraphQLList, - GraphQLNonNull + GraphQLSchema } from 'graphql' -import { slugify } from '../utils/functions' -import Competition from '../models/competition' -import { CompetitionType } from './types' +import { HostCompetitionMutation } from './mutations' +import { + CompetitionsQuery, + CompetitionsByHostQuery +} from './queries' const RootQuery = new GraphQLObjectType({ name: 'RootQueryType', - fields: { - competitions: { - type: new GraphQLList(CompetitionType), - resolve (parent, args, context) { - return Competition.find() - } - }, - competitionsByHost: { - type: new GraphQLList(CompetitionType), - args: { - host: { type: new GraphQLNonNull(GraphQLString) } - }, - resolve (parent, args, context) { - return Competition.find({ - host: args.host - }) - } - } - } + fields: Object.assign( + CompetitionsQuery, + CompetitionsByHostQuery + ) }) const Mutation = new GraphQLObjectType({ name: 'Mutation', - fields: { - hostCompetition: { - type: CompetitionType, - args: { - displayName: { type: new GraphQLNonNull(GraphQLString) }, - description: { type: new GraphQLNonNull(GraphQLString) }, - startDatetime: { type: new GraphQLNonNull(GraphQLString) }, - finishDatetime: { type: new GraphQLNonNull(GraphQLString) }, - formula: { type: new GraphQLNonNull(GraphQLString) } - }, - resolve (parent, args, context) { - // let authIdOnSession = context.user.sub - let authIdOnSession = 'some-id' - let newCompetition = new Competition({ - host: authIdOnSession, - displayName: args.displayName, - description: args.description, - // startDatetime: args.startDatetime, - // finishDatetime: args.finishDatetime, - formula: args.formula - }) - newCompetition.codeName = slugify(newCompetition.displayName) + '-' + newCompetition._id - return new Promise((resolve, reject) => { - newCompetition.save((err) => { - if (err) reject(err) - else { - resolve(newCompetition) - } - }) - }) - } - } - } + fields: Object.assign( + HostCompetitionMutation + ) }) const Schema = new GraphQLSchema({ diff --git a/server/src/schema/mutations/HostCompetition.js b/server/src/schema/mutations/HostCompetition.js new file mode 100644 index 000000000..81f28757b --- /dev/null +++ b/server/src/schema/mutations/HostCompetition.js @@ -0,0 +1,45 @@ +import { + GraphQLNonNull, + GraphQLString +} from 'graphql' +import { CompetitionType } from '../types' +import Competition from '../../models/competition' +import { slugify } from '../../utils/functions' + +const args = { + displayName: { type: new GraphQLNonNull(GraphQLString) }, + description: { type: new GraphQLNonNull(GraphQLString) }, + startDatetime: { type: new GraphQLNonNull(GraphQLString) }, + finishDatetime: { type: new GraphQLNonNull(GraphQLString) }, + formula: { type: new GraphQLNonNull(GraphQLString) } +} + +const mutation = { + hostCompetition: { + type: CompetitionType, + args, + resolve (parent, args, context) { + // let authIdOnSession = context.user.sub + let authIdOnSession = 'some-id' + let newCompetition = new Competition({ + host: authIdOnSession, + displayName: args.displayName, + description: args.description, + // startDatetime: args.startDatetime, + // finishDatetime: args.finishDatetime, + formula: args.formula + }) + newCompetition.codeName = slugify(newCompetition.displayName) + '-' + newCompetition._id + return new Promise((resolve, reject) => { + newCompetition.save((err) => { + if (err) reject(err) + else { + resolve(newCompetition) + } + }) + }) + } + } +} + +export default mutation diff --git a/server/src/schema/mutations/index.js b/server/src/schema/mutations/index.js new file mode 100644 index 000000000..b07702c42 --- /dev/null +++ b/server/src/schema/mutations/index.js @@ -0,0 +1,5 @@ +import HostCompetitionMutation from './HostCompetition' + +export { + HostCompetitionMutation +} diff --git a/server/src/schema/queries/Competitions.js b/server/src/schema/queries/Competitions.js new file mode 100644 index 000000000..554e02118 --- /dev/null +++ b/server/src/schema/queries/Competitions.js @@ -0,0 +1,16 @@ +import { + GraphQLList +} from 'graphql' +import { CompetitionType } from '../types' +import Competition from '../../models/competition' + +const query = { + competitions: { + type: new GraphQLList(CompetitionType), + resolve (parent, args, context) { + return Competition.find() + } + } +} + +export default query diff --git a/server/src/schema/queries/CompetitionsByHost.js b/server/src/schema/queries/CompetitionsByHost.js new file mode 100644 index 000000000..e5faf54c7 --- /dev/null +++ b/server/src/schema/queries/CompetitionsByHost.js @@ -0,0 +1,25 @@ +import { + GraphQLList, + GraphQLString, + GraphQLNonNull +} from 'graphql' +import { CompetitionType } from '../types' +import Competition from '../../models/competition' + +const args = { + host: { type: new GraphQLNonNull(GraphQLString) } +} + +const query = { + competitionsByHost: { + type: new GraphQLList(CompetitionType), + args, + resolve (parent, args, context) { + return Competition.find({ + host: args.host + }) + } + } +} + +export default query diff --git a/server/src/schema/queries/index.js b/server/src/schema/queries/index.js new file mode 100644 index 000000000..15167df24 --- /dev/null +++ b/server/src/schema/queries/index.js @@ -0,0 +1,7 @@ +import CompetitionsQuery from './Competitions' +import CompetitionsByHostQuery from './CompetitionsByHost' + +export { + CompetitionsQuery, + CompetitionsByHostQuery +} diff --git a/server/src/schema/types/index.js b/server/src/schema/types/index.js index be10a14df..6431a687c 100644 --- a/server/src/schema/types/index.js +++ b/server/src/schema/types/index.js @@ -13,4 +13,3 @@ export { PrizeType, CompetitionType } -export default CompetitionType