-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathapp.js
More file actions
71 lines (62 loc) · 2.24 KB
/
app.js
File metadata and controls
71 lines (62 loc) · 2.24 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
var pg = require('pg');
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
// allows us to parse the incoming request body
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
// Connects to postgres once, on server start
var conString = process.env.DATABASE_URL || "postgres://localhost/action";
var db;
pg.connect(conString, function(err, client) {
if (err) {
console.log(err);
} else {
db = client;
}
});
// homepage
app.get('/', function (req, res) {
res.send('Tradecraft messagehub API.')
});
//get all messages in a type's channel
app.get('/:type_token/:channel_token', function (req, res) {
console.log(db);
db.query("SELECT type_token, channel_token, user_name, message_text, message_timestamp FROM messages WHERE type_token = $1 AND channel_token = $2 ORDER BY message_timestamp", [req.params.type_token, req.params.channel_token], function(err, result) {
if (err) {
res.status(500).send(err);
} else {
res.send(result.rows);
}
})
});
//get all channels by type
app.get('/:type_token', function (req, res) {
db.query("SELECT type_token, channel_token FROM messages WHERE type_token = $1 GROUP BY type_token, channel_token", [req.params.type_token], function(err, result) {
if (err) {
res.status(500).send(err);
} else {
res.send(result.rows);
}
})
});
//Create a new message
app.post('/:type_token/:channel_token', function(req, res){
db.query("INSERT INTO messages (type_token, channel_token, user_name, message_text) VALUES ($1, $2, $3, $4)", [req.params.type_token, req.params.channel_token, req.body.user_name, req.body.message_text], function(err, result) {
if (err) {
if (err.code == "23502") {
err.explanation = "Didn't get all of the parameters in the request body. Send user_name and message_text in the request body (remember this is a POST request)."
}
res.status(500).send(err);
} else {
res.send(result);
}
});
});
//Start the actual server
var server = app.listen(process.env.PORT, function () {
//server is actually running!
var host = server.address().address;
var port = server.address().port;
console.log('Listening at http://%s:%s', host, port);
});