56 lines
1.1 KiB
TypeScript
56 lines
1.1 KiB
TypeScript
|
import mongoose, {Schema, PopulatedDoc, Document, Model} from "mongoose";
|
||
|
import SequenceFactory from "mongoose-sequence";
|
||
|
import { hasMigrated } from "../lib/dbconfig";
|
||
|
import { IUser } from "./user";
|
||
|
|
||
|
const AutoIncrement = SequenceFactory(mongoose);
|
||
|
|
||
|
export interface IPrivMsg {
|
||
|
_id: number;
|
||
|
from: PopulatedDoc<IUser & Document>;
|
||
|
to: PopulatedDoc<IUser & Document>;
|
||
|
subject: string;
|
||
|
content: string;
|
||
|
sentAt: Date;
|
||
|
read: boolean;
|
||
|
deletedBy: {
|
||
|
sender: boolean;
|
||
|
recipient: boolean;
|
||
|
}
|
||
|
}
|
||
|
const PMSchema = new mongoose.Schema<IPrivMsg>({
|
||
|
_id: { type: Number},
|
||
|
from: {
|
||
|
type: Number,
|
||
|
ref: "User"
|
||
|
},
|
||
|
to: {
|
||
|
type: Number,
|
||
|
ref: "User"
|
||
|
},
|
||
|
subject: { type: String },
|
||
|
content: { type: String },
|
||
|
sentAt: {
|
||
|
type: Date,
|
||
|
default: new Date()
|
||
|
},
|
||
|
read: {
|
||
|
type: Boolean,
|
||
|
default: false
|
||
|
},
|
||
|
deletedBy: {
|
||
|
sender: {
|
||
|
type: Boolean,
|
||
|
default: false
|
||
|
},
|
||
|
recipient: {
|
||
|
type: Boolean,
|
||
|
default: false
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
|
||
|
hasMigrated && PMSchema.plugin(AutoIncrement, {id: "private_message"})
|
||
|
|
||
|
export const PrivMsg: Model<IPrivMsg> = /* mongoose.models.PrivMsg || */ mongoose.model("PrivMsg", PMSchema, "private_messages")
|