-
Notifications
You must be signed in to change notification settings - Fork 0
/
models.js
68 lines (60 loc) · 2.24 KB
/
models.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
const mongoose = require("mongoose"),
bcrypt = require("bcrypt"); // just added
/**
* @name Schema for movies.
* @typedef {object} MovieSchema
* @property {string} Title - The title of the movie.
* @property {string} Description - The description of the movie.
* @property {object} Genre - The genre information of the movie.
* @property {string} Genre.Name - The name of the genre.
* @property {string} Genre.Description - The description of the genre.
* @property {object} Director - The director information of the movie.
* @property {string} Director.Name - The name of the director.
* @property {string} Director.Bio - The biography of the director.
* @property {string[]} Actors - An array of actor names.
* @property {string} ImagePath - The path to the movie's image.
* @property {boolean} Featured - Indicates if the movie is featured.
*/
let movieSchema = mongoose.Schema({
Title: { type: String, required: true },
Description: { type: String, required: true },
Genre: {
Name: String,
Description: String,
},
Director: {
Name: String,
Bio: String,
},
Actors: [String],
ImagePath: String,
Featured: Boolean,
});
/**
* UserSchema
* @name UserSchema
* @typedef {object} UserSchema
* @property {string} Username - The username of the user.
* @property {string} Password - The hashed password of the user.
* @property {string} Email - The email address of the user.
* @property {Date} Birthday - The birthday of the user.
* @property {mongoose.Schema.Types.ObjectId[]} FavoriteMovies - An array of movie IDs referencing the user's favorite movies.
*/
let userSchema = mongoose.Schema({
// _id: { type: String }, // added
Username: { type: String, required: true },
Password: { type: String, required: true },
Email: { type: String, required: true },
Birthday: Date,
FavoriteMovies: [{ type: mongoose.Schema.Types.ObjectId, ref: "Movie" }],
});
userSchema.statics.hashPassword = (password) => {
return bcrypt.hashSync(password, 10);
};
userSchema.methods.validatePassword = function (password) {
return bcrypt.compareSync(password, this.Password);
};
let Movie = mongoose.model("Movie", movieSchema);
let User = mongoose.model("User", userSchema);
module.exports.Movie = Movie;
module.exports.user = User;