Repository navigation
Expand file tree
/
Copy pathserver.js
More file actions
121 lines (103 loc) · 4.15 KB
/
Copy pathserver.js
File metadata and controls
121 lines (103 loc) · 4.15 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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
// ===========================================================
// RESTful services exposed via Nodejs,express and mongoose
// ===========================================================
// load 3rd party modules
var express = require('express');
var app = express();
// load our custom data access module
var DataAccess = require('./models');
// ===========================================================
// ===========================================================
// find one record for a candidate
// ===========================================================
app.get('/candidate/findone/:name', function(req, res) {
DataAccess.ContributionModel.findOne({'candNm' : req.params.name}, function (err, result) {
if (result != null) {
res.json(result);
}
else {
res.send('No records found for candidate name ' + req.params.name);
}
});
});
// ===============================================================
// AD-HOC: Return the total count of transactions for a candidate
// ===============================================================
app.get('/candidate/count/:name', function(req, res) {
DataAccess.ContributionModel.count({'candNm' : req.params.name}, function (err, result) {
if (result != null) {
res.send(result + ' records found for candidate ' + req.params.name);
}
else {
res.send('No records found for candidate name ' + req.params.name);
}
});
});
// =================================================================================
// RUN MAP REDUCE #1 : TRANSACTION COUNT, TOTAL DOLLARS CONTRIBUTED (BY CANDIDATE)
// =================================================================================
app.get('/candidate/candidatetxnsummary', function(req, res) {
DataAccess.CandidateTransactionSummaryModel.find({}, function (err, result) {
if (result != null) {
res.json(result);
}
else {
res.send('No records found');
}
});
});
// ===========================================================
// RUN MAP REDUCE #2 : FIND MAX AND MIN CONTRIBUTION AMOUNTS PER CANDIDATE
// ===========================================================
app.get('/candidate/maxmincontribspercandidate', function(req, res) {
DataAccess.MaxMinContribsPerCandidateModel.find({}, function (err, result) {
if (result != null) {
res.json(result);
}
else {
res.send('No records found');
}
});
});
// ===========================================================
// RUN MAP REDUCE #3 : FIND TOTAL CONTRIBUTION FROM A Company
// ===========================================================
app.get('/candidate/totalcontributionsbycompany/:companyname', function(req, res) {
DataAccess.TotalContributionsByCompanyModel.find({'_id': req.params.companyname}, function (err, result) {
if (result != null) {
res.json(result);
}
else {
res.send('No records found');
}
});
});
// ==============================================================
// AD HOC : return all records for a candidate (use carefully)
// ==============================================================
app.get('/candidate/findall/:name', function(req, res) {
DataAccess.ContributionModel.find({'candNm' : req.params.name}, function (err, results) {
res.writeHead(200, {'Content-Type': 'text/html'});
if (results != null) {
results.forEach(function(record){
res.write(JSON.stringify(record));
res.write("<br/><br/>");
});
res.end();
}
else {
res.send('No records found for candidate name ' + req.params.name);
}
});
});
// ==============================================================
// basic health check
// ==============================================================
app.get('/', function(req, resp) {
resp.send('code is running');
});
// ==============================================================
//start server
// ==============================================================
app.listen(3000);
console.log('Listening localhost:3000');