From 11fd6d9aa2dbf32f3962ae0b46a9a0c1f4b5a26d Mon Sep 17 00:00:00 2001 From: Andrew Davidson Date: Sun, 24 Jan 2016 12:02:25 -0500 Subject: [PATCH] Initial framework for creating post indexes is in place. Functionality to build all unbuilt posts does not protect against re-building indexes and should be re-factored for efficiency --- post.js | 152 ++++++++++++++++++++++++++++++----- routes-post.js | 33 ++++---- views/admin-post-view.jade | 2 +- views/partial-post.jade | 5 ++ views/render-post-index.jade | 7 ++ views/render-post.jade | 5 +- 6 files changed, 166 insertions(+), 38 deletions(-) create mode 100644 views/partial-post.jade create mode 100644 views/render-post-index.jade diff --git a/post.js b/post.js index 5350281..ae9802f 100644 --- a/post.js +++ b/post.js @@ -26,6 +26,10 @@ Post.prototype.set = function (name, value) { this.data[name] = value; } +Post.prototype.toString = function () { + return 'Post: ' + this.get('title') + ' - ' + this.getShortDate(); +} + Post.prototype.sanitize = function (data) { data = data || {}; schema = schemas.post; @@ -45,6 +49,7 @@ Post.prototype.save = function (date, callback) { }); } + //////////////////////////////////////////////////////////////////////////////////////// // Prototype Functions //////////////////////////////////////////////////////////////////////////////////////// @@ -152,23 +157,42 @@ Post.prototype.makeSlug = function () { // Arguments: Callback function // Returns: err Post.prototype.build = function (callback) { + console.log('Rendering ' + this); + + year = moment(this.get("postDate")).format("YYYY"); + month = moment(this.get("postDate")).format("MM"); + +// Post.buildYearIndex(year, function (err) { +// if (err) console.log(err); +// }); + Post.buildMonthIndex(year, month, function (err) { + if (err) console.log(err); + }); + var options = { pretty: true, post: this }; - console.log('Rendering post: '+this.get("title")); var jadeOut = jade.renderFile('views/render-post.jade', options); self = this; mkdirp(self.getDirectory(), function (err) { - fs.writeFile(self.getFilePath(), jadeOut, 'utf-8', function (err) { - self.set('lastBuildDate', new Date()); - self.save(self.get('lastBuildDate'), function (err) { - callback(err); + if (!err) { + fs.writeFile(self.getFilePath(), jadeOut, 'utf-8', function (err) { + if (!err) { + self.set('lastBuildDate', new Date()); + self.save(self.get('lastBuildDate'), function (err) { + callback(err); + }); + } else { + callback(err); + } }); - }); + } else { + callback(err); + } }); } @@ -190,7 +214,7 @@ Post.getLastBuildDate = function (callback) { }; // Function to find the most recent post upload date. -// Returns a date object +// Returns: err, date object Post.getLastUploadDate = function (callback) { db.collection("posts").findOne({}, {lastUploadDate: 1}, {sort: {lastUploadDate: -1}}, function (err, doc) { @@ -201,15 +225,17 @@ Post.getLastUploadDate = function (callback) { // Get a specific post by it's UUID -// Returns post object +// Returns: err, post object Post.getByUUID = function (uuid, callback) { db.collection("posts").findOne({uuid: uuid}, function(err, doc) { - callback(err, new Post(doc)); + post = new Post(doc); + console.log('Retrieved ' + post); + callback(err, post); }); } // Function to get a count of current posts -// Returns count of posts +// Returns: err, count of posts Post.countPosts = function(callback) { db.collection("posts").find({}).count(function (err, count) { if (err) console.log(err); @@ -219,7 +245,7 @@ Post.countPosts = function(callback) { // Function to get a list of posts of a certain count and starting at an offset // Count and start are optional, when start is specified count must be specified. -// Returns a list of post objects +// Returns: err, list of post objects Post.getPosts = function(count, start, callback) { if (typeof callback === undefined) { if (typeof start === undefined) { @@ -239,18 +265,22 @@ Post.getPosts = function(count, start, callback) { options.sort = [['postDate', 'desc'],['title', 'asc']]; db.collection("posts").find({},options).toArray( function(err, docs) { - console.log(err); - posts = []; - for (i=0; i= new Date('+year+', '+month+'-1, 1, 0, 0, 0)) \ + && (this.postDate <= new Date('+year+', '+month+', 0, 23, 59, 59))' + }, {sort: [['postDate', 'desc'],['title', 'asc']]} + ).toArray(function (err, docs) { + if (!err) { + console.log('Found '+docs.length+' posts from '+year+'/'+month); + posts = [] + for (i=0; i= start) && (this.postDate <= end)' + }).toArray(function (err, docs) { + posts = [] + for (i=0; i