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")