From b7a95ee56f7b05cb2a232c0ac632cb8297f7b7d2 Mon Sep 17 00:00:00 2001 From: Michael Q Larson Date: Tue, 3 Mar 2015 01:41:32 -0800 Subject: [PATCH] passing off hacker news clone to Nathan and his pair --- controllers/story.js | 20 +++++++++++++ models/Comment.js | 19 ++++-------- models/Post.js | 23 --------------- models/Story.js | 15 ++++++++++ seed_data/seed.js | 22 +++++++++++++- seed_data/stories.json | 67 ++++++++++++++++++++++++++++++++++++++++++ views/post/index.jade | 5 ++++ views/post/posts.jade | 24 +++++++++++++++ 8 files changed, 157 insertions(+), 38 deletions(-) create mode 100644 controllers/story.js delete mode 100644 models/Post.js create mode 100644 models/Story.js create mode 100644 seed_data/stories.json create mode 100644 views/post/index.jade create mode 100644 views/post/posts.jade diff --git a/controllers/story.js b/controllers/story.js new file mode 100644 index 0000000000..688e8a8590 --- /dev/null +++ b/controllers/story.js @@ -0,0 +1,20 @@ +var R = require('ramda'), + debug = require('debug')('freecc:cntr:post'), + Post = require('./../models/Post'), + Comment = require('./../models/Comment'), + User = require('./../models/User'), + resources = require('./resources'); + +/** + * Post Controller + */ + +exports.index = function(req, res, next) { + var posts = Post.find({}).sort({'rank': -1}); + posts.exec(function(err, listings) { + if (err) { + throw err; + } + res.json(listing); + }); +}; \ No newline at end of file diff --git a/models/Comment.js b/models/Comment.js index f53e6a55a0..1a3a1639ce 100644 --- a/models/Comment.js +++ b/models/Comment.js @@ -2,19 +2,10 @@ var mongoose = require('mongoose'); var secrets = require('../config/secrets'); var commentSchema = new mongoose.Schema({ - rank: Number, - upVotes: [ - { - upVotedBy: ObjectId, - upVotedTime: Number - } - ], - author: { - username: String, - id: ObjectId, - picture: String - } + rank: { type: Number, default: -Infinity }, + upVotes: { type: Array, default: [] }, + author: {}, + comments: { type: Array, default: [] } }); -module.exports = mongoose.model('BonfireCompletion', bonfireCompletionSchema); - +module.exports = mongoose.model('Comment', commentSchema); \ No newline at end of file diff --git a/models/Post.js b/models/Post.js deleted file mode 100644 index 2a34aed306..0000000000 --- a/models/Post.js +++ /dev/null @@ -1,23 +0,0 @@ -var mongoose = require('mongoose'); -var secrets = require('../config/secrets'); - -var postSchema = new mongoose.Schema({ - headline: String, - link: String, - body: String, - rank: Number, - upVotes: [ - { - upVotedBy: ObjectId, - upVotedTime: Number - } - ], - author: { - username: String, - id: ObjectId, - picture: String - } -}); - -module.exports = mongoose.model('BonfireCompletion', bonfireCompletionSchema); - diff --git a/models/Story.js b/models/Story.js new file mode 100644 index 0000000000..251cefa42d --- /dev/null +++ b/models/Story.js @@ -0,0 +1,15 @@ +var mongoose = require('mongoose'); +var secrets = require('../config/secrets'); + +var storySchema = new mongoose.Schema({ + headline: String, + link: String, + body: String, + rank: { type: Number, default: -Infinity }, + upVotes: { type: Array, default: [] }, + author: {}, + comments: { type: Array, default: [] } +}); + +module.exports = mongoose.model('Story', storySchema); + diff --git a/seed_data/seed.js b/seed_data/seed.js index 6549c3cc71..b59c381645 100644 --- a/seed_data/seed.js +++ b/seed_data/seed.js @@ -1,17 +1,20 @@ require('dotenv').load(); var Challenge = require('../models/Challenge.js'), Bonfire = require('../models/Bonfire.js'), + Comment = require('../models/Comment.js'), + Story = require('../models/Story.js'), Courseware = require('../models/Courseware.js'), mongoose = require('mongoose'), secrets = require('../config/secrets'), challenges = require('./challenges.json'), coursewares = require('./coursewares.json'), + stories = require('./stories.json'), bonfires = require('./bonfires.json'); mongoose.connect(secrets.db); var counter = 0; -var offerings = 3; +var offerings = 4; var CompletionMonitor = function() { counter++; @@ -73,4 +76,21 @@ Courseware.remove({}, function(err, data) { CompletionMonitor(); }); console.log('coursewares'); +}); + +Story.remove({}, function(err, data) { + if (err) { + console.error(err); + } else { + console.log('Deleted ', data); + } + Story.create(coursewares, function(err, data) { + if (err) { + console.log(err); + } else { + console.log('Saved ', data); + } + CompletionMonitor(); + }); + console.log('stories'); }); \ No newline at end of file diff --git a/seed_data/stories.json b/seed_data/stories.json new file mode 100644 index 0000000000..c53742c0ff --- /dev/null +++ b/seed_data/stories.json @@ -0,0 +1,67 @@ +[ + { + "headline": "Cat sits on keyboard 0", + "link": "http://kotaku.com/5991046/why-cats-love-sitting-on-keyboards", + "body": "cats love keyboards you know", + "rank": 0, + "upVotes": [], + "author": { + "username": "terakilobyte", + "id": "a2ad135e2aa27c14fc73ee11", + "picture": "https://www.google.com/search?q=cat+photo+google+images&tbm=isch&imgil=7dFgV4OZlJObjM%253A%253BDGoqtUgH7IKDWM%253Bhttp%25253A%25252F%25252Fwww.wired.co.uk%25252Fnews%25252Farchive%25252F2012-06%25252F26%25252Fgoogle-brain-recognises-cats&source=iu&pf=m&fir=7dFgV4OZlJObjM%253A%252CDGoqtUgH7IKDWM%252C_&usg=__yxi54C0GOssHCOLnh1StLAH7KNk%3D&biw=1920&bih=981&ved=0CDYQyjc&ei=n3n1VL6ENcHZoATjvYDABQ#imgrc=7dFgV4OZlJObjM%253A%3BDGoqtUgH7IKDWM%3Bhttp%253A%252F%252Fcdni.wired.co.uk%252F620x413%252Fs_v%252Fshutterstock_65735200.jpg%3Bhttp%253A%252F%252Fwww.wired.co.uk%252Fnews%252Farchive%252F2012-06%252F26%252Fgoogle-brain-recognises-cats%3B620%3B413" + }, + "comments": [] + }, + { + "headline": "Cat sits on keyboard 1", + "link": "http://kotaku.com/5991046/why-cats-love-sitting-on-keyboards", + "body": "cats love keyboards you know", + "rank": 1, + "upVotes": [], + "author": { + "username": "terakilobyte", + "id": "a2ad135e2aa27c14fc73ee11", + "picture": "https://www.google.com/search?q=cat+photo+google+images&tbm=isch&imgil=7dFgV4OZlJObjM%253A%253BDGoqtUgH7IKDWM%253Bhttp%25253A%25252F%25252Fwww.wired.co.uk%25252Fnews%25252Farchive%25252F2012-06%25252F26%25252Fgoogle-brain-recognises-cats&source=iu&pf=m&fir=7dFgV4OZlJObjM%253A%252CDGoqtUgH7IKDWM%252C_&usg=__yxi54C0GOssHCOLnh1StLAH7KNk%3D&biw=1920&bih=981&ved=0CDYQyjc&ei=n3n1VL6ENcHZoATjvYDABQ#imgrc=7dFgV4OZlJObjM%253A%3BDGoqtUgH7IKDWM%3Bhttp%253A%252F%252Fcdni.wired.co.uk%252F620x413%252Fs_v%252Fshutterstock_65735200.jpg%3Bhttp%253A%252F%252Fwww.wired.co.uk%252Fnews%252Farchive%252F2012-06%252F26%252Fgoogle-brain-recognises-cats%3B620%3B413" + }, + "comments": [] + }, + { + "headline": "Cat sits on keyboard 3", + "link": "http://kotaku.com/5991046/why-cats-love-sitting-on-keyboards", + "body": "cats love keyboards you know", + "rank": 3, + "upVotes": [], + "author": { + "username": "terakilobyte", + "id": "a2ad135e2aa27c14fc73ee11", + "picture": "https://www.google.com/search?q=cat+photo+google+images&tbm=isch&imgil=7dFgV4OZlJObjM%253A%253BDGoqtUgH7IKDWM%253Bhttp%25253A%25252F%25252Fwww.wired.co.uk%25252Fnews%25252Farchive%25252F2012-06%25252F26%25252Fgoogle-brain-recognises-cats&source=iu&pf=m&fir=7dFgV4OZlJObjM%253A%252CDGoqtUgH7IKDWM%252C_&usg=__yxi54C0GOssHCOLnh1StLAH7KNk%3D&biw=1920&bih=981&ved=0CDYQyjc&ei=n3n1VL6ENcHZoATjvYDABQ#imgrc=7dFgV4OZlJObjM%253A%3BDGoqtUgH7IKDWM%3Bhttp%253A%252F%252Fcdni.wired.co.uk%252F620x413%252Fs_v%252Fshutterstock_65735200.jpg%3Bhttp%253A%252F%252Fwww.wired.co.uk%252Fnews%252Farchive%252F2012-06%252F26%252Fgoogle-brain-recognises-cats%3B620%3B413" + }, + "comments": [] + }, + { + "headline": "Cat sits on keyboard 20", + "link": "http://kotaku.com/5991046/why-cats-love-sitting-on-keyboards", + "body": "cats love keyboards you know", + "rank": 20, + "upVotes": [], + "author": { + "username": "terakilobyte", + "id": "a2ad135e2aa27c14fc73ee11", + "picture": "https://www.google.com/search?q=cat+photo+google+images&tbm=isch&imgil=7dFgV4OZlJObjM%253A%253BDGoqtUgH7IKDWM%253Bhttp%25253A%25252F%25252Fwww.wired.co.uk%25252Fnews%25252Farchive%25252F2012-06%25252F26%25252Fgoogle-brain-recognises-cats&source=iu&pf=m&fir=7dFgV4OZlJObjM%253A%252CDGoqtUgH7IKDWM%252C_&usg=__yxi54C0GOssHCOLnh1StLAH7KNk%3D&biw=1920&bih=981&ved=0CDYQyjc&ei=n3n1VL6ENcHZoATjvYDABQ#imgrc=7dFgV4OZlJObjM%253A%3BDGoqtUgH7IKDWM%3Bhttp%253A%252F%252Fcdni.wired.co.uk%252F620x413%252Fs_v%252Fshutterstock_65735200.jpg%3Bhttp%253A%252F%252Fwww.wired.co.uk%252Fnews%252Farchive%252F2012-06%252F26%252Fgoogle-brain-recognises-cats%3B620%3B413" + }, + "comments": [] + }, + { + "headline": "Cat sits on keyboard 2", + "link": "http://kotaku.com/5991046/why-cats-love-sitting-on-keyboards", + "body": "cats love keyboards you know", + "rank": 2, + "upVotes": [], + "author": { + "username": "terakilobyte", + "id": "a2ad135e2aa27c14fc73ee11", + "picture": "https://www.google.com/search?q=cat+photo+google+images&tbm=isch&imgil=7dFgV4OZlJObjM%253A%253BDGoqtUgH7IKDWM%253Bhttp%25253A%25252F%25252Fwww.wired.co.uk%25252Fnews%25252Farchive%25252F2012-06%25252F26%25252Fgoogle-brain-recognises-cats&source=iu&pf=m&fir=7dFgV4OZlJObjM%253A%252CDGoqtUgH7IKDWM%252C_&usg=__yxi54C0GOssHCOLnh1StLAH7KNk%3D&biw=1920&bih=981&ved=0CDYQyjc&ei=n3n1VL6ENcHZoATjvYDABQ#imgrc=7dFgV4OZlJObjM%253A%3BDGoqtUgH7IKDWM%3Bhttp%253A%252F%252Fcdni.wired.co.uk%252F620x413%252Fs_v%252Fshutterstock_65735200.jpg%3Bhttp%253A%252F%252Fwww.wired.co.uk%252Fnews%252Farchive%252F2012-06%252F26%252Fgoogle-brain-recognises-cats%3B620%3B413" + }, + "comments": [] + } +] \ No newline at end of file diff --git a/views/post/index.jade b/views/post/index.jade new file mode 100644 index 0000000000..bdf5e171b8 --- /dev/null +++ b/views/post/index.jade @@ -0,0 +1,5 @@ +extends ../layout +block content + .panel.text-center + h1.hug-top Camper News + include parials/post \ No newline at end of file diff --git a/views/post/posts.jade b/views/post/posts.jade new file mode 100644 index 0000000000..f20fd43aab --- /dev/null +++ b/views/post/posts.jade @@ -0,0 +1,24 @@ +h3 + ol#bonfireList Test! + + //script(src="https://cdn.jsdelivr.net/ramda/0.10.0/ramda.min.js") + //script. + // var getLinkedName = function getLinkedName(name) { + // return name.toLowerCase().replace(/\s/g, '-'); + // } + // $.ajax({ + // url: '/bonfires/getBonfireList', + // type: 'GET' + // }) + // .success( + // function(data) { + // for (var i = 0; i < data.bonfireList.length; i++) { + // var li = document.createElement('li'); + // var linkedName = getLinkedName(data.bonfireList[i].name); + // if (R.contains(data.bonfireList[i].id, data.completedList)) { + // $(li).addClass('strikethrough'); + // } + // $(li).html("" + data.bonfireList[i].name + ""); + // $(li).appendTo($('#bonfireList')); + // } + // }); \ No newline at end of file