From 2a4dcbdba3a42c6d4e12055b4e3d948229617e03 Mon Sep 17 00:00:00 2001 From: Sendou <38327916+Sendouc@users.noreply.github.com> Date: Sat, 18 Apr 2020 00:55:54 +0300 Subject: [PATCH] compfeedevent backend routes --- graphql-schemas/competitivefeedevent.js | 74 +++++++++++++++++++++++++ graphql-schemas/general.js | 1 - mongoose-models/competitivefeedevent.js | 23 ++++++++ schema.js | 6 ++ 4 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 graphql-schemas/competitivefeedevent.js create mode 100644 mongoose-models/competitivefeedevent.js diff --git a/graphql-schemas/competitivefeedevent.js b/graphql-schemas/competitivefeedevent.js new file mode 100644 index 000000000..b1d8e7743 --- /dev/null +++ b/graphql-schemas/competitivefeedevent.js @@ -0,0 +1,74 @@ +const { gql, UserInputError } = require("apollo-server-express") +const User = require("../mongoose-models/user") +const CompetitiveFeedEvent = require("../mongoose-models/competitivefeedevent") + +const typeDef = gql` + extend type Mutation { + addCompetitiveFeedEvent( + event: CompetitiveFeedEventInput! + lohiToken: String! + ): Boolean! + } + type CompetitiveFeedEvent { + name: String! + date: String! + description: String! + poster_discord_id: String! + message_discord_id: String! + message_url: String! + discord_invite_url: String! + picture_url: String + } + + input CompetitiveFeedEventInput { + name: String! + date: String! + description: String! + poster_discord_id: String! + poster_username: String! + poster_discriminator: String! + message_discord_id: String! + message_url: String! + discord_invite_url: String! + picture_url: String + } +` +const resolvers = { + Mutation: { + addCompetitiveFeedEvent: async (root, args, ctx) => { + console.log("args", args) + if (args.lohiToken !== process.env.LOHI_TOKEN) { + throw new UserInputError("Invalid token provided") + } + console.log("jaa") + + const user = await User.find({ discord_id: args.poster_discord_id }) + if (!user) { + const newUser = new User({ + discord_id: ctx.poster_discord_id, + username: args.poster_username, + discriminator: args.poster_discriminator, + }) + await newUser.save() + } + + const compFeedEvent = await CompetitiveFeedEvent.findOne({ + name: args.event.name, + }) + + if (!!compFeedEvent) { + throw new UserInputError("tournament with this name already exists") + } + + const newCompFeedEvent = new CompetitiveFeedEvent({ ...args.event }) + await newCompFeedEvent.save() + + return true + }, + }, +} + +module.exports = { + CompetitiveFeedEvent: typeDef, + competitiveFeedEventResolvers: resolvers, +} diff --git a/graphql-schemas/general.js b/graphql-schemas/general.js index 31d698202..56c201757 100644 --- a/graphql-schemas/general.js +++ b/graphql-schemas/general.js @@ -11,7 +11,6 @@ const typeDef = gql` type Stats { build_count: Int! fa_count: Int! - # top500_count: Int! user_count: Int! tournament_count: Int! } diff --git a/mongoose-models/competitivefeedevent.js b/mongoose-models/competitivefeedevent.js new file mode 100644 index 000000000..447f13a54 --- /dev/null +++ b/mongoose-models/competitivefeedevent.js @@ -0,0 +1,23 @@ +const mongoose = require("mongoose") + +const competitiveFeedEventSchema = new mongoose.Schema({ + name: String, + date: Date, + description: String, + poster_discord_id: String, + message_discord_id: String, + message_url: String, + discord_invite_url: String, + picture_url: String, +}) + +competitiveFeedEventSchema.virtual("poster_discord_user", { + ref: "User", + localField: "poster_discord_id", + foreignField: "discord_id", +}) + +module.exports = mongoose.model( + "CompetitiveFeedEvent", + competitiveFeedEventSchema +) diff --git a/schema.js b/schema.js index adca95701..db165a6bd 100644 --- a/schema.js +++ b/schema.js @@ -18,6 +18,10 @@ const { DetailedTournament, detailedTournamentResolvers, } = require("./graphql-schemas/detailedtournament") +const { + CompetitiveFeedEvent, + competitiveFeedEventResolvers, +} = require("./graphql-schemas/competitivefeedevent") const { FAPost, faPostResolvers } = require("./graphql-schemas/fapost") const { Plus, plusResolvers } = require("./graphql-schemas/plus") const { Team, teamResolvers } = require("./graphql-schemas/team") @@ -51,6 +55,7 @@ const schema = makeExecutableSchema({ Trend, Tournament, DetailedTournament, + CompetitiveFeedEvent, FAPost, Plus, Team, @@ -68,6 +73,7 @@ const schema = makeExecutableSchema({ trendResolvers, tournamentResolvers, detailedTournamentResolvers, + competitiveFeedEventResolvers, faPostResolvers, plusResolvers, teamResolvers,