next/models/privMsg.ts
☙◦ The Tablet ❀ GamerGirlandCo ◦❧ 1447960b1a
refactor(db/models): update populatedDoc types
- remove `& Document` qualifier
- cast `T | number` to T with the `as` keyword
2023-12-29 19:06:55 -05:00

63 lines
1.1 KiB
TypeScript

import mongoose, { Schema, PopulatedDoc, Document, 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",
);