diff --git a/server/src/schema/index.js b/server/src/schema/index.js index 2277a001f..8ef7decda 100644 --- a/server/src/schema/index.js +++ b/server/src/schema/index.js @@ -9,14 +9,16 @@ import { } from './mutations' import { CompetitionsQuery, - CompetitionsByHostQuery + CompetitionsByHostQuery, + CompetitionsByDevTeamQuery } from './queries' const RootQuery = new GraphQLObjectType({ name: 'RootQueryType', fields: Object.assign( CompetitionsQuery, - CompetitionsByHostQuery + CompetitionsByHostQuery, + CompetitionsByDevTeamQuery ) }) diff --git a/server/src/schema/queries/CompetitionsByDevTeam.js b/server/src/schema/queries/CompetitionsByDevTeam.js new file mode 100644 index 000000000..5be97bdcd --- /dev/null +++ b/server/src/schema/queries/CompetitionsByDevTeam.js @@ -0,0 +1,35 @@ +import { + GraphQLBoolean, + GraphQLList, + GraphQLString, + GraphQLNonNull +} from 'graphql' +import { epoch } from '../../utils/functions' +import { CompetitionType } from '../types' +import Competition from '../../models/competition' + +const args = { + devTeam: { type: new GraphQLNonNull(GraphQLString) }, + includeOld: { type: GraphQLBoolean } +} + +const resolve = (parent, args, context) => { + return Competition.find( + Object.assign( + { + participants: { $elemMatch: { devTeam: args.devTeam } } + }, + args.includeOld ? { finishDatetime: { $gt: epoch() } } : {} + ) + ) +} + +const query = { + competitionsByDevTeam: { + type: new GraphQLList(CompetitionType), + args, + resolve + } +} + +export default query diff --git a/server/src/schema/queries/index.js b/server/src/schema/queries/index.js index 15167df24..07e3b56bd 100644 --- a/server/src/schema/queries/index.js +++ b/server/src/schema/queries/index.js @@ -1,7 +1,9 @@ import CompetitionsQuery from './Competitions' import CompetitionsByHostQuery from './CompetitionsByHost' +import CompetitionsByDevTeamQuery from './CompetitionsByDevTeam' export { CompetitionsQuery, - CompetitionsByHostQuery + CompetitionsByHostQuery, + CompetitionsByDevTeamQuery }