teams backend progress

This commit is contained in:
Sendou
2020-06-19 10:33:11 +03:00
parent 5e8cb8600f
commit b1a7f03058
4 changed files with 85 additions and 24 deletions

View File

@@ -16,7 +16,7 @@ const typeDef = gql`
joinTeam(inviteCode: String!): Boolean!
resetInviteCode: String!
leaveTeam: Boolean!
# disbandTeam: Boolean!
disbandTeam: Boolean!
# transferCaptain: Boolean!
# updateTeam(newValues: UpdateTeamInput!): Boolean!
}
@@ -252,6 +252,24 @@ const resolvers = {
return true
},
resetInviteCode: async (_root, _args, { user }) => {
if (!user)
throw new UserInputError("Must be logged in to reset invite code")
if (!user.team) {
throw new UserInputError("Must have team to reset invite code")
}
const team = await Team.findById(user.team)
if (!team) {
throw new Error("Unexpected error: team not found with the id")
}
const newCode = uuidv4()
team.inviteCode = newCode
await team.save()
return newCode
},
leaveTeam: async (_root, _args, { user }) => {
if (!user) throw new UserInputError("Must be logged in to leave a team")
if (!user.team) {
@@ -274,7 +292,7 @@ const resolvers = {
}
team.members = team.members.filter(
(member) => member.discordId !== user._id
(member) => member.discordId !== user.discord_id
)
await User.findByIdAndUpdate(user._id, { $unset: { team: "" } })
@@ -285,11 +303,55 @@ const resolvers = {
pastMembers.push(user.discord_id)
team.pastMembersDiscordIds = pastMembers
await recalculateTeamsCountries(team, null, user.discord_id)
await recalculateTeamsXp(team, user.discord_id)
Promise.all([
recalculateTeamsCountries(team, null, user.discord_id),
recalculateTeamsXp(team, user.discord_id),
])
console.error("above not working")
await team.save()
return true
},
disbandTeam: async (_root, _args, { user }) => {
if (!user)
throw new UserInputError("Must be logged in to reset invite code")
if (!user.team) {
throw new UserInputError("Must have team to reset invite code")
}
const team = await Team.findById(user.team)
if (!team) {
throw new Error("Unexpected error: team not found with the id")
}
const memberOfTeam = team.members.find(
(member) => member.discordId === user.discord_id
)
if (!memberOfTeam) {
throw new Error("Unexpected error: user not found in the member list")
}
if (!memberOfTeam.captain) {
throw new UserInputError(
"Can't disband a team you are not a captain for"
)
}
team.disbanded = true
await Promise.all(
team.members
.map((member) =>
User.findOneAndUpdate(
{ discord_id: member.discordId },
{ $unset: { team: "" } }
)
)
.concat(team.save())
)
return true
},
},

32
package-lock.json generated
View File

@@ -394,9 +394,9 @@
}
},
"apollo-engine-reporting": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/apollo-engine-reporting/-/apollo-engine-reporting-2.0.1.tgz",
"integrity": "sha512-3OYYk7DqNuJ5xKYnyLy5O2n506jYSryim8WqzBTn9MRphRamwPFjHYQm+akPA60AubXrWnYa6A8euMAiQU0ttA==",
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/apollo-engine-reporting/-/apollo-engine-reporting-2.2.0.tgz",
"integrity": "sha512-FmfWTpyEATO392QHcot3PNMrxNhEJ4Kq+QiYY263vN/OBLZQ5zpkFY25iB6gVuiJoz3NUkByhxq5f/XjarJVvA==",
"requires": {
"apollo-engine-reporting-protobuf": "^0.5.1",
"apollo-graphql": "^0.4.0",
@@ -449,12 +449,12 @@
}
},
"apollo-server": {
"version": "2.14.4",
"resolved": "https://registry.npmjs.org/apollo-server/-/apollo-server-2.14.4.tgz",
"integrity": "sha512-5RRs/UnzZMK+QGqCE8Wyfy5vNBFPmweFlkMRs966pM+6orN/g2GxxypKRsGa2rit2Wz0wki8vw+MjI80t2lPvg==",
"version": "2.15.0",
"resolved": "https://registry.npmjs.org/apollo-server/-/apollo-server-2.15.0.tgz",
"integrity": "sha512-Qx9VT3kOgJ6WVZlbpUl29I9pyfwFTY4SbZm9npuJd0v+8kVn2YijHB8DEDJ2B/6XP8WCKtq2W0W2RK5Kb1laHQ==",
"requires": {
"apollo-server-core": "^2.14.4",
"apollo-server-express": "^2.14.4",
"apollo-server-core": "^2.15.0",
"apollo-server-express": "^2.15.0",
"express": "^4.0.0",
"graphql-subscriptions": "^1.0.0",
"graphql-tools": "^4.0.0"
@@ -469,9 +469,9 @@
}
},
"apollo-server-core": {
"version": "2.14.4",
"resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.14.4.tgz",
"integrity": "sha512-aAfsvbJ2YrqAXDBgcBQocOmQJ5DkeOnEYQ6ADdkkDNU68V5yBRkAHLTOzPfbUlGHVrnOH8PT1FIVWwu5mBgkVA==",
"version": "2.15.0",
"resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.15.0.tgz",
"integrity": "sha512-PwNm/G5IXReev7E0ZaRAekQ7pN9BTuXH8c2QVgfMGMno3XiN5Dj+1DXYQthpwNJch0y5zhhLcb/JbClijgSEsA==",
"requires": {
"@apollographql/apollo-tools": "^0.4.3",
"@apollographql/graphql-playground-html": "1.6.26",
@@ -479,7 +479,7 @@
"@types/ws": "^7.0.0",
"apollo-cache-control": "^0.11.0",
"apollo-datasource": "^0.7.1",
"apollo-engine-reporting": "^2.0.1",
"apollo-engine-reporting": "^2.2.0",
"apollo-server-caching": "^0.5.1",
"apollo-server-env": "^2.4.4",
"apollo-server-errors": "^2.4.1",
@@ -512,9 +512,9 @@
"integrity": "sha512-7oEd6pUxqyWYUbQ9TA8tM0NU/3aGtXSEibo6+txUkuHe7QaxfZ2wHRp+pfT1LC1K3RXYjKj61/C2xEO19s3Kdg=="
},
"apollo-server-express": {
"version": "2.14.4",
"resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-2.14.4.tgz",
"integrity": "sha512-g0ml0NGmghvJhTiXMR0HqDD8eTz77zdgzDG2XoqNoRehtVIsZq8fmKTagVt9cUKCKKiBPUF+4tqAGD9lnprUdw==",
"version": "2.15.0",
"resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-2.15.0.tgz",
"integrity": "sha512-ECptVIrOVW2cmMWvqtpkZfyZrQL8yTSgbVvP4M8qcPV/3XxDJa6444zy7vxqN7lyYl8IJAsg/IwC0vodoXe//A==",
"requires": {
"@apollographql/graphql-playground-html": "1.6.26",
"@types/accepts": "^1.3.5",
@@ -522,7 +522,7 @@
"@types/cors": "^2.8.4",
"@types/express": "4.17.4",
"accepts": "^1.3.5",
"apollo-server-core": "^2.14.4",
"apollo-server-core": "^2.15.0",
"apollo-server-types": "^0.5.0",
"body-parser": "^1.18.3",
"cors": "^2.8.4",

View File

@@ -16,8 +16,8 @@
"author": "Sendou",
"license": "ISC",
"dependencies": {
"apollo-server": "^2.14.4",
"apollo-server-express": "^2.14.4",
"apollo-server": "^2.15.0",
"apollo-server-express": "^2.15.0",
"axios": "^0.19.2",
"btoa": "^1.2.1",
"compression": "^1.7.4",

View File

@@ -2,8 +2,7 @@ const mockUser = {
_id: "5cee8f73d1120d4315c55011",
id: "5cee8f73d1120d4315c55011",
team: "5ee60f1fff81d717ecae4bb1",
//discord_id: "79237403620945920",
discord_id: "220344765240180738",
discord_id: "79237403620945920",
__v: 0,
avatar: "a22c9557975494f859242aaf9b317058",
discriminator: "0043",