cr-database/models/Score.ts

62 lines
1.3 KiB
TypeScript

import { prop } from '@typegoose/typegoose';
// dupe, but the model format is different
export interface Inquiry {
id?: string,
name: string,
reason: string,
date: Date,
report: Score,
}
export default class Score {
@prop({ required: true })
public userID: string;
// total will be between 800-200 - 0 signfies "No Score", too little information is available or other variable are too low
// calculation: Math.floor(COMBINED_SUBSCORES * 5 * 5.13)`
@prop({ required: true })
public total: number;
// 10 - 55
@prop({ required: true })
public activity: number;
// 0 - 54
@prop({ required: true })
public publicroles: number;
// -50 - 2
@prop({ required: true })
public moderation: number;
// -20 - 50
@prop({ required: true })
public cloudServices: number;
// 0 or 20, 20 points are added if the user is a staff member
@prop({ required: true })
public staff: number;
@prop({ required: true })
public other: number;
@prop({ required: true })
public notify: boolean;
@prop({ required: true })
public locked: boolean;
@prop({ required: true })
public inquiries: [Inquiry];
@prop({ required: true })
public softInquiries: [{ name: string, date: Date }];
@prop({ required: true })
public lastUpdate: Date;
@prop({ required: true })
public pin: number[];
}