-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathserver.js
More file actions
91 lines (78 loc) · 2.25 KB
/
server.js
File metadata and controls
91 lines (78 loc) · 2.25 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
const express = require('express');
const app = express();
const fs = require('fs');
const path = require('path');
const Sequelize = require('sequelize');
const env = process.env.NODE_ENV || 'production';
if (fs.existsSync(__dirname + '/config.json')) {
const config = require(__dirname + '/config.json')[env];
}
const bodyParser = require('body-parser');
database = process.env.DATABASE_NAME || config.database;
username = process.env.USERNAME || config.username;
password = process.env.PASSWORD || config.password;
server_info = {
host: process.env.SERVER || config['host'],
dialect: process.env.DIALECT || config['dialect']
};
const sequelize = new Sequelize(database, username, password, server_info);
sequelize.authenticate().then(function() {
console.log('Connection has been established successfully.');
})
.catch(function(err) {
console.log('Unable to connect to the database:', err);
});
const scores = sequelize.define('scores', {
username: {
type: Sequelize.STRING
},
score: {
type: Sequelize.INTEGER
}
});
scores.sync();
app.set('view engine', 'ejs');
app.use('/css', express.static(__dirname + '/css'));
app.use('/audio', express.static(__dirname + '/audio'));
app.use('/js', express.static(__dirname + '/js'));
app.use('/images', express.static(__dirname + '/images'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
app.post('/store', function(req, res) {
res.setHeader('Content-Type', 'application/json');
scores.findOrCreate({
where: {
username: req.body.name
},
defaults: {
score: req.body.score
}
})
.spread(function(user, created) {
if (created == false && req.body.score > user.score) {
user.updateAttributes({
score: req.body.score
})
}
})
});
app.get('/', function(req, res) {
res.render('index');
});
app.get('/leaderboard', function(req, res) {
scores.findAll({
attributes: ['username', 'score'],
order: [
['score', 'DESC']
]
})
.then(leaderboard => {
res.render('leaderboard',{leaderboard: leaderboard});
});
});
port = process.env.PORT || 5000;
var server = app.listen(port, function() {
console.log('Magic is happening on port ' + port);
});