From 6eaff5cf145c5bdbaa20399ebccd1a049c535c3b Mon Sep 17 00:00:00 2001 From: Nikola Bjelo Date: Fri, 19 Oct 2018 18:09:30 +0200 Subject: [PATCH] Creating a "editCompetition" mutation --- .../src/schema/mutations/EditCompetition.js | 59 +++++++++++++++++++ server/src/schema/mutations/index.js | 4 +- 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 server/src/schema/mutations/EditCompetition.js diff --git a/server/src/schema/mutations/EditCompetition.js b/server/src/schema/mutations/EditCompetition.js new file mode 100644 index 000000000..ba8ed6a9d --- /dev/null +++ b/server/src/schema/mutations/EditCompetition.js @@ -0,0 +1,59 @@ +import { + GraphQLNonNull, + GraphQLID, + GraphQLInt, + GraphQLString +} from 'graphql' +import { CompetitionType } from '../types' +import Competition from '../../models/competition' + +const args = { + codeName: { type: new GraphQLNonNull(GraphQLID) }, + displayName: { type: GraphQLString }, + description: { type: GraphQLString }, + startDatetime: { type: GraphQLInt }, + finishDatetime: { type: GraphQLInt }, + formula: { type: GraphQLString }, + plotterCodeName: { type: GraphQLString }, + plotterHost: { type: GraphQLString }, + plotterRepo: { type: GraphQLString }, + plotterModuleName: { type: GraphQLString } +} + +const resolve = (parent, { codeName, displayName, description, startDatetime, finishDatetime, + formula, plotterCodeName, plotterHost, plotterRepo, plotterModuleName }, context) => { + // let authIdOnSession = context.user.sub + return new Promise((resolve, reject) => { + Competition.findOne({ codeName }).exec((err, competition) => { + if (err) reject(err) + else { + competition.displayName = displayName || competition.displayName + competition.description = description || competition.description + competition.startDatetime = startDatetime || competition.startDatetime + competition.finishDatetime = finishDatetime || competition.finishDatetime + competition.formula = formula || competition.formula + competition.plotter.codeName = plotterCodeName || competition.plotter.codeName + competition.plotter.host = plotterHost || competition.plotter.host + competition.plotter.repo = plotterRepo || competition.plotter.repo + competition.plotter.moduleName = plotterModuleName || competition.plotter.moduleName + + competition.save((err) => { + if (err) reject(err) + else { + resolve(competition) + } + }) + } + }) + }) +} + +const mutation = { + editCompetition: { + type: CompetitionType, + args, + resolve + } +} + +export default mutation diff --git a/server/src/schema/mutations/index.js b/server/src/schema/mutations/index.js index ba6d90418..f6bec378f 100644 --- a/server/src/schema/mutations/index.js +++ b/server/src/schema/mutations/index.js @@ -5,13 +5,15 @@ import { import HostCompetitionMutation from './HostCompetition' import RegisterToCompetitionMutation from './RegisterToCompetition' import AddRuleToCompetitionMutation from './AddRuleToCompetition' +import EditCompetitionMutation from './EditCompetition' const Mutation = new GraphQLObjectType({ name: 'Mutation', fields: Object.assign( HostCompetitionMutation, RegisterToCompetitionMutation, - AddRuleToCompetitionMutation + AddRuleToCompetitionMutation, + EditCompetitionMutation ) })