add original models
parent
2b12bf506f
commit
62fc289088
|
@ -0,0 +1,13 @@
|
||||||
|
import { Document, Schema, model } from 'mongoose';
|
||||||
|
|
||||||
|
export interface CustomerInterface extends Document {
|
||||||
|
cusID: string,
|
||||||
|
userID: string,
|
||||||
|
}
|
||||||
|
|
||||||
|
const Customer: Schema = new Schema({
|
||||||
|
cusID: String,
|
||||||
|
userID: String,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default model<CustomerInterface>('Customer', Customer);
|
|
@ -0,0 +1,21 @@
|
||||||
|
import { Document, Schema, model } from 'mongoose';
|
||||||
|
|
||||||
|
export interface CustomerPortalInterface extends Document {
|
||||||
|
key: string,
|
||||||
|
username: string,
|
||||||
|
userID: string,
|
||||||
|
emailAddress: string,
|
||||||
|
expiresOn: Date,
|
||||||
|
used?: boolean,
|
||||||
|
}
|
||||||
|
|
||||||
|
const CustomerPortal: Schema = new Schema({
|
||||||
|
key: String,
|
||||||
|
username: String,
|
||||||
|
userID: String,
|
||||||
|
emailAddress: String,
|
||||||
|
expiresOn: Date,
|
||||||
|
used: Boolean,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default model<CustomerPortalInterface>('CustomerPortal', CustomerPortal);
|
|
@ -0,0 +1,21 @@
|
||||||
|
import { Document, model, Schema } from 'mongoose';
|
||||||
|
|
||||||
|
export interface ExecutiveOrderInterface extends Document {
|
||||||
|
issuer: string;
|
||||||
|
subject: string;
|
||||||
|
body: string;
|
||||||
|
at: number;
|
||||||
|
oID: string;
|
||||||
|
msg: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const ExecutiveOrder = new Schema({
|
||||||
|
issuer: { type: String, required: true },
|
||||||
|
subject: { type: String, required: true },
|
||||||
|
body: { type: String, required: true },
|
||||||
|
at: { type: Number, required: true },
|
||||||
|
oID: { type: String, required: true, unique: true },
|
||||||
|
msg: { type: String, required: true, unique: true },
|
||||||
|
});
|
||||||
|
|
||||||
|
export default model<ExecutiveOrderInterface>('ExecutiveOrders', ExecutiveOrder);
|
|
@ -0,0 +1,21 @@
|
||||||
|
import { Document, Schema, model } from 'mongoose';
|
||||||
|
|
||||||
|
export interface FileInterface extends Document {
|
||||||
|
name: string,
|
||||||
|
identifier: string,
|
||||||
|
mimeType: string,
|
||||||
|
data: Buffer,
|
||||||
|
downloaded: number,
|
||||||
|
maxDownloads: number,
|
||||||
|
}
|
||||||
|
|
||||||
|
const File: Schema = new Schema({
|
||||||
|
name: String,
|
||||||
|
identifier: String,
|
||||||
|
mimeType: String,
|
||||||
|
data: Buffer,
|
||||||
|
downloaded: Number,
|
||||||
|
maxDownloads: Number,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default model<FileInterface>('File', File);
|
|
@ -0,0 +1,33 @@
|
||||||
|
import { Document, Schema, model } from 'mongoose';
|
||||||
|
import { ScoreInterfaceRaw } from '.';
|
||||||
|
|
||||||
|
export enum InqType {
|
||||||
|
HARD,
|
||||||
|
SOFT,
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface InquiryInterface extends Document {
|
||||||
|
iid?: string,
|
||||||
|
userID: string,
|
||||||
|
/**
|
||||||
|
* - 0: Hard
|
||||||
|
* - 1: Soft
|
||||||
|
*/
|
||||||
|
type: InqType,
|
||||||
|
name: string,
|
||||||
|
reason?: string,
|
||||||
|
date: Date,
|
||||||
|
report?: ScoreInterfaceRaw,
|
||||||
|
}
|
||||||
|
|
||||||
|
const Inquiry: Schema = new Schema({
|
||||||
|
iid: String,
|
||||||
|
userID: String,
|
||||||
|
type: Number,
|
||||||
|
name: String,
|
||||||
|
reason: String,
|
||||||
|
date: String,
|
||||||
|
report: Object,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default model<InquiryInterface>('Inquiry', Inquiry);
|
|
@ -0,0 +1,43 @@
|
||||||
|
import { Document, Schema, model } from 'mongoose';
|
||||||
|
|
||||||
|
export interface MemberInterface extends Document {
|
||||||
|
userID: string,
|
||||||
|
additional?: {
|
||||||
|
langs: ['js', 'py', 'rb', 'ts', 'rs', 'go', 'cfam', 'csharp', 'swift', 'java', 'kt', 'asm'],
|
||||||
|
operatingSystems: ['arch', 'deb', 'cent', 'fedora', 'manjaro', 'mdarwin', 'redhat', 'ubuntu', 'win'],
|
||||||
|
github: string,
|
||||||
|
gitlab: string,
|
||||||
|
bio: string,
|
||||||
|
},
|
||||||
|
misc?: {
|
||||||
|
t3TemporaryExpiration?: {
|
||||||
|
date: Date,
|
||||||
|
processed: boolean
|
||||||
|
previousTier: 1 | 2 | 3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
x509?: string,
|
||||||
|
pgp?: string,
|
||||||
|
}
|
||||||
|
|
||||||
|
const Member: Schema = new Schema({
|
||||||
|
userID: String,
|
||||||
|
additional: {
|
||||||
|
langs: Array,
|
||||||
|
operatingSystems: Array,
|
||||||
|
github: String,
|
||||||
|
gitlab: String,
|
||||||
|
bio: String,
|
||||||
|
},
|
||||||
|
misc: {
|
||||||
|
t3TemporaryExpiration: {
|
||||||
|
date: Date,
|
||||||
|
processed: Boolean,
|
||||||
|
previousTier: Number,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
x509: String,
|
||||||
|
pgp: String,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default model<MemberInterface>('Member', Member);
|
|
@ -0,0 +1,24 @@
|
||||||
|
import { Document, Schema, model } from 'mongoose';
|
||||||
|
|
||||||
|
export interface MerchantInterface extends Document {
|
||||||
|
name: string,
|
||||||
|
key: string,
|
||||||
|
privileged: boolean,
|
||||||
|
/**
|
||||||
|
* type
|
||||||
|
* - 0: soft
|
||||||
|
* - 1: hard
|
||||||
|
*/
|
||||||
|
type: 0 | 1;
|
||||||
|
pulls: [{ type: 0 | 1, reason: string, date: Date }],
|
||||||
|
}
|
||||||
|
|
||||||
|
const Merchant: Schema = new Schema({
|
||||||
|
name: String,
|
||||||
|
key: String,
|
||||||
|
privileged: Boolean,
|
||||||
|
type: Number,
|
||||||
|
pulls: Array,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default model<MerchantInterface>('Merchant', Merchant);
|
|
@ -0,0 +1,37 @@
|
||||||
|
import { Document, Schema, model } from 'mongoose';
|
||||||
|
|
||||||
|
export interface ModerationInterface extends Document {
|
||||||
|
userID: string,
|
||||||
|
logID: string,
|
||||||
|
moderatorID: string,
|
||||||
|
reason: string,
|
||||||
|
/**
|
||||||
|
* @field 0 - Warn
|
||||||
|
* @field 1 - Unmute
|
||||||
|
* @field 2 - Mute
|
||||||
|
* @field 3 - Kick
|
||||||
|
* @field 4 - Unban
|
||||||
|
* @field 5 - Ban
|
||||||
|
*/
|
||||||
|
type: 0 | 1 | 2 | 3 | 4 | 5
|
||||||
|
date: Date,
|
||||||
|
expiration?: {
|
||||||
|
date: Date,
|
||||||
|
processed: boolean
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const Moderation: Schema = new Schema({
|
||||||
|
userID: String,
|
||||||
|
logID: String,
|
||||||
|
moderatorID: String,
|
||||||
|
reason: String,
|
||||||
|
type: Number,
|
||||||
|
date: Date,
|
||||||
|
expiration: {
|
||||||
|
date: Date,
|
||||||
|
processed: Boolean,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
export default model<ModerationInterface>('Moderation', Moderation);
|
|
@ -0,0 +1,35 @@
|
||||||
|
import { Document, model, Schema } from 'mongoose';
|
||||||
|
|
||||||
|
export interface MotionInterface extends Document {
|
||||||
|
issuer: string;
|
||||||
|
subject: string;
|
||||||
|
body: string;
|
||||||
|
at: number;
|
||||||
|
oID: string;
|
||||||
|
results?: {
|
||||||
|
yea: number;
|
||||||
|
nay: number;
|
||||||
|
present: number;
|
||||||
|
absent: number;
|
||||||
|
};
|
||||||
|
processed: boolean;
|
||||||
|
msg: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const Motion = new Schema({
|
||||||
|
issuer: { type: String, required: true },
|
||||||
|
subject: { type: String, required: true },
|
||||||
|
body: { type: String, required: true },
|
||||||
|
at: { type: Number, required: true },
|
||||||
|
oID: { type: String, required: true, unique: true },
|
||||||
|
results: {
|
||||||
|
yea: Number,
|
||||||
|
nay: Number,
|
||||||
|
present: Number,
|
||||||
|
absent: Number,
|
||||||
|
},
|
||||||
|
processed: Boolean,
|
||||||
|
msg: { required: true, unique: true, type: String },
|
||||||
|
});
|
||||||
|
|
||||||
|
export default model<MotionInterface>('Motions', Motion);
|
|
@ -0,0 +1,19 @@
|
||||||
|
import { Document, Schema, model } from 'mongoose';
|
||||||
|
|
||||||
|
export interface NoteInterface extends Document {
|
||||||
|
userID: string,
|
||||||
|
staffID: string,
|
||||||
|
date: Date,
|
||||||
|
category: 'comm' | 'cs' | 'edu' | '',
|
||||||
|
text: string,
|
||||||
|
}
|
||||||
|
|
||||||
|
const Note: Schema = new Schema({
|
||||||
|
userID: String,
|
||||||
|
staffID: String,
|
||||||
|
date: Date,
|
||||||
|
category: String,
|
||||||
|
text: String,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default model<NoteInterface>('Note', Note);
|
|
@ -0,0 +1,32 @@
|
||||||
|
import { Document, Schema, model } from 'mongoose';
|
||||||
|
|
||||||
|
export interface PagerNumberRaw {
|
||||||
|
num: string,
|
||||||
|
// This field will be "" if the pager number doesn't belong to an individual user
|
||||||
|
individualAssignID: string,
|
||||||
|
emailAddresses: string[],
|
||||||
|
discordIDs: string[],
|
||||||
|
receiveEmail: boolean,
|
||||||
|
receivePhone: boolean,
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface PagerNumberInterface extends Document {
|
||||||
|
num: string,
|
||||||
|
// This field will be "" if the pager number doesn't belong to an individual user
|
||||||
|
individualAssignID: string,
|
||||||
|
emailAddresses: string[],
|
||||||
|
discordIDs: string[],
|
||||||
|
receiveEmail: boolean,
|
||||||
|
receivePhone: boolean,
|
||||||
|
}
|
||||||
|
|
||||||
|
const PagerNumber: Schema = new Schema({
|
||||||
|
num: String,
|
||||||
|
individualAssignID: String,
|
||||||
|
emailAddresses: Array,
|
||||||
|
discordIDs: Array,
|
||||||
|
receiveEmail: Boolean,
|
||||||
|
receivePhone: Boolean,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default model<PagerNumberInterface>('PagerNumber', PagerNumber);
|
|
@ -0,0 +1,37 @@
|
||||||
|
import { Document, model, Schema } from 'mongoose';
|
||||||
|
|
||||||
|
export interface ProclamationInterface extends Document {
|
||||||
|
issuer: string;
|
||||||
|
subject: string;
|
||||||
|
body: string;
|
||||||
|
at: number;
|
||||||
|
oID: string;
|
||||||
|
results?: {
|
||||||
|
yea: number;
|
||||||
|
nay: number;
|
||||||
|
present: number;
|
||||||
|
absent: number;
|
||||||
|
};
|
||||||
|
msg: string;
|
||||||
|
processed?: boolean;
|
||||||
|
votedDirectors: string[];
|
||||||
|
}
|
||||||
|
|
||||||
|
const Proclamation = new Schema({
|
||||||
|
issuer: { type: String, required: true },
|
||||||
|
subject: { type: String, required: true },
|
||||||
|
body: { type: String, required: true },
|
||||||
|
at: { type: Number, required: true },
|
||||||
|
oID: { type: String, required: true, unique: true },
|
||||||
|
results: {
|
||||||
|
yea: Number,
|
||||||
|
nay: Number,
|
||||||
|
present: Number,
|
||||||
|
absent: Number,
|
||||||
|
},
|
||||||
|
msg: { type: String, required: true, unique: true },
|
||||||
|
processed: Boolean,
|
||||||
|
votedDirectors: { type: Array, required: true },
|
||||||
|
});
|
||||||
|
|
||||||
|
export default model<ProclamationInterface>('Proclamations', Proclamation);
|
|
@ -0,0 +1,13 @@
|
||||||
|
import { Document, Schema, model } from 'mongoose';
|
||||||
|
|
||||||
|
export interface PromoInterface extends Document {
|
||||||
|
code: string,
|
||||||
|
pID: string,
|
||||||
|
}
|
||||||
|
|
||||||
|
const Promo: Schema = new Schema({
|
||||||
|
code: String,
|
||||||
|
pID: String,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default model<PromoInterface>('Promo', Promo);
|
|
@ -0,0 +1,17 @@
|
||||||
|
import { Document, Schema, model } from 'mongoose';
|
||||||
|
|
||||||
|
export interface RankInterface extends Document {
|
||||||
|
name: string,
|
||||||
|
roleID: string,
|
||||||
|
permissions: string[],
|
||||||
|
description: string,
|
||||||
|
}
|
||||||
|
|
||||||
|
const Rank: Schema = new Schema({
|
||||||
|
name: String,
|
||||||
|
roleID: String,
|
||||||
|
permissions: Array,
|
||||||
|
description: String,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default model<RankInterface>('Rank', Rank);
|
|
@ -0,0 +1,21 @@
|
||||||
|
import { Document, Schema, model } from 'mongoose';
|
||||||
|
|
||||||
|
export interface RedirectInterface extends Document {
|
||||||
|
key: string,
|
||||||
|
to: string,
|
||||||
|
visitedCount: number,
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface RedirectRaw {
|
||||||
|
key: string,
|
||||||
|
to: string,
|
||||||
|
visitedCount: number,
|
||||||
|
}
|
||||||
|
|
||||||
|
const Redirect: Schema = new Schema({
|
||||||
|
key: String,
|
||||||
|
to: String,
|
||||||
|
visitedCount: Number,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default model<RedirectInterface>('Redirect', Redirect);
|
|
@ -0,0 +1,33 @@
|
||||||
|
import { Document, model, Schema } from 'mongoose';
|
||||||
|
|
||||||
|
export interface ResolutionInterface extends Document {
|
||||||
|
issuer: string;
|
||||||
|
subject: string;
|
||||||
|
body: string;
|
||||||
|
at: number;
|
||||||
|
oID: string;
|
||||||
|
results: {
|
||||||
|
yea: number;
|
||||||
|
nay: number;
|
||||||
|
present: number;
|
||||||
|
absent: number;
|
||||||
|
};
|
||||||
|
msg: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const Resolution = new Schema({
|
||||||
|
issuer: { type: String, required: true },
|
||||||
|
subject: { type: String, required: true },
|
||||||
|
body: { type: String, required: true },
|
||||||
|
at: { type: Number, required: true },
|
||||||
|
oID: { type: String, required: true, unique: true },
|
||||||
|
results: {
|
||||||
|
yea: Number,
|
||||||
|
Nay: Number,
|
||||||
|
present: Number,
|
||||||
|
absent: Number,
|
||||||
|
},
|
||||||
|
msg: { type: String, required: true, unique: true },
|
||||||
|
});
|
||||||
|
|
||||||
|
export default model<ResolutionInterface>('Resolutions', Resolution);
|
|
@ -0,0 +1,17 @@
|
||||||
|
import { Document, Schema, model } from 'mongoose';
|
||||||
|
|
||||||
|
export interface SAAInterface extends Document {
|
||||||
|
userID: string,
|
||||||
|
applicationID: string,
|
||||||
|
serviceCode: string,
|
||||||
|
edsToken: string,
|
||||||
|
}
|
||||||
|
|
||||||
|
const SAA: Schema = new Schema({
|
||||||
|
userID: String,
|
||||||
|
applicationID: String,
|
||||||
|
serviceCode: String,
|
||||||
|
edsToken: String,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default model<SAAInterface>('SAA', SAA);
|
|
@ -0,0 +1,95 @@
|
||||||
|
// 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<ScoreInterface>('Score', Score);
|
|
@ -0,0 +1,42 @@
|
||||||
|
import { Document, Schema, model, Types } from 'mongoose';
|
||||||
|
|
||||||
|
export interface ScoreHistoricalRaw {
|
||||||
|
userID: string,
|
||||||
|
report: {
|
||||||
|
total: number,
|
||||||
|
activity: number,
|
||||||
|
roles: number,
|
||||||
|
moderation: number,
|
||||||
|
cloudServices: number,
|
||||||
|
staff: number,
|
||||||
|
other: number,
|
||||||
|
},
|
||||||
|
// inquiries: [ Types.ObjectId ],
|
||||||
|
inquiries: Types.ObjectId[],
|
||||||
|
date: Date,
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ScoreHistoricalInterface extends Document {
|
||||||
|
userID: string,
|
||||||
|
report: {
|
||||||
|
total: number,
|
||||||
|
activity: number,
|
||||||
|
roles: number,
|
||||||
|
moderation: number,
|
||||||
|
cloudServices: number,
|
||||||
|
staff: number,
|
||||||
|
other: number,
|
||||||
|
},
|
||||||
|
// inquiries: [ Types.ObjectId ],
|
||||||
|
inquiries: Types.ObjectId[],
|
||||||
|
date: Date
|
||||||
|
}
|
||||||
|
|
||||||
|
const ScoreHistorical: Schema = new Schema({
|
||||||
|
userID: String,
|
||||||
|
report: Object,
|
||||||
|
inquiries: Array,
|
||||||
|
date: Date,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default model<ScoreHistoricalInterface>('ScoreHistorical', ScoreHistorical);
|
|
@ -0,0 +1,27 @@
|
||||||
|
import { Document, Schema, model } from 'mongoose';
|
||||||
|
|
||||||
|
export interface StaffInterface extends Document {
|
||||||
|
name: string,
|
||||||
|
userID: string,
|
||||||
|
title: string,
|
||||||
|
dept: string,
|
||||||
|
pn: string[],
|
||||||
|
emailAddress: string,
|
||||||
|
extension: string,
|
||||||
|
acknowledgements: string[],
|
||||||
|
additionalRoles: string[]
|
||||||
|
}
|
||||||
|
|
||||||
|
const Staff: Schema = new Schema({
|
||||||
|
name: String,
|
||||||
|
userID: String,
|
||||||
|
title: String,
|
||||||
|
dept: String,
|
||||||
|
pn: Array,
|
||||||
|
emailAddress: String,
|
||||||
|
extension: String,
|
||||||
|
acknowledgements: Array,
|
||||||
|
additionalRoles: Array,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default model<StaffInterface>('Staff', Staff);
|
|
@ -0,0 +1,13 @@
|
||||||
|
import { Document, Schema, model } from 'mongoose';
|
||||||
|
|
||||||
|
export interface StatInterface extends Document {
|
||||||
|
name: 'messages' | 'commands' | 'pages' | 'requests',
|
||||||
|
value: number,
|
||||||
|
}
|
||||||
|
|
||||||
|
const Stat: Schema = new Schema({
|
||||||
|
name: String,
|
||||||
|
value: Number,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default model<StatInterface>('Stat', Stat);
|
Loading…
Reference in New Issue