mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-01-17 01:32:45 +00:00
Cleaned up the server file and added methodfs and statics to the model
This commit is contained in:
@@ -1,18 +1,18 @@
|
|||||||
var React = require('react');
|
const React = require('react');
|
||||||
var _ = require('lodash');
|
const _ = require('lodash');
|
||||||
var cx = require('classnames');
|
const cx = require('classnames');
|
||||||
|
|
||||||
var CreateRouter = require('pico-router').createRouter;
|
const CreateRouter = require('pico-router').createRouter;
|
||||||
|
|
||||||
var HomePage = require('./pages/homePage/homePage.jsx');
|
const HomePage = require('./pages/homePage/homePage.jsx');
|
||||||
var EditPage = require('./pages/editPage/editPage.jsx');
|
const EditPage = require('./pages/editPage/editPage.jsx');
|
||||||
var SharePage = require('./pages/sharePage/sharePage.jsx');
|
const SharePage = require('./pages/sharePage/sharePage.jsx');
|
||||||
var NewPage = require('./pages/newPage/newPage.jsx');
|
const NewPage = require('./pages/newPage/newPage.jsx');
|
||||||
var ErrorPage = require('./pages/errorPage/errorPage.jsx');
|
const ErrorPage = require('./pages/errorPage/errorPage.jsx');
|
||||||
var PrintPage = require('./pages/printPage/printPage.jsx');
|
const PrintPage = require('./pages/printPage/printPage.jsx');
|
||||||
|
|
||||||
var Router;
|
let Router;
|
||||||
var Homebrew = React.createClass({
|
const Homebrew = React.createClass({
|
||||||
getDefaultProps: function() {
|
getDefaultProps: function() {
|
||||||
return {
|
return {
|
||||||
url : '',
|
url : '',
|
||||||
|
|||||||
@@ -1,10 +1,7 @@
|
|||||||
const React = require('react');
|
const React = require('react');
|
||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
const cx = require('classnames');
|
const cx = require('classnames');
|
||||||
|
const Markdown = require('naturalcrit/markdown.js');
|
||||||
//const BrewRenderer = require('../../brewRenderer/brewRenderer.jsx');
|
|
||||||
|
|
||||||
var Markdown = require('naturalcrit/markdown.js');
|
|
||||||
|
|
||||||
const PrintPage = React.createClass({
|
const PrintPage = React.createClass({
|
||||||
getDefaultProps: function() {
|
getDefaultProps: function() {
|
||||||
|
|||||||
125
server.js
125
server.js
@@ -35,85 +35,66 @@ var sanitizeBrew = function(brew){
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
app.get('/edit/:id', (req, res, next)=>{
|
|
||||||
HomebrewModel.find({editId : req.params.id}, (err, brews)=>{
|
|
||||||
if(err || !brews.length){
|
|
||||||
return res.status(400).send(`Can't get that`);
|
|
||||||
}
|
|
||||||
req.brew = brews[0].toJSON();
|
|
||||||
return next();
|
|
||||||
})
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
//Share Page
|
|
||||||
app.get('/share/:id', (req, res, next)=>{
|
|
||||||
HomebrewModel.find({shareId : req.params.id}, (err, brews)=>{
|
|
||||||
if(err || !brews.length){
|
|
||||||
return res.status(400).send(`Can't get that`);
|
|
||||||
}
|
|
||||||
const brew = brews[0];
|
|
||||||
brew.lastViewed = new Date();
|
|
||||||
brew.views = brew.views + 1;
|
|
||||||
brew.save();
|
|
||||||
|
|
||||||
req.brew = sanitizeBrew(brew.toJSON());
|
|
||||||
return next();
|
|
||||||
})
|
|
||||||
});
|
|
||||||
|
|
||||||
//Share Page
|
|
||||||
app.get('/print/:id', (req, res, next)=>{
|
|
||||||
HomebrewModel.find({shareId : req.params.id}, (err, brews)=>{
|
|
||||||
if(err || !brews.length){
|
|
||||||
return res.status(400).send(`Can't get that`);
|
|
||||||
}
|
|
||||||
req.brew = sanitizeBrew(brews[0].toJSON());
|
|
||||||
return next();
|
|
||||||
})
|
|
||||||
});
|
|
||||||
|
|
||||||
/*
|
|
||||||
//Print Page
|
|
||||||
var Markdown = require('naturalcrit/markdown.js');
|
|
||||||
var PHBStyle = '<style>' + require('fs').readFileSync('./phb.standalone.css', 'utf8') + '</style>'
|
|
||||||
app.get('/print/:id', function(req, res){
|
|
||||||
HomebrewModel.find({shareId : req.params.id}, function(err, objs){
|
|
||||||
var brew = {};
|
|
||||||
if(objs.length){
|
|
||||||
brew = objs[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
if(err || !objs.length){
|
|
||||||
brew.text = '# Oops \n We could not find a brew with that id. **Sorry!**';
|
|
||||||
}
|
|
||||||
|
|
||||||
var content = _.map(brew.text.split('\\page'), function(pageText, index){
|
|
||||||
return `<div class="phb print" id="p${index+1}">` + Markdown.render(pageText) + '</div>';
|
|
||||||
}).join('\n');
|
|
||||||
|
|
||||||
var dialog = '';
|
|
||||||
if(req.query && req.query.dialog) dialog = 'onload="window.print()"';
|
|
||||||
|
|
||||||
var title = '<title>' + brew.title + '</title>';
|
|
||||||
var page = `<html><head>${title} ${PHBStyle}</head><body ${dialog}>${content}</body></html>`
|
|
||||||
|
|
||||||
return res.send(page)
|
|
||||||
});
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
|
|
||||||
//Source page
|
//Source page
|
||||||
String.prototype.replaceAll = function(s,r){return this.split(s).join(r)}
|
String.prototype.replaceAll = function(s,r){return this.split(s).join(r)}
|
||||||
app.get('/source/:id', (req, res)=>{
|
app.get('/source/:id', (req, res)=>{
|
||||||
HomebrewModel.find({shareId : req.params.id}, (err, brews)=>{
|
HomebrewModel.get({shareId : req.params.id})
|
||||||
if(err || !brews.length) return res.status(404).send('Could not find Homebrew with that id');
|
.then((brew)=>{
|
||||||
const text = brews[0].text.replaceAll('<', '<').replaceAll('>', '>');
|
const text = brew.text.replaceAll('<', '<').replaceAll('>', '>');
|
||||||
return res.send(`<code><pre>${text}</pre></code>`);
|
return res.send(`<code><pre>${text}</pre></code>`);
|
||||||
});
|
})
|
||||||
|
.catch((err)=>{
|
||||||
|
console.log(err);
|
||||||
|
return res.status(404).send('Could not find Homebrew with that id');
|
||||||
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
app.get('/edit/:id', (req, res, next)=>{
|
||||||
|
HomebrewModel.get({editId : req.params.id})
|
||||||
|
.then((brew)=>{
|
||||||
|
req.brew = brew.sanatize();
|
||||||
|
return next();
|
||||||
|
})
|
||||||
|
.catch((err)=>{
|
||||||
|
console.log(err);
|
||||||
|
return res.status(400).send(`Can't get that`);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
//Share Page
|
||||||
|
app.get('/share/:id', (req, res, next)=>{
|
||||||
|
HomebrewModel.get({shareId : req.params.id})
|
||||||
|
.then((brew)=>{
|
||||||
|
return brew.increaseView();
|
||||||
|
})
|
||||||
|
.then((brew)=>{
|
||||||
|
req.brew = brew.sanatize(true);
|
||||||
|
return next();
|
||||||
|
})
|
||||||
|
.catch((err)=>{
|
||||||
|
console.log(err);
|
||||||
|
return res.status(400).send(`Can't get that`);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
//Print Page
|
||||||
|
app.get('/print/:id', (req, res, next)=>{
|
||||||
|
HomebrewModel.get({shareId : req.params.id})
|
||||||
|
.then((brew)=>{
|
||||||
|
req.brew = brew.sanatize(true);
|
||||||
|
return next();
|
||||||
|
})
|
||||||
|
.catch((err)=>{
|
||||||
|
console.log(err);
|
||||||
|
return res.status(400).send(`Can't get that`);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//Render Page
|
//Render Page
|
||||||
app.use((req, res) => {
|
app.use((req, res) => {
|
||||||
vitreumRender({
|
vitreumRender({
|
||||||
|
|||||||
@@ -53,17 +53,19 @@ router.post('/api', (req, res)=>{
|
|||||||
});
|
});
|
||||||
|
|
||||||
router.put('/api/update/:id', (req, res)=>{
|
router.put('/api/update/:id', (req, res)=>{
|
||||||
HomebrewModel.find({editId : req.params.id}, (err, objs)=>{
|
HomebrewModel.get({editId : req.params.id})
|
||||||
if(!objs.length || err) return res.status(404).send("Can not find homebrew with that id");
|
.then((brew)=>{
|
||||||
var resEntry = objs[0];
|
brew = _.merge(brew, req.body);
|
||||||
resEntry.text = req.body.text;
|
brew.updatedAt = new Date();
|
||||||
resEntry.title = req.body.title;
|
brew.save((err, obj)=>{
|
||||||
resEntry.updatedAt = new Date();
|
if(err) throw err;
|
||||||
resEntry.save((err, obj)=>{
|
return res.status(200).send(obj);
|
||||||
if(err) return res.status(500).send("Error while saving");
|
})
|
||||||
return res.status(200).send(obj);
|
|
||||||
})
|
})
|
||||||
});
|
.catch((err)=>{
|
||||||
|
console.log(err);
|
||||||
|
return res.status(500).send("Error while saving");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
router.get('/api/remove/:id', (req, res)=>{
|
router.get('/api/remove/:id', (req, res)=>{
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ var HomebrewSchema = mongoose.Schema({
|
|||||||
editId : {type : String, default: shortid.generate, index: { unique: true }},
|
editId : {type : String, default: shortid.generate, index: { unique: true }},
|
||||||
title : {type : String, default : ""},
|
title : {type : String, default : ""},
|
||||||
text : {type : String, default : ""},
|
text : {type : String, default : ""},
|
||||||
|
authors : [String],
|
||||||
|
|
||||||
createdAt : { type: Date, default: Date.now },
|
createdAt : { type: Date, default: Date.now },
|
||||||
updatedAt : { type: Date, default: Date.now},
|
updatedAt : { type: Date, default: Date.now},
|
||||||
@@ -16,6 +17,40 @@ var HomebrewSchema = mongoose.Schema({
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
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]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
var Homebrew = mongoose.model('Homebrew', HomebrewSchema);
|
var Homebrew = mongoose.model('Homebrew', HomebrewSchema);
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
|||||||
Reference in New Issue
Block a user