61 lines
1.1 KiB
TypeScript
61 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",
|
|
);
|