This repository has been archived on 2026-02-28. You can view files and clone it, but cannot push or open issues or pull requests.
2021-02-09 19:37:39 +01:00

152 lines
4.1 KiB
TypeScript

import { Router, Request, Response } from "express";
import { db, GuildSchema, Guild } from "fosscord-server-util";
import { HTTPError } from "lambert-server";
import { check } from "./../../../../util/instanceOf";
const router: Router = Router();
router.get("/:id", async (req: Request, res: Response) => {
const member = await db.data.guilds({ id: req.params.id }).members({ id: req.userid }).get({});
if (!member) {
throw new HTTPError("you arent a member of the guild you are trying to access", 401);
}
const guild = await db.data.guilds({ id: req.params.id }).get({
id: true,
name: true,
icon: true,
// icon_hash: true,
splash: true,
discovery_splash: true,
owner: true,
owner_id: true,
permissions: true,
region: true,
afk_channel_id: true,
afk_timeout: true,
widget_enabled: true,
widget_channel_id: true,
verification_level: true,
default_message_notifications: true,
explicit_content_filter: true,
roles: true,
emojis: true,
features: true,
mfa_level: true,
application_id: true,
system_channel_id: true,
system_channel_flags: true,
rules_channel_id: true,
joined_at: true,
// large: true,
// unavailable: true,
member_count: true,
// voice_states: true,
// members: true,
// channels: true,
// presences: true,
max_presences: true,
max_members: true,
vanity_url_code: true,
description: true,
banner: true,
premium_tier: true,
premium_subscription_count: true,
preferred_locale: true,
public_updates_channel_id: true,
max_video_channel_users: true,
approximate_member_count: true,
approximate_presence_count: true,
// welcome_screen: true,
});
return res.json(guild);
});
// router.put("/:id", check(GuildSchema), async (req: Request, res: Response) => {}); // TODO: add addGuildSchema & createGuildSchema
// TODO: finish POST route
// router.post("/", check(GuildSchema), async (req: Request, res: Response) => {
// const body = req.body as GuildSchema;
// const guildID = BigInt();
// const guild: Guild = {
// ...body, // ! contains name & icon values
// afk_channel_id: undefined,
// afk_timeout: undefined,
// application_id: undefined,
// approximate_member_count: undefined,
// approximate_presence_count: undefined,
// banner: undefined,
// channels: [],
// default_message_notifications: undefined,
// description: undefined,
// discovery_splash: undefined,
// emojis: [],
// explicit_content_filter: undefined,
// features: [],
// // icon: undefined,
// id: guildID,
// // joined_at: undefined,
// large: undefined,
// max_members: undefined,
// max_presences: undefined,
// max_video_channel_users: undefined,
// member_count: undefined,
// members: undefined,
// mfa_level: undefined,
// // name: undefined,
// owner_id: req.userid, // ! important
// // owner: undefined,
// permissions: undefined,
// preferred_locale: undefined,
// premium_subscription_count: undefined,
// premium_tier: undefined,
// presences: [],
// public_updates_channel_id: undefined,
// region: undefined,
// roles: [],
// rules_channel_id: undefined,
// splash: undefined,
// system_channel_flags: undefined,
// system_channel_id: undefined,
// unavailable: undefined,
// vanity_url_code: undefined,
// verification_level: undefined,
// voice_states: [],
// welcome_screen: [],
// widget_channel_id: undefined,
// widget_enabled: undefined,
// };
// try {
// await db.data.guilds.push(guild);
// } catch (error) {
// throw new HTTPError("Couldnt create Guild", 500);
// }
// res.status(201).json({ id: guild.id });
// });
router.delete("/:id", async (req: Request, res: Response) => {
const { id: guildID } = req.params;
const guild = await db.data.guilds({ id: guildID }).get({ owner_id: true });
if (!guild) {
throw new HTTPError("This guild doesnt exist", 404);
}
if (!guild.owner_id) {
throw new HTTPError("You arent the owner of this guild", 401);
}
try {
await db.data.guilds({ id: guildID }).delete();
} catch (error) {
throw new HTTPError(`Couldnt delete guild: ${error}`, 500);
}
return res.status(204);
});
export default router;