Consistent relations, url property, src channel

This commit is contained in:
TomatoCake 2024-07-18 15:35:10 +02:00
parent 873107f90d
commit adc3474216
7 changed files with 1362 additions and 308 deletions

View File

@ -2582,6 +2582,12 @@
"source_guild": {
"$ref": "#/components/schemas/Guild"
},
"source_channel_id": {
"type": "string"
},
"source_channel": {
"$ref": "#/components/schemas/Channel"
},
"url": {
"type": "string"
},
@ -2597,9 +2603,10 @@
"channel_id",
"id",
"name",
"source_guild",
"source_guild_id",
"source_channel",
"source_channel_id",
"type",
"url",
"user",
"user_id"
]
@ -8741,7 +8748,7 @@
"bearer": []
}
],
"description": "Returns a webhook object for the given id.",
"description": "Returns a webhook object for the given id. Requires the MANAGE_WEBHOOKS permission or to be the owner of the webhook.",
"responses": {
"200": {
"description": "",

File diff suppressed because it is too large Load Diff

View File

@ -53,13 +53,20 @@ router.get(
where: { channel_id },
relations: [
"user",
"channel",
"source_channel",
"guild",
"source_guild",
"application" /*"source_channel"*/,
"application",
],
});
return res.json(webhooks);
const instanceUrl =
Config.get().api.endpointPublic || "http://localhost:3001";
return res.json(webhooks.map(webhook => ({
...webhook,
url: instanceUrl + "/webhooks/" + webhook.id + "/" + webhook.token,
})));
},
);

View File

@ -17,7 +17,7 @@
*/
import { route } from "@spacebar/api";
import { Webhook } from "@spacebar/util";
import { Config, Webhook } from "@spacebar/util";
import { Request, Response, Router } from "express";
const router = Router();
@ -39,13 +39,20 @@ router.get(
where: { guild_id },
relations: [
"user",
"channel",
"source_channel",
"guild",
"source_guild",
"application" /*"source_channel"*/,
"application",
],
});
return res.json(webhooks);
const instanceUrl =
Config.get().api.endpointPublic || "http://localhost:3001";
return res.json(webhooks.map(webhook => ({
...webhook,
url: instanceUrl + "/webhooks/" + webhook.id + "/" + webhook.token,
})));
},
);

View File

@ -34,7 +34,14 @@ router.get(
where: {
id: webhook_id,
},
relations: ["channel", "guild", "application"],
relations: [
"user",
"channel",
"source_channel",
"guild",
"source_guild",
"application",
],
});
if (!webhook) {
@ -65,6 +72,7 @@ const messageUpload = multer({
}); // max upload 50 mb
// https://discord.com/developers/docs/resources/webhook#execute-webhook
// TODO: GitHub/Slack compatible hooks
router.post(
"/",
messageUpload.any(),

View File

@ -11,7 +11,7 @@ const router = Router();
router.get(
"/",
route({
description: "Returns a webhook object for the given id.",
description: "Returns a webhook object for the given id. Requires the MANAGE_WEBHOOKS permission or to be the owner of the webhook.",
responses: {
200: {
body: "APIWebhook",
@ -23,7 +23,14 @@ router.get(
const { webhook_id } = req.params;
const webhook = await Webhook.findOneOrFail({
where: { id: webhook_id },
relations: ["channel", "guild", "application", "user"],
relations: [
"user",
"channel",
"source_channel",
"guild",
"source_guild",
"application",
],
});
if (webhook.guild_id) {

View File

@ -85,13 +85,23 @@ export class Webhook extends BaseClass {
@Column({ nullable: true })
@RelationId((webhook: Webhook) => webhook.guild)
source_guild_id: string;
source_guild_id?: string;
@JoinColumn({ name: "source_guild_id" })
@ManyToOne(() => Guild, {
onDelete: "CASCADE",
})
source_guild: Guild;
source_guild?: Guild;
url?: string;
@Column({ nullable: true })
@RelationId((webhook: Webhook) => webhook.channel)
source_channel_id: string;
@JoinColumn({ name: "source_channel_id" })
@ManyToOne(() => Channel, {
onDelete: "CASCADE",
})
source_channel: Channel;
url: string;
}