plus server type definitions and models

This commit is contained in:
Sendou
2019-12-20 17:42:04 +02:00
parent a2e8e31b63
commit e857e26866
8 changed files with 132 additions and 1 deletions

11
models/ballot.js Normal file
View File

@@ -0,0 +1,11 @@
const mongoose = require("mongoose")
const ballotSchema = new mongoose.Schema({
discord_id: { type: String, required: true },
plus_server: { type: String, required: true },
month: { type: Number, required: true },
year: { type: Number, required: true },
votes: { type: [mongoose.Schema.Types.ObjectId], required: true },
})
module.exports = mongoose.model("BallotPerson", ballotSchema)

11
models/suggested.js Normal file
View File

@@ -0,0 +1,11 @@
const mongoose = require("mongoose")
const suggestedSchema = new mongoose.Schema({
discord_id: { type: String, required: true },
suggester_discord_id: { type: String, required: true },
plus_region: { type: String, required: true },
plus_server: { type: String, required: true },
description: { type: String, required: true },
})
module.exports = mongoose.model("Suggested", suggestedSchema)

13
models/summary.js Normal file
View File

@@ -0,0 +1,13 @@
const mongoose = require("mongoose")
const summarySchema = new mongoose.Schema({
discord_id: { type: String, required: true },
suggester_discord_id: String,
voucher_discord_id: String,
plus_server: { type: String, required: true },
month: { type: Number, required: true },
year: { type: Number, required: true },
score: { type: Number, required: true },
})
module.exports = mongoose.model("SummaryPerson", summarySchema)

View File

@@ -13,6 +13,13 @@ const userSchema = new mongoose.Schema({
},
weapons: [String],
top500: Boolean,
plus: {
membership_status: String,
vouch_status: String,
plus_region: String,
can_vouch: Boolean,
last_vouched: Date,
},
})
module.exports = mongoose.model("User", userSchema)

11
models/votedperson.js Normal file
View File

@@ -0,0 +1,11 @@
const mongoose = require("mongoose")
const votedPersonSchema = new mongoose.Schema({
discord_id: { type: String, required: true },
voter_discord_id: { type: String, required: true },
score: { type: Number, required: true },
month: { type: Number, required: true },
year: { type: Number, required: true },
})
module.exports = mongoose.model("VotedPerson", votedPersonSchema)

View File

@@ -12,6 +12,7 @@ const { Link, linkResolvers } = require("./schemas/link")
const { Trend, trendResolvers } = require("./schemas/trend")
const { Tournament, tournamentResolvers } = require("./schemas/tournament")
const { FAPost, faPostResolvers } = require("./schemas/fapost")
const { Plus, plusResolvers } = require("./schemas/plus")
const Query = gql`
type Query {
@@ -41,6 +42,7 @@ const schema = makeExecutableSchema({
Trend,
Tournament,
FAPost,
Plus,
],
resolvers: merge(
resolvers,
@@ -53,7 +55,8 @@ const schema = makeExecutableSchema({
linkResolvers,
trendResolvers,
tournamentResolvers,
faPostResolvers
faPostResolvers,
plusResolvers
),
})

51
schemas/plus.js Normal file
View File

@@ -0,0 +1,51 @@
const { UserInputError, gql } = require("apollo-server-express")
const Ballot = require("../models/ballot")
const Suggested = require("../models/suggested")
const Summary = require("../models/summary")
const VotedPerson = require("../models/votedperson")
const typeDef = gql`
type Suggested {
discord_id: String!
suggester_discord_id: String!
plus_region: PlusRegion!
plus_server: PlusServer!
description: String!
}
type VotedPerson {
discord_id: String!
voter_discord_id: String!
month: Int!
year: Int!
"Voting result -2 to +2 (-1 to +1 cross-region)"
score: Float!
}
type Ballot {
discord_id: String!
plus_server: PlusServer!
month: Int!
year: Int!
votes: [VotedPerson!]!
}
"Voting result of a player"
type Summary {
discord_id: String!
suggester_discord_id: String
voucher_discord_id: String
plus_server: PlusServer!
month: Int!
year: Int!
"Average of all scores of the voters for the month -100% to 100%"
score: Float!
}
`
const resolvers = {}
module.exports = {
Plus: typeDef,
plusResolvers: resolvers,
}

View File

@@ -20,11 +20,34 @@ const typeDef = gql`
weapons: [String]
): Boolean
}
"The control sensitivity used in Splatoon 2"
type Sens {
stick: Float
motion: Float
}
"+1 or +2 LFG server on Discord"
enum PlusServer {
ONE
TWO
}
"Region used for voting"
enum PlusRegion {
EU
NA
}
"Status with +1 and +2 related things"
type PlusStatus {
membership_status: PlusServer
vouch_status: PlusServer
plus_region: PlusRegion
can_vouch: Boolean
last_vouched: String
}
"Represents user account. Also includes info regarding solo ladder."
type User {
id: ID!
@@ -40,6 +63,7 @@ const typeDef = gql`
sens: Sens
weapons: [String]!
top500: Boolean!
plus: PlusStatus
}
`
const resolvers = {