Channel Delete + Update Route
This commit is contained in:
parent
c041961243
commit
aeecd50b77
1
package-lock.json
generated
1
package-lock.json
generated
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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 {
|
||||
|
8
src/global.d.ts
vendored
Normal file
8
src/global.d.ts
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
declare global {
|
||||
namespace Express {
|
||||
interface Request {
|
||||
user_id: any;
|
||||
token: any;
|
||||
}
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user