diff --git a/util/oldModels/Webhook.ts b/util/oldModels/Webhook.ts
new file mode 100644
index 00000000..7379e98f
--- /dev/null
+++ b/util/oldModels/Webhook.ts
@@ -0,0 +1,84 @@
+import { Schema, Document, Types } from "mongoose";
+import { transpileModule } from "typescript";
+import db from "../util/Database";
+import { ChannelModel } from "./Channel";
+import { GuildModel } from "./Guild";
+
+export interface Webhook {}
+
+export enum WebhookType {
+ Incoming = 1,
+ ChannelFollower = 2,
+}
+
+export interface WebhookDocument extends Document, Webhook {
+ id: String;
+ type: number;
+ guild_id?: string;
+ channel_id: string;
+ name?: string;
+ avatar?: string;
+ token?: string;
+ application_id?: string;
+ user_id?: string;
+ source_guild_id: string;
+}
+
+export const WebhookSchema = new Schema({
+ id: { type: String, required: true },
+ type: { type: Number, required: true },
+ guild_id: String,
+ channel_id: String,
+ name: String,
+ avatar: String,
+ token: String,
+ application_id: String,
+ user_id: String,
+ source_guild_id: String,
+ source_channel_id: String,
+});
+
+WebhookSchema.virtual("source_guild", {
+ ref: GuildModel,
+ localField: "id",
+ foreignField: "source_guild_id",
+ justOne: true,
+ autopopulate: {
+ select: {
+ icon: true,
+ id: true,
+ name: true,
+ },
+ },
+});
+
+WebhookSchema.virtual("source_channel", {
+ ref: ChannelModel,
+ localField: "id",
+ foreignField: "source_channel_id",
+ justOne: true,
+ autopopulate: {
+ select: {
+ id: true,
+ name: true,
+ },
+ },
+});
+
+WebhookSchema.virtual("source_channel", {
+ ref: ChannelModel,
+ localField: "id",
+ foreignField: "source_channel_id",
+ justOne: true,
+ autopopulate: {
+ select: {
+ id: true,
+ name: true,
+ },
+ },
+});
+
+WebhookSchema.set("removeResponse", ["source_channel_id", "source_guild_id"]);
+
+// @ts-ignore
+export const WebhookModel = db.model<WebhookDocument>("Webhook", WebhookSchema, "webhooks");
|