mirror of
https://github.com/stolksdorf/homebrewery.git
synced 2025-12-15 09:35:57 +00:00
81 lines
2.0 KiB
JavaScript
81 lines
2.0 KiB
JavaScript
var mongoose = require('mongoose');
|
|
var shortid = require('shortid');
|
|
var _ = require('lodash');
|
|
|
|
var HomebrewSchema = mongoose.Schema({
|
|
shareId : {type : String, default: shortid.generate, index: { unique: true }},
|
|
editId : {type : String, default: shortid.generate, index: { unique: true }},
|
|
title : {type : String, default : ""},
|
|
text : {type : String, default : ""},
|
|
|
|
description : {type : String, default : ""},
|
|
tags : {type : String, default : ""},
|
|
systems : [String],
|
|
authors : [String],
|
|
published : {type : Boolean, default : false},
|
|
|
|
createdAt : { type: Date, default: Date.now },
|
|
updatedAt : { type: Date, default: Date.now},
|
|
lastViewed : { type: Date, default: Date.now},
|
|
views : {type:Number, default:0},
|
|
version : {type: Number, default:1}
|
|
}, { versionKey: false });
|
|
|
|
|
|
|
|
HomebrewSchema.methods.sanatize = function(full=false){
|
|
const brew = this.toJSON();
|
|
delete brew._id;
|
|
delete brew.__v;
|
|
if(full){
|
|
delete brew.editId;
|
|
}
|
|
return brew;
|
|
};
|
|
|
|
|
|
HomebrewSchema.methods.increaseView = function(){
|
|
return new Promise((resolve, reject) => {
|
|
this.lastViewed = new Date();
|
|
this.views = this.views + 1;
|
|
this.save((err) => {
|
|
if(err) return reject(err);
|
|
return resolve(this);
|
|
});
|
|
});
|
|
};
|
|
|
|
|
|
|
|
HomebrewSchema.statics.get = function(query){
|
|
return new Promise((resolve, reject) => {
|
|
Homebrew.find(query, (err, brews)=>{
|
|
if(err || !brews.length) return reject('Can not find brew');
|
|
return resolve(brews[0]);
|
|
});
|
|
});
|
|
};
|
|
|
|
HomebrewSchema.statics.getByUser = function(username, allowAccess=false){
|
|
return new Promise((resolve, reject) => {
|
|
let query = {authors : username, published : true};
|
|
if(allowAccess){
|
|
delete query.published;
|
|
}
|
|
Homebrew.find(query, (err, brews)=>{
|
|
if(err) return reject('Can not find brew');
|
|
return resolve(_.map(brews, (brew)=>{
|
|
return brew.sanatize(!allowAccess);
|
|
}));
|
|
});
|
|
});
|
|
};
|
|
|
|
|
|
|
|
var Homebrew = mongoose.model('Homebrew', HomebrewSchema);
|
|
|
|
module.exports = {
|
|
schema : HomebrewSchema,
|
|
model : Homebrew,
|
|
} |