-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathserver.js
More file actions
105 lines (91 loc) · 3.46 KB
/
Copy pathserver.js
File metadata and controls
105 lines (91 loc) · 3.46 KB
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
const express = require('express');
const bodyParser = require('body-parser')
const expressLayouts = require('express-ejs-layouts');
const session = require('express-session');
var MemoryStore = require('memorystore')(session);
const app = express();
const userController = require('./controllers/userController');
const paletteController = require('./controllers/paletteController');
const port = process.env.PORT || 8080;
let connString = process.env.DATABASE_URL
const { Pool } = require('pg')
let pool
if (process.env.DATABASE_URL) {
pool = new Pool({ connectionString: connString })
} else {
pool = new Pool({ database: 'colors_api', password: 'password' })
}
app.use(session({
cookie: { maxAge: 86400000 },
store: new MemoryStore({
checkPeriod: 86400000 // prune expired entries every 24h
}),
secret: 'keyboard cat',
resave: false,
saveUninitialized: true
}))
app.use(bodyParser.json())
app.use(express.static('client'))
app.use(expressLayouts)
/*********** EJS *********/
app.set('views', './views')
app.set('view engine', 'ejs')
// app.set('layout','layout')
/*********** Home page *********/
app.get('/', (req, res) => {
res.render('home', { session: req.session })
})
/*********** color genertaor page *********/
app.get('/colors', (req, res) => {
let data = {
id: "none",
primary_color_hex: '1',
secondary_color_hex: '1',
tertiary_color_hex: '1',
quaternary_color_hex: '1',
quinary_color_hex: '1'
}
if (req.session.user) {
res.render('colors_selection', { session: req.session, data })
} else {
res.render('colors_login', { session: req.session, data })
}
})
/*********** Specific pallet selection page *********/ //does not actually work yet....
app.get('/colors/:paletteId', (req, res) => {
if (req.session.user) {
pool.query('select * from palettes WHERE id=$1;', [req.params.paletteId], (err, db) => {
res.render('colors_selection', { session: req.session, data: db.rows[0] })
})
} else {
pool.query('select * from palettes WHERE id=$1;', [req.params.paletteId], (err, db) => {
res.render('colors_login', { session: req.session, data: db.rows[0] })
})
}
})
/*********** Palettes page *********/
app.get('/palettes', (req, res) => {
res.render('palletes', { session: req.session })
})
/*********** All Palettes page *********/
app.get('/palettes/all', (req, res) => {
res.render('allPalletes', { session: req.session })
})
/*********** Docs/API page *********/
app.get('/api-access', (req, res) => {
res.render('docs_api', { session: req.session })
})
app.get('/api/colors', paletteController.allColors) //Only purpose is testing
app.get('/api/palettes', paletteController.allPalettes)
app.get('/api/colors/palettes/favourites/:user_id', paletteController.usersFavouritePalettes)
app.get('/api/palettes/:apikey', paletteController.usersFavouritePalettesbyAPI)
app.post('/api/palettes', paletteController.createPalette)
app.post('/api/favourites', paletteController.addFavourite)
app.get('/users/all', userController.checkSession, userController.allUsers) //Only purpose is testing
app.post('/users', userController.createUser)
app.post('/login', userController.loginUser)
app.get('/logout', userController.checkSession, userController.logoutUser)
app.get('/delete/favourites/:favourite_id', paletteController.removeFavourite)
app.listen(port, () => {
console.log(`listening from port ${port}`)
});