import mongoose from "mongoose"; import ModelNameRegister from "./modelNameRegister.js"; const Types = mongoose.Schema.Types; // Some types require defining from this object. const matchSchema = new mongoose.Schema({ title: { type: String, required: true, trim: true }, when: { type: Date, required: true }, publicity: { type: Number, required: true, default: 2 }, location: { type: [Number], required: true, validate: { validator: function (v) { return v.length === 2; }, message: "Invalid coordinate format (array not length of 2)." } }, creator: { type: Types.ObjectId, ref: ModelNameRegister.User }, participants: { type: [{ type: Types.ObjectId, ref: ModelNameRegister.User }], required: true, default: [] }, difficulty: { type: Number, required: true }, sport: { type: Types.ObjectId, ref: ModelNameRegister.Sport }, createDate: { type: Date, required: true, default: Date.now } }); matchSchema.pre("remove", function (next) { const match = this; match.populate("creator").populate("participants"); match.participants.forEach(participant => { const index = participant.participatingMatches.indexOf(match._id); participant.participatingMatches.splice(index, 1); }); match.creator.createdMatches.splice(match.creator.createdMatches.indexOf(match._id), 1); next(); }); export default mongoose.model(ModelNameRegister.Match, matchSchema);