Upload files to 'models'
This commit is contained in:
parent
c32c228e7e
commit
a8c710960e
|
@ -0,0 +1,65 @@
|
|||
const mongoose = require('mongoose');
|
||||
const Schema = mongoose.Schema;
|
||||
const slug = require('slugs');
|
||||
|
||||
|
||||
const episodeSchema= new Schema({
|
||||
|
||||
title: {
|
||||
type: String,index: true
|
||||
},
|
||||
slug: String,
|
||||
serieTitle: String,
|
||||
chapterTitle: String,
|
||||
chapter: Number,
|
||||
server: String,
|
||||
serverTwo: String,
|
||||
imageCap: String,
|
||||
download: String,
|
||||
anime: {
|
||||
type: Schema.Types.ObjectId,
|
||||
ref: 'serie'
|
||||
}
|
||||
}, { timestamps: {} }
|
||||
//{
|
||||
//toJSON: { virtuals: true },
|
||||
//toObject: { virtuals: true },
|
||||
//},
|
||||
//{ runSettersOnQuery: true }
|
||||
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
//Da error
|
||||
/* // Define our indexes
|
||||
episodeSchema.index({
|
||||
title: 'text',
|
||||
});
|
||||
|
||||
episodeSchema.index({
|
||||
location: 'indexloco'
|
||||
});
|
||||
*/
|
||||
|
||||
episodeSchema.pre('save', async function (next) {
|
||||
if (!this.isModified('title')) {
|
||||
next(); // skip it
|
||||
return; // stop this function from running
|
||||
}
|
||||
this.slug = slug(this.title);
|
||||
// find other stores that have a slug of wes, wes-1, wes-2
|
||||
const slugRegEx = new RegExp(`^(${this.slug})((-[0-9]*$)?)$`, 'i');
|
||||
const storesWithSlug = await this.constructor.find({
|
||||
slug: slugRegEx
|
||||
});
|
||||
if (storesWithSlug.length) {
|
||||
this.slug = `${this.slug}-${storesWithSlug.length + 1}`; //`` blackstring generacion de cadenas
|
||||
}
|
||||
next();
|
||||
// TODO make more resiliant so slugs are unique
|
||||
});
|
||||
|
||||
const Episode = mongoose.model('episode', episodeSchema);
|
||||
module.exports = Episode;
|
|
@ -0,0 +1,66 @@
|
|||
const mongoose = require('mongoose');
|
||||
const Schema = mongoose.Schema;
|
||||
const slug = require('slugs');
|
||||
|
||||
|
||||
|
||||
const serieSchema = new Schema({
|
||||
|
||||
title: {
|
||||
type: String, index: true
|
||||
},
|
||||
slug: String,
|
||||
cover: String,
|
||||
backgroundimage: String,
|
||||
frontimage: String,
|
||||
synopsis: String,
|
||||
estate: String,
|
||||
type: String,
|
||||
tags: [String],
|
||||
episodes: [{
|
||||
type: Schema.Types.ObjectId,
|
||||
ref: 'episode'
|
||||
}]
|
||||
}, {
|
||||
timestamps: {}
|
||||
});
|
||||
|
||||
|
||||
serieSchema.pre('save', async function (next) {
|
||||
if (!this.isModified('title')) {
|
||||
next(); // skip it
|
||||
return; // stop this function from running
|
||||
}
|
||||
this.slug = slug(this.title);
|
||||
// find other stores that have a slug of wes, wes-1, wes-2
|
||||
const slugRegEx = new RegExp(`^(${this.slug})((-[0-9]*$)?)$`, 'i');
|
||||
const storesWithSlug = await this.constructor.find({
|
||||
slug: slugRegEx
|
||||
});
|
||||
if (storesWithSlug.length) {
|
||||
this.slug = `${this.slug}-${storesWithSlug.length + 1}`; //`` blackstring generacion de cadenas
|
||||
}
|
||||
next();
|
||||
// TODO make more resiliant so slugs are unique
|
||||
});
|
||||
|
||||
serieSchema.statics.getTagsList = function() {
|
||||
return this.aggregate([
|
||||
{ $unwind: '$tags' },
|
||||
{ $group: { _id: '$tags', count: { $sum: 1 } } },
|
||||
{ $sort: { count: -1 } }
|
||||
]);
|
||||
};
|
||||
|
||||
/* function autopopulate(next) {
|
||||
this.populate('episodes', 'slug');
|
||||
next();
|
||||
}
|
||||
|
||||
serieSchema.pre('find', autopopulate);
|
||||
serieSchema.pre('findOne', autopopulate);
|
||||
*/
|
||||
|
||||
|
||||
const Serie = mongoose.model('serie', serieSchema);
|
||||
module.exports = Serie;
|
|
@ -0,0 +1,34 @@
|
|||
const mongoose = require("mongoose");
|
||||
const Schema = mongoose.Schema;
|
||||
const bcrypt = require("bcryptjs");
|
||||
|
||||
const userSchema = new Schema(
|
||||
{
|
||||
email: {
|
||||
type: String
|
||||
},
|
||||
username: String,
|
||||
password: String
|
||||
},
|
||||
{
|
||||
timestamps: {}
|
||||
}
|
||||
);
|
||||
|
||||
const User = mongoose.model("user", userSchema);
|
||||
module.exports = User;
|
||||
module.exports.hashPassword = async password => {
|
||||
try {
|
||||
const salt = await bcrypt.genSalt(10);
|
||||
return await bcrypt.hash(password, salt);
|
||||
} catch (error) {
|
||||
throw new error("Hashing failed", error);
|
||||
}
|
||||
};
|
||||
module.exports.comparePasswords = async (inputPassword, hashedPassword) => {
|
||||
try {
|
||||
return await bcrypt.compare(inputPassword, hashedPassword);
|
||||
} catch (error) {
|
||||
throw new error("Comparing failed", error);
|
||||
}
|
||||
};
|
Loading…
Reference in New Issue