From a878be2d85820c014399df7bb6d2b3007813f6ed Mon Sep 17 00:00:00 2001 From: Sendou <38327916+Sendouc@users.noreply.github.com> Date: Fri, 1 May 2020 19:12:35 +0300 Subject: [PATCH] upcomingEvents backend --- .../src/graphql/queries/upcomingEvents.ts | 38 +++++++++++++++++++ graphql-schemas/competitivefeedevent.js | 13 ++++++- mongoose-models/competitivefeedevent.js | 1 + 3 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 frontend-react/src/graphql/queries/upcomingEvents.ts diff --git a/frontend-react/src/graphql/queries/upcomingEvents.ts b/frontend-react/src/graphql/queries/upcomingEvents.ts new file mode 100644 index 000000000..5d88d5953 --- /dev/null +++ b/frontend-react/src/graphql/queries/upcomingEvents.ts @@ -0,0 +1,38 @@ +import { gql, DocumentNode } from "apollo-boost" +import { User } from "../../types" + +export interface UpcomingEventsData { + upcomingEvents: { + name: string + date: string + description: string + message_url: string + discord_invite_url: string + picture_url?: string + poster_discord_user: { + username: string + discriminator: string + twitter_name?: string + discord_id: string + } + }[] +} + +export const SEARCH_FOR_USER: DocumentNode = gql` + { + upcomingEvents { + name + date + description + message_url + discord_invite_url + picture_url + poster_discord_user { + username + discriminator + twitter_name + discord_id + } + } + } +` diff --git a/graphql-schemas/competitivefeedevent.js b/graphql-schemas/competitivefeedevent.js index 211bb53c7..11d59a42b 100644 --- a/graphql-schemas/competitivefeedevent.js +++ b/graphql-schemas/competitivefeedevent.js @@ -3,6 +3,9 @@ const User = require("../mongoose-models/user") const CompetitiveFeedEvent = require("../mongoose-models/competitivefeedevent") const typeDef = gql` + extend type Query { + upcomingEvents: [CompetitiveFeedEvent!]! + } extend type Mutation { addCompetitiveFeedEvent( event: CompetitiveFeedEventInput! @@ -14,6 +17,7 @@ const typeDef = gql` date: String! description: String! poster_discord_id: String! + poster_discord_user: User! message_discord_id: String! message_url: String! discord_invite_url: String! @@ -34,8 +38,15 @@ const typeDef = gql` } ` const resolvers = { + Query: { + upcomingEvents: () => { + return CompetitiveFeedEvent.find({ date: { $gte: new Date() } }) + .sort({ date: "asc" }) + .populate("poster_discord_user") + }, + }, Mutation: { - addCompetitiveFeedEvent: async (root, args, ctx) => { + addCompetitiveFeedEvent: async (_root, args) => { if (args.lohiToken !== process.env.LOHI_TOKEN) { throw new UserInputError("Invalid token provided") } diff --git a/mongoose-models/competitivefeedevent.js b/mongoose-models/competitivefeedevent.js index 447f13a54..72b96297c 100644 --- a/mongoose-models/competitivefeedevent.js +++ b/mongoose-models/competitivefeedevent.js @@ -15,6 +15,7 @@ competitiveFeedEventSchema.virtual("poster_discord_user", { ref: "User", localField: "poster_discord_id", foreignField: "discord_id", + justOne: true, }) module.exports = mongoose.model(