From a3fa59e226b45e67b3796ebb5b4a584c31fa38f7 Mon Sep 17 00:00:00 2001 From: Andrew Davidson Date: Sat, 16 Jan 2016 23:17:24 -0500 Subject: [PATCH] Working on replacing scattered post model with a cohesive one and mongodb support ( #6 ), some of this will also support issue #7 as well, but right now the admin page is broken and post generating is broken. --- app.js | 163 ++++++++++++++++--------------------- db.js | 21 ----- genPhotos.js | 1 - genPosts.js | 1 - helper.js | 61 -------------- package.json | 2 + schemas.js | 28 ++++++- user.js | 2 +- views/admin-post-edit.jade | 14 ++-- views/admin-post-list.jade | 28 +++---- views/admin-post-new.jade | 6 +- views/admin-post-view.jade | 14 ++-- 12 files changed, 132 insertions(+), 209 deletions(-) delete mode 100644 helper.js diff --git a/app.js b/app.js index ea2a43c..f1d1272 100644 --- a/app.js +++ b/app.js @@ -8,15 +8,13 @@ var multer = require('multer'); var fs = require('fs'); var markdown = require( "markdown" ).markdown; - // Get connected to our database var MongoClient = require('mongodb').MongoClient Post = require('./post.js'); User = require('./user.js'); -var helper = require('./helper.js'); +Category = require('./category.js'); var database = require('./db.js'); -var genPosts = require('./genPosts.js'); var genStatic = require('./genStatic.js'); var genPhotos = require('./genPhotos.js'); @@ -102,28 +100,21 @@ app.get('/admin/post/list/:start?', } else { var start = 0; } - database.listPosts(count, start, function(posts){ - for (post in posts) { - var date = new Date(posts[post].postDate); - posts[post].dateString = date.getFullYear() + '-' + - ("0" + (date.getMonth()+1)).slice(-2) + '-' + - ("0" + date.getDate()).slice(-2); - } + Post.getPosts(count, start, function(err, posts){ res.render('admin-post-list', {posts, user: req.user}); }); } ); -app.get('/admin/post/view/:id?', +app.get('/admin/post/view/:uuid?', function (req, res, next) { - if (req.params.id) { - database.getPostById(req.params.id, function(row) { + if (req.params.uuid) { + Post.getByUUID(req.params.uuid, function(err, post) { res.render('admin-post-view', { successNotice: req.flash('successNotice'), failureNotice: req.flash('failureNotice'), - date: helper.epochToShortDateString(row.postDate), - post: row, - content: markdown.toHTML(row.markdown), + post: post, + content: markdown.toHTML(post.get("markdown")), user: req.user }) }) @@ -136,104 +127,92 @@ app.get('/admin/post/view/:id?', app.get('/admin/post/new', function(req, res, next) { - database.listCategories(function(rows){ - res.render('admin-post-new', { categories: rows, user: req.user }); + Category.getCategories(null, null, function (err, categories) { + res.render('admin-post-new', { categories: categories, user: req.user }); }); -} + } ); app.post('/admin/post/new', function(req, res, next) { - var title = req.body.title; + var post = new Post(); + post.set("title", req.body.title); if (req.body.slug != "") { - var slug = req.body.slug; + post.set("slug", req.body.slug); } else { - var slug = helper.makeSlug(title); + post.set("slug", post.makeSlug()); } - var markdown = req.body.markdown; if (req.body.postDate != "") { - var postDate = helper.dateToEpoch(new Date(req.body.postDate)); - } else { - var postDate = helper.dateToEpoch(new Date()); + post.set("postDate", new Date(req.body.postDate)); + post.set("updatedDate", new Date(req.body.postDate)); } - var updatedDate = postDate; - var createDate = helper.dateToEpoch(new Date()); - var categoryName = req.body.category; - var tags = helper.parseTags(req.body.tags); + post.tagPost(req.body.tags); + post.set("markdown", req.body.markdown); - database.createPost(title, slug, markdown, postDate, updatedDate, createDate, function(err, row) { - database.setPostCategory(row.id, categoryName, function(category) { - database.tagPost(row.id, tags); - req.flash('successNotice', 'Post created.'); - res.redirect('/admin/post/edit/'+row.id); + Category.getByName(req.body.category, function (err, category) { + post.set("category", category.get("uuid")); + console.log(post); + post.save(function (err) { + if (!err) { + req.flash('successNotice', 'Post created.'); + res.redirect('/admin/post/edit/'+post.get("uuid")); + } + else { + req.flash('failureNotice', 'Post creation failed'); + res.redirect('/admin/post/new/'); + } }); }); -} + } ); -app.get('/admin/post/edit/:id', +app.get('/admin/post/edit/:uuid', function(req, res, next) { - var id = req.params.id; - async.parallel({ - categories: function(callback) { - database.listCategories(function(categories) { - callback(null, categories); - }) - }, - postCategory: function(callback) { - database.getPostCategory(id, function(category) { - callback(null, category); - }) - }, - postTags: function(callback) { - database.getPostTagsAsString(id, function(tagString) { - callback(null, tagString); - }) - }, - post: function(callback) { - database.getPostById(id, function(post) { - callback(null, post); - }) - } - }, - function(err, results) { - if (results.postCategory) { - var categoryName = results.postCategory.name; - } else { - var categoryName = null; - } - res.render('admin-post-edit', { - successNotice: req.flash('successNotice'), - failureNotice: req.flash('failureNotice'), - categories: results.categories, - postCategory: categoryName, - post: results.post, - postTags: results.postTags, - formattedDate: helper.epochToDateString(results.post.postDate), - user: req.user + Post.getByUUID(req.params.uuid, function(err, post) { + Category.getByUUID(post.get("category"), function(err, category) { + Category.getCategories(null, null, function(err, categories) { + var tags = "" + for (i=0; i