diff --git a/server/src/schema/mutations/EditRuleOfCompetition.js b/server/src/schema/mutations/EditRuleOfCompetition.js new file mode 100644 index 000000000..55cd5519c --- /dev/null +++ b/server/src/schema/mutations/EditRuleOfCompetition.js @@ -0,0 +1,56 @@ +import { + GraphQLNonNull, + GraphQLID, + GraphQLString +} from 'graphql' +import { CompetitionType } from '../types' +import Competition from '../../models/competition' + +const args = { + codeName: { type: new GraphQLNonNull(GraphQLID) }, + title: { type: new GraphQLNonNull(GraphQLString) }, + newtitle: { type: GraphQLString }, + description: { type: GraphQLString } +} + +const resolve = (parent, { codeName, title, newtitle, description }, context) => { + // let authIdOnSession = context.user.sub + return new Promise((resolve, reject) => { + Competition.findOne({ codeName }).exec((err, competition) => { + if (err) reject(err) + else { + let ruleIndex + competition.rules.find((rule, index) => { + if (rule.title === title) { + ruleIndex = index + } + }) + + competition.rules[ruleIndex].description = description || competition.rules[ruleIndex].description + if (competition.rules.some(rule => rule.title === newtitle)) { + // need to add an error message here TODO + resolve(competition) + } else { + competition.rules[ruleIndex].title = newtitle || competition.rules[ruleIndex].title + } + + competition.save((err) => { + if (err) reject(err) + else { + resolve(competition) + } + }) + } + }) + }) +} + +const mutation = { + editRuleOfCompetition: { + type: CompetitionType, + args, + resolve + } +} + +export default mutation diff --git a/server/src/schema/mutations/index.js b/server/src/schema/mutations/index.js index f6bec378f..4ae05f2ce 100644 --- a/server/src/schema/mutations/index.js +++ b/server/src/schema/mutations/index.js @@ -6,6 +6,7 @@ import HostCompetitionMutation from './HostCompetition' import RegisterToCompetitionMutation from './RegisterToCompetition' import AddRuleToCompetitionMutation from './AddRuleToCompetition' import EditCompetitionMutation from './EditCompetition' +import EditRuleOfCompetitionMutation from './EditRuleOfCompetition' const Mutation = new GraphQLObjectType({ name: 'Mutation', @@ -13,7 +14,8 @@ const Mutation = new GraphQLObjectType({ HostCompetitionMutation, RegisterToCompetitionMutation, AddRuleToCompetitionMutation, - EditCompetitionMutation + EditCompetitionMutation, + EditRuleOfCompetitionMutation ) })