/
index.js
60 lines (52 loc) · 1.48 KB
/
index.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
// importing libs
const express = require('express')
const app = express()
const bp = require('body-parser')
const expHbr = require('express-handlebars')
// custom
const public = `${__dirname}/public`
const file = f => `${public}/${f}`
const {loadData, saveData, findOne} = require('./helpers/io')
const Post = require('./helpers/post')
// configuring server
app.use(express.static(public))
app.engine('handlebars', expHbr({defaultLayout: file('main')}))
app.set('view engine', 'handlebars')
app.use(bp.urlencoded({extended:true}))
app.get('/', (req,res) => {
let data = loadData()
res.render(file('home'), {
title: 'Home', data
})
})
app.get('/product/:id', (req,res) => {
let {id} = req.params
let p = findOne(id)
if(p){
res.render(file('product'), {
product: p
})
} else {
res.status(404).render(file('error'),
{title:'page not found', status: 404})
}
})
app.get('/new', (req,res) => res.render(file('new'), {title:"new post"}))
app.post('/newpost', (req,res) => {
let all = loadData()
let {productName,manuName,price,description} = req.body
if(productName.length > 3 && manuName.length > 2 && price){
let p = new Post(`${manuName} - ${productName}`, price, description)
all.posts.push(p)
saveData(all)
res.redirect('/')
} else {
res.status(400).render(file('error'),
{title: 'bad request', status:400})
}
})
// starting server
app.listen(3000, err => {
if (err) return err
console.log("Server is Running on port 3000")
})