mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-09-30 23:27:55 -05:00
teams backend progress
This commit is contained in:
@@ -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
32
package-lock.json
generated
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user