next/models/privMsg.ts

56 lines
1.1 KiB
TypeScript

import mongoose, { PopulatedDoc, Model } from "mongoose";
import SequenceFactory from "mongoose-sequence";
import { hasMigrated } from "@dbconfig";
import { IUser } from "./user";
const AutoIncrement = SequenceFactory(mongoose);
export interface IPrivMsg {
_id: number;
from: PopulatedDoc<IUser>;
to: PopulatedDoc<IUser>;
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 && !mongoose.models.PrivMsg && PMSchema.plugin(AutoIncrement, { id: "private_message" });
export const PrivMsg: Model<IPrivMsg> = /* mongoose.models.PrivMsg || */ mongoose.model("PrivMsg", PMSchema, "private_messages");