1
0
mirror of https://github.com/stolksdorf/homebrewery.git synced 2025-12-12 23:45:57 +00:00

Cleaned up the server file and added methodfs and statics to the model

This commit is contained in:
Scott Tolksdorf
2016-11-14 22:30:28 -05:00
parent 6672dff938
commit 8b3f9ac76a
5 changed files with 113 additions and 98 deletions

View File

@@ -1,18 +1,18 @@
var React = require('react');
var _ = require('lodash');
var cx = require('classnames');
const React = require('react');
const _ = require('lodash');
const cx = require('classnames');
var CreateRouter = require('pico-router').createRouter;
const CreateRouter = require('pico-router').createRouter;
var HomePage = require('./pages/homePage/homePage.jsx');
var EditPage = require('./pages/editPage/editPage.jsx');
var SharePage = require('./pages/sharePage/sharePage.jsx');
var NewPage = require('./pages/newPage/newPage.jsx');
var ErrorPage = require('./pages/errorPage/errorPage.jsx');
var PrintPage = require('./pages/printPage/printPage.jsx');
const HomePage = require('./pages/homePage/homePage.jsx');
const EditPage = require('./pages/editPage/editPage.jsx');
const SharePage = require('./pages/sharePage/sharePage.jsx');
const NewPage = require('./pages/newPage/newPage.jsx');
const ErrorPage = require('./pages/errorPage/errorPage.jsx');
const PrintPage = require('./pages/printPage/printPage.jsx');
var Router;
var Homebrew = React.createClass({
let Router;
const Homebrew = React.createClass({
getDefaultProps: function() {
return {
url : '',

View File

@@ -1,10 +1,7 @@
const React = require('react');
const _ = require('lodash');
const cx = require('classnames');
//const BrewRenderer = require('../../brewRenderer/brewRenderer.jsx');
var Markdown = require('naturalcrit/markdown.js');
const Markdown = require('naturalcrit/markdown.js');
const PrintPage = React.createClass({
getDefaultProps: function() {

125
server.js
View File

@@ -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
String.prototype.replaceAll = function(s,r){return this.split(s).join(r)}
app.get('/source/:id', (req, res)=>{
HomebrewModel.find({shareId : req.params.id}, (err, brews)=>{
if(err || !brews.length) return res.status(404).send('Could not find Homebrew with that id');
const text = brews[0].text.replaceAll('<', '&lt;').replaceAll('>', '&gt;');
return res.send(`<code><pre>${text}</pre></code>`);
});
HomebrewModel.get({shareId : req.params.id})
.then((brew)=>{
const text = brew.text.replaceAll('<', '&lt;').replaceAll('>', '&gt;');
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
app.use((req, res) => {
vitreumRender({

View File

@@ -53,17 +53,19 @@ router.post('/api', (req, res)=>{
});
router.put('/api/update/:id', (req, res)=>{
HomebrewModel.find({editId : req.params.id}, (err, objs)=>{
if(!objs.length || err) return res.status(404).send("Can not find homebrew with that id");
var resEntry = objs[0];
resEntry.text = req.body.text;
resEntry.title = req.body.title;
resEntry.updatedAt = new Date();
resEntry.save((err, obj)=>{
if(err) return res.status(500).send("Error while saving");
return res.status(200).send(obj);
HomebrewModel.get({editId : req.params.id})
.then((brew)=>{
brew = _.merge(brew, req.body);
brew.updatedAt = new Date();
brew.save((err, obj)=>{
if(err) throw err;
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)=>{

View File

@@ -7,6 +7,7 @@ var HomebrewSchema = mongoose.Schema({
editId : {type : String, default: shortid.generate, index: { unique: true }},
title : {type : String, default : ""},
text : {type : String, default : ""},
authors : [String],
createdAt : { 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);
module.exports = {