-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
146 lines (118 loc) · 3.98 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
const express = require('express')
const server = express()
//const axios = require('axios').default
var exphbs = require('express-handlebars')
var fs = require('fs');
const { insertMany } = require('./models/article');
var port = process.env.PORT||3000;
var bodyParser = require('body-parser')
var jsonParser = bodyParser.json();
const Article = require('./models/article');
// Serve static files
server.engine('hbs', exphbs({defaultLayout: 'main', extname: '.hbs'}))
server.set('view engine', 'hbs')
server.use(express.static('public'))
//---Andrews Playground--------------------------------------------------------
//server request will call this function and execute console.log()
const sqlite3 = require('sqlite3').verbose();
let db = new sqlite3.Database('blog.db', sqlite3.OPEN_READWRITE, (err) => {
if (err) {
console.error(err.message);
}else{
console.log('Connected to the database.');
}
});
function getPostInfo(){
var postArray = new Array() //blank array to hold all posts
var iterator = 0;
db.serialize(() => {
db.each(`SELECT id as id,
title as title,
author as author,
description as description,
content as content,
date as date
FROM blog_post`, (err, row) => {
if (err) {
console.error(err.message);
console.log("Cannot find columns")
}
var singleEntry = new Array() //array to represent a single post
singleEntry.push(row.id)//0
singleEntry.push(row.title)//1
singleEntry.push(row.author)//2
singleEntry.push(row.description)//3
singleEntry.push(row.content)//4
singleEntry.push(row.date)//5
postArray.push(singleEntry)
});
});
return postArray;
}
function getSinglePost(idx){
var postArray = new Array() //blank array to hold all posts
var iterator = 0;
db.serialize(() => {
let sql = `SELECT id as id, title as title, author as author, description as description, content as content, date as date FROM blog_post`
db.each(sql, (err, row) => {
if (err) {
console.error(err.message);
console.log("Cannot find columns")
}
var singleEntry = new Array() //array to represent a single post
if(idx == row.id){
console.log("Entered if idx == row.id")
singleEntry.push(row.id)//0
singleEntry.push(row.title)//1
singleEntry.push(row.author)//2
singleEntry.push(row.description)//3
singleEntry.push(row.content)//4
singleEntry.push(row.date)//5
postArray.push(singleEntry)
}
});
})
return postArray
}
function validateIndex(idx){
var postCounter = 0;
`SELECT COUNT(*) as num FROM blog_post`
}
server.get("/", function(req, res, next){
var posts = getPostInfo()
res.status(200).render("homePage",{articles:posts});
});
server.get("/new", function(req, res, next){
res.status(200).render("newPost",{})
});
server.get("/posts/:idx", function(req, res, next){
var article = getSinglePost(req.params.idx)
if(article === 0){
console.log("entered if article == null")
res.status(404).render('404')}
else{res.status(200).render('singlePost', {articles:article})}
})
server.get("*", function(req, res){
res.status(404).render("404",{
//404 Comment not found
})
return;
});
server.post('/new', jsonParser, function(req, res){
console.log("entered server.post")
insert(req);
db.each('SELECT * from blog_post', function(err, row){
if(row){
console.log('record: ', JSON.stringify(row));
}
})
})
var insert = function(req){
console.log("entered var insert");
db.run('INSERT INTO blog_post (title, author, description, content, date) VALUES ("'+req.body.title+'","'+req.body.author+'","'+req.body.description+'","'+req.body.content+'", "'+req.body.date+'")');
window.location.replace("index.html");
}
module.exports = server
server.listen(port, function () {
console.log("== Server is listening on port", port);
});