summary refs log tree commit diff
path: root/src
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 /src
parentMerge branch 'master' of https://github.com/fosscord/fosscord-api (diff)
downloadserver-aeecd50b77f7ad26f4f24e1f38d18ef09f875ddf.tar.xz
Channel Delete + Update Route
Diffstat (limited to 'src')
-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
4 files changed, 56 insertions, 16 deletions
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;