const { ObjectId } = require("bson"); const { default: mongoose } = require("mongoose"); const Schema = mongoose.Schema; const userSchema = new Schema({ Timestamp: { type: Date, default: Date.now, required: true, }, Name: { type: String, required: [true, "Name is required."], }, Email: { type: String, required: [true, "Email is required."], unique: true, match: [/^[^\s@]+@[^\s@]+\.[^\s@]+$/, "Please provide a valid email address."], }, RollNumber: { type: Number, validate: { validator: function (value) { return /\d{9}/.test(value); }, message: "Please provide a valid Roll Number.", }, unique: true, required: [true, "Roll number is required."], }, PhoneNumber: { type: String, validate: { validator: function (value) { return /\d{10}/.test(value); }, message: "Please provide a valid 10-digit phone number.", }, required: [true, "Phone number is required."], unique: true, }, TeamID: { type: Schema.Types.ObjectId, ref: "Team", }, Branch: { type: String, required: [true, "Branch is required"], }, Year: { type: String, enum: ["First", "Second", "Third", "Fourth"], required: [true, "Year is required"], }, DiscordID: { type: String, required: [true, "Discord ID is required."], unique: true }, Password: { type: String, required: [true, "Password is required."], }, Role: { type: String, default: "Member", }, RoomID: { type: Schema.Types.ObjectId, ref: "Room", }, }); userSchema.virtual("url").get(function () { return `/users/${this._id}`; }); module.exports = mongoose.model("User", userSchema);