Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const validator = require('validator');
- const db = require('../../config/connection');
- exports.ObjectId = db.ObjectId;
- let SchemaUsers = new db.Schema({
- email: {
- type: String,
- required: true,
- validate: {
- validator: (v)=>{
- validator.isEmail(v);
- },
- message: "{VALUE} is not a valid email"
- }
- },
- password: {type: String, required: true},
- name: {
- first: {required: true, type: String},
- last: {required: true, type: String}
- },
- birthday: {
- type: Date,
- default: new Date("1990-01-01")
- },
- role: {
- type: String,
- enum: ['user', 'moderator', 'admin'],
- default: "user"
- },
- active: {
- type: Boolean,
- default: false
- },
- reset_password: {
- token: {type: String},
- expired: Date
- },
- createdAt : {type: Date, default: Date.now},
- updatedAt : {type: Date, default: Date.now},
- });
- SchemaUsers.pre('update', function() {
- this.update({},{ $set: { updatedAt: new Date() } });
- });
- exports.users = db.con.model('users', SchemaUsers);
- let SchemaCategory = new db.Schema({
- slug: {type: String, required: true},
- name: {type: String, required: true},
- poster: {type: String, required: true},
- createdAt : {type: Date, default: Date.now},
- updatedAt : {type: Date, default: Date.now},
- });
- SchemaCategory.pre('update', function() {
- this.update({},{ $set: { updatedAt: new Date() } });
- });
- exports.categories = db.con.model('categories', SchemaCategory);
- let SchemaPlaylist = new db.Schema({
- name: {type: String, required: true},
- slug: {type: String, required: true},
- movies: [{ type: db.Schema.Types.ObjectId, required: true, ref: 'movies' }],
- // category: [{ type: db.Schema.Types.ObjectId, required: true, ref: 'categories' }],
- favorite: {
- type: Boolean,
- default: false
- },
- poster: {type: String, required: true},
- createdAt : {type: Date, default: Date.now},
- updatedAt : {type: Date, default: Date.now},
- });
- SchemaPlaylist.pre('update', function() {
- this.update({},{ $set: { updatedAt: new Date() } });
- });
- exports.playlists = db.con.model('playlists', SchemaPlaylist);
- let SchemaComment = new db.Schema({
- users : { type: db.Schema.Types.ObjectId, required: true, ref: 'users' },
- movies: { type: db.Schema.Types.ObjectId, required: true, ref: 'movies'},
- description: {type: String, required: true},
- createdAt : {type: Date, default: Date.now},
- updatedAt : {type: Date, default: Date.now},
- });
- SchemaComment.pre('update', function() {
- this.update({},{ $set: { updatedAt: new Date() } });
- });
- exports.comments = db.con.model('comments', SchemaComment);
- let SchemaFavorites = new db.Schema({
- users : { type: db.Schema.Types.ObjectId, required: true, ref: 'users' },
- movies: { type: db.Schema.Types.ObjectId, required: true, ref: 'movies'},
- createdAt : {type: Date, default: Date.now},
- updatedAt : {type: Date, default: Date.now},
- });
- SchemaFavorites.pre('update', function() {
- this.update({},{ $set: { updatedAt: new Date() } });
- });
- exports.favorites = db.con.model('favorites', SchemaFavorites);
- let SchemaMovie = new db.Schema({
- title: {type: String, required: true},
- plot: {type: String, required: true},
- favorite: {type: Boolean, default: false},
- playlist: { type: String, ref: 'playlists' },
- category: [{ type: db.Schema.Types.ObjectId, ref: 'categories' }],
- comment : [{ type: db.Schema.Types.ObjectId, ref: 'comments' }],
- video: {type: String, required: true},
- type: {
- type: String,
- enum: ['movie', 'youtube'],
- default: "movie"
- },
- poster: {type: String, required: true},
- view: [{ type: db.Schema.Types.ObjectId, ref: 'views' }],
- createdAt : {type: Date, default: Date.now},
- updatedAt : {type: Date, default: Date.now},
- });
- SchemaMovie.pre('update', function() {
- this.update({},{ $set: { updatedAt: new Date() } });
- });
- exports.movies = db.con.model('movies', SchemaMovie);
- let SchemaImages = new db.Schema({
- name: {type: String, required: true},
- size: {type: Number, required: true},
- encoding: {type: String, required: true},
- createdAt : {type: Date, default: Date.now},
- updatedAt : {type: Date, default: Date.now},
- });
- SchemaImages.pre('update', function() {
- this.update({},{ $set: { updatedAt: new Date() } });
- });
- exports.images = db.con.model('images', SchemaImages);
- let SchemaViews = new db.Schema({
- users : { type: db.Schema.Types.ObjectId, required: true, ref: 'users' },
- movies: {type: String, required: true, ref: 'movies'},
- createdAt : {type: Date, default: Date.now},
- updatedAt : {type: Date, default: Date.now},
- });
- SchemaViews.pre('update', function() {
- this.update({},{ $set: { updatedAt: new Date() } });
- });
- exports.views = db.con.model('views', SchemaViews);
- let SchemaReport = new db.Schema({
- users : { type: db.Schema.Types.ObjectId, required: true, ref: 'users' },
- movies: {type: db.Schema.Types.ObjectId, required: true, ref: 'movies'},
- description: {
- type: String,
- required: true
- },
- status: {
- type: Boolean,
- default: false,
- },
- createdAt : {type: Date, default: Date.now},
- updatedAt : {type: Date, default: Date.now},
- });
- SchemaViews.pre('update', function() {
- this.update({},{ $set: { updatedAt: new Date() } });
- });
- exports.report = db.con.model('report', SchemaReport);
Advertisement
Add Comment
Please, Sign In to add comment