Sindbad~EG File Manager

Current Path : /home/infinitibizsol/.trash/model.3/user/
Upload File :
Current File : /home/infinitibizsol/.trash/model.3/user/user.js

import db from "../../model/index";
import mongoose from "mongoose";
const User = new mongoose.Schema(
  {
    first_name: { type: String, required: true },
    last_name: { type: String, required: true },
    contact_type: { type: String, required: false },
    customer_type: { type: String, required: false },
    current_status: { type: String, required: false },
    location: { type: String, required: true },
    profile_picture: { type: String, require: false, default: "" },
    email: { type: String, require: true },
    password: { type: String, require: true },
    email_signature: { type: String, require: false, default: "" },
    role: {
      type: String,
      enum: ["agent", "admin"],
      default: "agent",
    },
    createdOn: { type: Date, default: Date.now },
    modifiedOn: { type: Date, default: Date.now },
  },
  {
    toJSON: { virtuals: true },
    toObject: { virtuals: true },
  }
);

User.index({
  first_name: "text",
  last_name: "text",
  email: "text",
  location: "text",
});

User.pre("remove", async function (next) {
  try {
    console.log("Removing");

    await db.Address.deleteMany({ user_id: this._id });
    await db.BasicContactInfo.deleteMany({ user_id: this._id });
    await db.Goal.deleteMany({ user_id: this._id });
    await db.SocialMedia.deleteMany({ user_id: this._id });
    await db.Policy.deleteMany({ user_id: this._id });
    await db.EmailSetup.deleteMany({ user_id: this._id });
    await db.EmployeeInfo.deleteMany({ user_id: this._id });
    await db.EmploymentInfo.deleteMany({ user_id: this._id });
    await db.Signature.deleteMany({ user_id: this._id });
    await db.System.deleteMany({ user_id: this._id });
    next();
  } catch (err) {
    next(err);
  }
});

export default mongoose.model("User", User);

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists