summary refs log tree commit diff
diff options
context:
space:
mode:
authorYour Name <aryan8931080555@gmail.com>2021-04-26 03:40:20 +0530
committerYour Name <aryan8931080555@gmail.com>2021-04-26 03:40:20 +0530
commitaeecd50b77f7ad26f4f24e1f38d18ef09f875ddf (patch)
tree9f2883ce00b27e5ee431529f6d8a0ce4965f17a8
parentMerge branch 'master' of https://github.com/fosscord/fosscord-api (diff)
downloadserver-aeecd50b77f7ad26f4f24e1f38d18ef09f875ddf.tar.xz
Channel Delete + Update Route
-rw-r--r--package-lock.json1
-rw-r--r--package.json2
-rw-r--r--src/Server.ts7
-rw-r--r--src/global.d.ts8
-rw-r--r--src/routes/channels/#channel_id/index.ts55
-rw-r--r--src/schema/Channel.ts2
6 files changed, 57 insertions, 18 deletions
diff --git a/package-lock.json b/package-lock.json

index 47737734..47439e70 100644 --- a/package-lock.json +++ b/package-lock.json
@@ -2812,7 +2812,6 @@ "dependencies": { "anymatch": "~3.1.1", "braces": "~3.0.2", - "fsevents": "~2.3.1", "glob-parent": "~5.1.0", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", diff --git a/package.json b/package.json
index e5f4bb24..36017e31 100644 --- a/package.json +++ b/package.json
@@ -11,7 +11,7 @@ "build": "tsc -b .", "build:util": "tsc -b ./node_modules/@fosscord/server-util/", "postinstall": "patch-package", - "dev": "tsnd --respawn src/" + "dev": "tsnd --respawn src/start.ts" }, "repository": { "type": "git", diff --git a/src/Server.ts b/src/Server.ts
index c7c52c1f..c7f36233 100644 --- a/src/Server.ts +++ b/src/Server.ts
@@ -12,8 +12,13 @@ import { ErrorHandler } from "./middlewares/ErrorHandler"; import { BodyParser } from "./middlewares/BodyParser"; import { Router } from "express"; import fetch from "node-fetch"; +import mongoose from "mongoose"; -export interface FosscordServerOptions extends ServerOptions {} +// this will return the new updated document for findOneAndUpdate +mongoose.set('returnOriginal', false); // https://mongoosejs.com/docs/api/model.html#model_Model.findOneAndUpdate + + +export interface FosscordServerOptions extends ServerOptions { } declare global { namespace Express { diff --git a/src/global.d.ts b/src/global.d.ts new file mode 100644
index 00000000..3eb70f44 --- /dev/null +++ b/src/global.d.ts
@@ -0,0 +1,8 @@ +declare global { + namespace Express { + interface Request { + user_id: any; + token: any; + } + } +} \ No newline at end of file diff --git a/src/routes/channels/#channel_id/index.ts b/src/routes/channels/#channel_id/index.ts
index f6970df3..730c1a67 100644 --- a/src/routes/channels/#channel_id/index.ts +++ b/src/routes/channels/#channel_id/index.ts
@@ -1,30 +1,57 @@ -import { ChannelModel, getPermission, toObject } from "@fosscord/server-util"; +import { ChannelDeleteEvent, ChannelModel, ChannelUpdateEvent, getPermission, toObject } from "@fosscord/server-util"; import { Router } from "express"; import { HTTPError } from "lambert-server"; +import { ChannelModifySchema } from "../../../schema/Channel"; +import { emitEvent } from "../../../util/Event"; +import { check } from "../../../util/instanceOf"; const router: Router = Router(); // TODO: delete channel // TODO: Get channel -router.delete("/", async(req,res)=>{ - const {channel_id} = req.params +router.delete("/", async (req, res) => { + const { channel_id } = req.params const channel = await ChannelModel.findOne({ id: channel_id }, { guild_id: true, type: true, permission_overwrites: true }).exec(); if (!channel) throw new HTTPError("Channel not found", 404); - if (channel.guild_id) { - const permission = await getPermission(req.user_id, channel.guild_id) - permission.hasThrow("MANAGE_CHANNELS") - - // TODO Channel Update Gateway event will fire for each of them - await ChannelModel.updateMany({parent_id: channel_id}, {$set: {channel_id: null}}).exec() - - await ChannelModel.deleteOne({id: channel_id}) - } - + const permission = await getPermission(req.user_id, channel.guild_id) + permission.hasThrow("MANAGE_CHANNELS") + + // TODO Channel Update Gateway event will fire for each of them + + + await ChannelModel.deleteOne({ id: channel_id }) + // TODO: Dm channel "close" not delete - + const data = toObject(channel); //TODO: Reload channel list if request successful res.send(data) }) +// should be good now + +router.patch("/", check(ChannelModifySchema), async (req, res) => { + var payload = req.body as ChannelModifySchema //new data + const { channel_id } = req.params + var channel = await ChannelModel.findOne({ id: channel_id }, { guild_id: true }).exec(); + if (!channel) throw new HTTPError("Channel not found", 404); + + const permission = await getPermission(req.user_id, channel.guild_id, channel_id) + permission.hasThrow("MANAGE_CHANNELS") + channel = await ChannelModel.findOneAndUpdate({ id: channel_id }, payload).exec() + if (!channel) throw new HTTPError("Channel not found", 404); + + //const data = toObject(channel); + //TODO: Reload channel list if request successful + + await emitEvent({ + event: "CHANNEL_UPDATE", + data: channel, + guild_id: channel.guild_id, + } as ChannelUpdateEvent) + + res.send(toObject(channel)); +}) + export default router; + diff --git a/src/schema/Channel.ts b/src/schema/Channel.ts
index 70e305e4..3189091d 100644 --- a/src/schema/Channel.ts +++ b/src/schema/Channel.ts
@@ -37,7 +37,7 @@ export interface ChannelModifySchema { topic?: string; bitrate?: number; user_limit?: number; - rate_limit_per_user?: Number; + rate_limit_per_user?: number; position?: number; permission_overwrites?: { id: string;