Advertisement
Guest User

Untitled

a guest
Jan 29th, 2020
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const { Connect } = require("../db");
  2. const { isEmail, isURL, toDate } = require("validator");
  3.  
  4. const projectSchema = {
  5.     name: {
  6.         type: String,
  7.         minlength: [4, "Name need to be longer then 4 characters"],
  8.         maxlength: [15, "Name cannot exceed 15 characters"],
  9.         required: true,
  10.         unique: true,
  11.         sparse: true
  12.     },
  13.  
  14.     description: {
  15.         type: String,
  16.         minlength: [25, "Description need to be longer then 25 characters"],
  17.         maxlength: [125, "Description cannot exceed 125 characters"],
  18.         required: true
  19.     },
  20.  
  21.     linkRepo: {
  22.         type: String,
  23.         required: false,
  24.         validate: {
  25.             validator: string => isURL(string),
  26.             message: "URL is not valid"
  27.         }
  28.     },
  29.  
  30.     linkLive: {
  31.         type: String,
  32.         required: false,
  33.         validate: {
  34.             validator: string => isURL(string),
  35.             message: "URL is not valid"
  36.         }
  37.     },
  38.  
  39.     createdAt: {
  40.         type: Date,
  41.         default: Date.now,
  42.         required: false
  43.     },
  44.  
  45.     updatedAt: {
  46.         type: Date,
  47.         default: Date.now,
  48.         required: false
  49.     }
  50. };
  51.  
  52. const studentSchema = {
  53.     firstName: {
  54.         type: String,
  55.         required: true
  56.     },
  57.  
  58.     lastName: {
  59.         type: String,
  60.         required: true
  61.     },
  62.  
  63.     username: {
  64.         type: String,
  65.         required: true,
  66.         unique: true
  67.     },
  68.  
  69.     email: {
  70.         type: String,
  71.         trim: true,
  72.         lowercase: true,
  73.         unique: true,
  74.         required: [true, "Email is required"],
  75.         validate: {
  76.             validator: string => isEmail(string),
  77.             message: "Provided email is invalid"
  78.         }
  79.     },
  80.  
  81.     dateOfBirth: {
  82.         type: String,
  83.         required: true,
  84.         validate: {
  85.             validator: string => toDate(string),
  86.             message: "DoB invalid"
  87.         }
  88.     },
  89.  
  90.     project: [projectSchema],
  91.  
  92.     createdAt: {
  93.         type: Date,
  94.         default: Date.now,
  95.         required: false
  96.     },
  97.  
  98.     updatedAt: {
  99.         type: Date,
  100.         default: Date.now,
  101.         required: false
  102.     }
  103. };
  104.  
  105. projectSchema.pre("update", () => {
  106.     this.update(
  107.         {},
  108.         {
  109.             $set: {
  110.                 updatedAt: new Date()
  111.             }
  112.         }
  113.     );
  114. });
  115.  
  116. const collectionName = "student";
  117. const studentSchemaModel = Connect.Schema(studentSchema);
  118. const Student = Connect.model(collectionName, studentSchemaModel);
  119.  
  120. module.exports = Student;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement