summary refs log tree commit diff
path: root/util/src/models/Ban.ts
blob: f09950eecda73baeae05ec78bda34e8fa234e585 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import { Schema, model, Types, Document } from "mongoose";
import db from "../util/Database";
import { PublicUserProjection, UserModel } from "./User";

export interface Ban extends Document {
	user_id: string;
	guild_id: string;
	executor_id: string;
	ip: string;
	reason?: string;
}

export const BanSchema = new Schema({
	user_id: { type: String, required: true },
	guild_id: { type: String, required: true },
	executor_id: { type: String, required: true },
	reason: String,
	ip: String, // ? Should we store this in here, or in the UserModel?
});

BanSchema.virtual("user", {
	ref: UserModel,
	localField: "user_id",
	foreignField: "id",
	justOne: true,
	autopopulate: { select: PublicUserProjection },
});

BanSchema.set("removeResponse", ["user_id"]);

// @ts-ignore
export const BanModel = db.model<Ban>("Ban", BanSchema, "bans");