@developers-joyride/rate-limiter
Version:
A flexible rate limiting library with TypeScript support, Express middleware, and NestJS guard/interceptor capabilities
40 lines (35 loc) • 772 B
text/typescript
import mongoose, { Schema, Document } from "mongoose";
export interface IRateLimitLog extends Document {
key: string;
count: number;
resetTime: Date;
createdAt: Date;
}
const RateLimitLogSchema = new Schema<IRateLimitLog>({
key: {
type: String,
required: true,
index: true,
},
count: {
type: Number,
required: true,
default: 1,
},
resetTime: {
type: Date,
required: true,
index: true,
},
createdAt: {
type: Date,
default: Date.now,
expires: 0, // This will be set dynamically based on TTL
},
});
// Create compound index for efficient queries
RateLimitLogSchema.index({ key: 1, resetTime: 1 });
export const RateLimitLog = mongoose.model<IRateLimitLog>(
"RateLimitLog",
RateLimitLogSchema
);