// Community Score import { Document, Schema, model } from 'mongoose'; export interface Inquiry { id?: string, name: string, reason: string, date: Date, report: ScoreInterfaceRaw, } export interface ScoreInterfaceRaw { userID: string /** * total will be between 800-200 - 0 signfies "No Score", too little information is available or other variable are too low * - CALCULATION: `(COMBINED SUBSCORES x 5) * 5.13; Math.floor()` */ total: number, /** * 10 - 55 */ activity: number, /** * 0 - 54 */ roles: number, /** * -50 - 2 * all users start out with 2 moderation points, the number of points decreases for each moderation. */ moderation: number, /** * -20 - 50 * processed by CSD */ cloudServices: number, // 0 or 20, 20 points are added if the user is a staff member staff: number, other: number, notify: boolean, locked: boolean, inquiries: [ Inquiry ], softInquiries: [{ name: string, date: Date }], lastUpdate: Date, pin: number[], } export interface ScoreInterface extends Document { userID: string total: number, activity: number, roles: number, moderation: number, cloudServices: number, staff: number, other: number, notify: boolean, locked: boolean, inquiries: [ Inquiry ], softInquiries: [{ name: string, date: Date }], lastUpdate: Date, pin: number[], // general & media /* generalMessagesRatio: number, // programming-support channels and cloud-support supportMessagesRatio: number, totalModerations: number, notes: number, */ } const Score: Schema = new Schema({ userID: String, total: Number, activity: Number, roles: Number, moderation: Number, cloudServices: Number, staff: Number, other: Number, notify: Boolean, locked: Boolean, inquiries: Array, softInquiries: Array, lastUpdate: Date, pin: Array, /* generalMessagesRatio: Number, supportMessagesRatio: Number, totalModerations: Number, notes: Number, */ }); export default model('Score', Score);