ardyhim

model main.js

May 9th, 2017
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const validator = require('validator');
  2. const db = require('../../config/connection');
  3. exports.ObjectId = db.ObjectId;
  4.  
  5. let SchemaUsers = new db.Schema({
  6.   email: {
  7.     type: String,
  8.     required: true,
  9.     validate: {
  10.       validator: (v)=>{
  11.         validator.isEmail(v);
  12.       },
  13.       message: "{VALUE} is not a valid email"
  14.     }
  15.   },
  16.   password: {type: String, required: true},
  17.   name: {
  18.     first: {required: true, type: String},
  19.     last: {required: true, type: String}
  20.   },
  21.   birthday: {
  22.     type: Date,
  23.     default: new Date("1990-01-01")
  24.   },
  25.   role: {
  26.     type: String,
  27.     enum: ['user', 'moderator', 'admin'],
  28.     default: "user"
  29.   },
  30.   active: {
  31.     type: Boolean,
  32.     default: false
  33.   },
  34.   reset_password: {
  35.     token: {type: String},
  36.     expired: Date
  37.   },
  38.   createdAt : {type: Date, default: Date.now},
  39.   updatedAt : {type: Date, default: Date.now},
  40. });
  41.  
  42. SchemaUsers.pre('update', function() {
  43.   this.update({},{ $set: { updatedAt: new Date() } });
  44. });
  45. exports.users = db.con.model('users', SchemaUsers);
  46.  
  47. let SchemaCategory = new db.Schema({
  48.   slug: {type: String, required: true},
  49.   name: {type: String, required: true},
  50.   poster: {type: String, required: true},
  51.   createdAt : {type: Date, default: Date.now},
  52.   updatedAt : {type: Date, default: Date.now},
  53. });
  54.  
  55. SchemaCategory.pre('update', function() {
  56.   this.update({},{ $set: { updatedAt: new Date() } });
  57. });
  58.  
  59. exports.categories = db.con.model('categories', SchemaCategory);
  60.  
  61. let SchemaPlaylist = new db.Schema({
  62.   name: {type: String, required: true},
  63.   slug: {type: String, required: true},
  64.   movies: [{ type: db.Schema.Types.ObjectId, required: true, ref: 'movies' }],
  65.   // category: [{ type: db.Schema.Types.ObjectId, required: true, ref: 'categories' }],
  66.   favorite: {
  67.     type: Boolean,
  68.     default: false
  69.   },
  70.   poster: {type: String, required: true},
  71.   createdAt : {type: Date, default: Date.now},
  72.   updatedAt : {type: Date, default: Date.now},
  73. });
  74.  
  75. SchemaPlaylist.pre('update', function() {
  76.   this.update({},{ $set: { updatedAt: new Date() } });
  77. });
  78. exports.playlists = db.con.model('playlists', SchemaPlaylist);
  79.  
  80. let SchemaComment = new db.Schema({
  81.   users : { type: db.Schema.Types.ObjectId, required: true, ref: 'users' },
  82.   movies: { type: db.Schema.Types.ObjectId, required: true, ref: 'movies'},
  83.   description: {type: String, required: true},
  84.   createdAt : {type: Date, default: Date.now},
  85.   updatedAt : {type: Date, default: Date.now},
  86. });
  87.  
  88. SchemaComment.pre('update', function() {
  89.   this.update({},{ $set: { updatedAt: new Date() } });
  90. });
  91.  
  92. exports.comments = db.con.model('comments', SchemaComment);
  93.  
  94. let SchemaFavorites = new db.Schema({
  95.   users : { type: db.Schema.Types.ObjectId, required: true, ref: 'users' },
  96.   movies: { type: db.Schema.Types.ObjectId, required: true, ref: 'movies'},
  97.   createdAt : {type: Date, default: Date.now},
  98.   updatedAt : {type: Date, default: Date.now},
  99. });
  100.  
  101. SchemaFavorites.pre('update', function() {
  102.   this.update({},{ $set: { updatedAt: new Date() } });
  103. });
  104.  
  105. exports.favorites = db.con.model('favorites', SchemaFavorites);
  106.  
  107. let SchemaMovie = new db.Schema({
  108.   title: {type: String, required: true},
  109.   plot: {type: String, required: true},
  110.   favorite: {type: Boolean, default: false},
  111.   playlist: { type: String, ref: 'playlists' },
  112.   category: [{ type: db.Schema.Types.ObjectId, ref: 'categories' }],
  113.   comment : [{ type: db.Schema.Types.ObjectId, ref: 'comments' }],
  114.   video: {type: String, required: true},
  115.   type: {
  116.     type: String,
  117.     enum: ['movie', 'youtube'],
  118.     default: "movie"
  119.   },
  120.   poster: {type: String, required: true},
  121.   view: [{ type: db.Schema.Types.ObjectId, ref: 'views' }],
  122.   createdAt : {type: Date, default: Date.now},
  123.   updatedAt : {type: Date, default: Date.now},
  124. });
  125.  
  126. SchemaMovie.pre('update', function() {
  127.   this.update({},{ $set: { updatedAt: new Date() } });
  128. });
  129.  
  130. exports.movies = db.con.model('movies', SchemaMovie);
  131.  
  132. let SchemaImages = new db.Schema({
  133.   name: {type: String, required: true},
  134.   size: {type: Number, required: true},
  135.   encoding: {type: String, required: true},
  136.   createdAt : {type: Date, default: Date.now},
  137.   updatedAt : {type: Date, default: Date.now},
  138. });
  139.  
  140. SchemaImages.pre('update', function() {
  141.   this.update({},{ $set: { updatedAt: new Date() } });
  142. });
  143.  
  144. exports.images = db.con.model('images', SchemaImages);
  145.  
  146. let SchemaViews = new db.Schema({
  147.   users : { type: db.Schema.Types.ObjectId, required: true, ref: 'users' },
  148.   movies: {type: String, required: true, ref: 'movies'},
  149.   createdAt : {type: Date, default: Date.now},
  150.   updatedAt : {type: Date, default: Date.now},
  151. });
  152.  
  153. SchemaViews.pre('update', function() {
  154.   this.update({},{ $set: { updatedAt: new Date() } });
  155. });
  156.  
  157. exports.views = db.con.model('views', SchemaViews);
  158.  
  159. let SchemaReport = new db.Schema({
  160.   users : { type: db.Schema.Types.ObjectId, required: true, ref: 'users' },
  161.   movies: {type: db.Schema.Types.ObjectId, required: true, ref: 'movies'},
  162.   description: {
  163.     type: String,
  164.     required: true
  165.   },
  166.   status: {
  167.     type: Boolean,
  168.     default: false,
  169.   },
  170.   createdAt : {type: Date, default: Date.now},
  171.   updatedAt : {type: Date, default: Date.now},
  172. });
  173.  
  174. SchemaViews.pre('update', function() {
  175.   this.update({},{ $set: { updatedAt: new Date() } });
  176. });
  177.  
  178. exports.report = db.con.model('report', SchemaReport);
Advertisement
Add Comment
Please, Sign In to add comment