summary refs log tree commit diff
path: root/src/models
diff options
context:
space:
mode:
authorFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-06-28 18:43:22 +0200
committerFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-06-28 18:43:22 +0200
commit229e741bfdd4a6d8b7b2617eec5e88c626d29e00 (patch)
tree3d85df3f10054678108826993da596b1315093e5 /src/models
parent1.3.20 (diff)
downloadserver-229e741bfdd4a6d8b7b2617eec5e88c626d29e00.tar.xz
:sparkles: Rate Limit model
Diffstat (limited to 'src/models')
-rw-r--r--src/models/RateLimit.ts26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/models/RateLimit.ts b/src/models/RateLimit.ts
new file mode 100644

index 00000000..7e4ca3cc --- /dev/null +++ b/src/models/RateLimit.ts
@@ -0,0 +1,26 @@ +import { Schema, Document, Types } from "mongoose"; +import db from "../util/Database"; +import { ChannelModel } from "./Channel"; +import { UserModel } from "./User"; +import { GuildModel } from "./Guild"; + +export interface Bucket { + id: "global" | string; // channel_239842397 | guild_238927349823 | webhook_238923423498 + user: string; + hits: number; + blocked: boolean; +} + +export interface BucketDocument extends Bucket, Document { + id: string; +} + +export const BucketSchema = new Schema({ + id: { type: String, required: true }, + user_id: { type: String, required: true }, // bot, user, oauth_application, webhook + hits: { type: Number, required: true }, // Number of times the user hit this bucket + blocked: { type: Boolean, required: true }, +}); + +// @ts-ignore +export const BucketModel = db.model<BucketDocument>("Bucket", BucketSchema, "ratelimits");