compfeedevent backend routes

This commit is contained in:
Sendou 2020-04-18 00:55:54 +03:00
parent 77bafaa575
commit 2a4dcbdba3
4 changed files with 103 additions and 1 deletions

View File

@ -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,
}

View File

@ -11,7 +11,6 @@ const typeDef = gql`
type Stats {
build_count: Int!
fa_count: Int!
# top500_count: Int!
user_count: Int!
tournament_count: Int!
}

View File

@ -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
)

View File

@ -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,