57 lines
1.4 KiB
JavaScript
57 lines
1.4 KiB
JavaScript
const mongoose = require('mongoose');
|
|
const bcrypt = require('bcryptjs');
|
|
|
|
const userSchema = new mongoose.Schema({
|
|
username: { type: String, required: true, unique: true },
|
|
password: { type: String, required: true },
|
|
});
|
|
|
|
userSchema.pre('save', async function(next) {
|
|
if (this.isModified('password')) {
|
|
this.password = await bcrypt.hash(this.password, 10);
|
|
}
|
|
next();
|
|
});
|
|
|
|
userSchema.methods.comparePassword = function(candidatePassword) {
|
|
return bcrypt.compare(candidatePassword, this.password);
|
|
};
|
|
|
|
const User = mongoose.model('User', userSchema);
|
|
|
|
const projectSchema = new mongoose.Schema({
|
|
title: String,
|
|
description: String,
|
|
images: [String],
|
|
});
|
|
|
|
const educationSchema = new mongoose.Schema({
|
|
degree: String,
|
|
institution: String,
|
|
startYear: Number,
|
|
endYear: Number,
|
|
});
|
|
|
|
const jobExperienceSchema = new mongoose.Schema({
|
|
jobTitle: String,
|
|
company: String,
|
|
startYear: Number,
|
|
endYear: Number,
|
|
});
|
|
|
|
const resumeSchema = new mongoose.Schema({
|
|
pdfURL: String,
|
|
});
|
|
|
|
const socialSchema = new mongoose.Schema({
|
|
platform: String,
|
|
url: String,
|
|
});
|
|
|
|
const Project = mongoose.model('Project', projectSchema);
|
|
const Education = mongoose.model('Education', educationSchema);
|
|
const JobExperience = mongoose.model('JobExperience', jobExperienceSchema);
|
|
const Resume = mongoose.model('Resume', resumeSchema);
|
|
const Social = mongoose.model('Social', socialSchema);
|
|
|
|
module.exports = { User, Project, Education, JobExperience, Resume, Social };
|