Skip to content

Commit 0bafc52

Browse files
committed
Added full support for subscribing to requests and unsubscribing also improved storing
1 parent 746d8c3 commit 0bafc52

File tree

1 file changed

+54
-50
lines changed

1 file changed

+54
-50
lines changed

index.js

+54-50
Original file line numberDiff line numberDiff line change
@@ -60,24 +60,44 @@ app.post('/files', function(req, res) {fileDriver.handleUploadRequest(req, res);
6060
app.get('/files/:id', function(req, res) {fileDriver.handleGet(req, res);});
6161

6262
// The / is the base. The : means this HAS to be included AND means it's a placeholder for the actual path!. But putting a ? means it can or cannot be added with no problem.
63-
app.get('/:firstParameter', function(req, res) { //A
64-
var params = req.params; //B
65-
var query = req.query.query; // req.query gets the whole "query" part at the end of the URL and adding .query indicates a query to be perform on this "query" part of the request
66-
if (query) {
67-
query = JSON.parse(query);
68-
collectionDriver.query(req.params.firstParameter, query, returnCollectionResults(req, res));
69-
} else {
70-
collectionDriver.findAll(req.params.firstParameter, returnCollectionResults(req, res));
71-
}
63+
64+
app.get('/:firstParameter/:secondParameter?/:thirdParameter?', function(req, res) { //I
65+
var params = req.params;
66+
var firstParameter = params.firstParameter;
67+
var secondParameter = params.secondParameter;
68+
var thirdParameter = params.thirdParameter
69+
var query = req.query.query; // req.query gets the whole "query" part at the end of the URL and adding .query indicates a query to be perform on this "query" part of the request
70+
if (firstParameter && !secondParameter && !thirdParameter) {
71+
if (query) {
72+
query = JSON.parse(query);
73+
collectionDriver.query(req.params.firstParameter, query, returnCollectionResults(params.firstParameter, req, res));
74+
} else {
75+
collectionDriver.findAll(req.params.firstParameter, returnCollectionResults(params.firstParameter, req, res));
76+
}
77+
} else if (firstParameter && secondParameter && !thirdParameter) {
78+
collectionDriver.get(firstParameter, secondParameter, function(error, objs) { //J
79+
if (error) { res.send(400, error); }
80+
else { res.send(200, objs); } //K
81+
});
82+
} else if (firstParameter && secondParameter && thirdParameter) {
83+
if (query) {
84+
query = JSON.parse(query); // Isn't going in here and it's because I'm not giving the query correctly which I got to fix...
85+
collectionDriver.query(req.params.thirdParameter, query, returnCollectionResults(firstParameter + '/' + secondParameter + '/' + thirdParameter, req, res));
86+
} else {
87+
collectionDriver.findAll(secondParameter + '/' + thirdParameter, returnCollectionResults(firstParameter + '/' + secondParameter + '/' + thirdParameter, req, res));
88+
}
89+
} else {
90+
res.send(400, {error: 'bad url', url: req.url});
91+
}
7292
});
7393

74-
function returnCollectionResults(req,res) {
94+
function returnCollectionResults(titleForTableDisplay, req, res) {
7595
return function(error, objs) { // 5
7696
if (error) {
7797
res.send(400, error); } //D
7898
else {
7999
if (req.accepts('html')) { //E
80-
res.render('data',{objects: objs, collection: req.params.collection}); //F //This is not ideal I want to see all the req params tbh
100+
res.render('data',{objects: objs, collection: titleForTableDisplay}); //F //This is not ideal I want to see all the req params tbh
81101
} else {
82102
res.set('Content-Type','application/json'); //G
83103
res.send(200, objs); //H
@@ -86,37 +106,14 @@ return function(error, objs) { // 5
86106
};
87107
};
88108

89-
app.get('/:firstParameter/:secondParameter/:thirdParameter?', function(req, res) { //I
90-
var params = req.params;
91-
var firstParameter = params.firstParameter;
92-
var secondParameter = params.secondParameter;
93-
var thirdParameter = params.thirdParameter
94-
var query = req.query.query; // req.query gets the whole "query" part at the end of the URL and adding .query indicates a query to be perform on this "query" part of the request
95-
var test = req.query;
96-
if (secondParameter && !thirdParameter) {
97-
collectionDriver.get(firstParameter, secondParameter, function(error, objs) { //J
98-
if (error) { res.send(400, error); }
99-
else { res.send(200, objs); } //K
100-
});
101-
} else if (thirdParameter) {
102-
if (query) {
103-
query = JSON.parse(query); // Isn't going in here and it's because I'm not giving the query correctly which I got to fix...
104-
collectionDriver.query(req.params.thirdParameter, query, returnCollectionResults(req, res));
105-
} else {
106-
collectionDriver.findAll(req.params.thirdParameter, returnCollectionResults(req, res));
107-
}
108-
} else {
109-
res.send(400, {error: 'bad url', url: req.url});
110-
}
111-
});
112-
113109
//Post methods
114110
app.post('/:firstParameter/:secondParameter?/:thirdParameter?', function(req, res) { //A
115111
var object = req.body;
116112
var firstParameter = req.params.firstParameter;
113+
var secondParameter = req.params.secondParameter;
117114
var thirdParameter = req.params.thirdParameter
118115
if (thirdParameter) {
119-
collectionDriver.save(thirdParameter, object, function(err,docs) {
116+
collectionDriver.save(secondParameter + '/' + thirdParameter, object, function(err,docs) {
120117
if (err) { res.send(400, err);}
121118
else {
122119
res.send(201, docs); } //B
@@ -128,8 +125,8 @@ app.post('/:firstParameter/:secondParameter?/:thirdParameter?', function(req, re
128125
});
129126
}
130127
});
131-
// Update method
132128

129+
// Update method
133130
app.put('/:firstParameter/:secondParameter', function(req, res) { //A
134131
var params = req.params;
135132
var secondParameter = params.secondParameter;
@@ -147,19 +144,26 @@ app.put('/:firstParameter/:secondParameter', function(req, res) { //A
147144

148145
// Delete method
149146

150-
app.delete('/:firstParameter/:secondParameter', function(req, res) { //A
151-
var params = req.params;
152-
var secondParameter = params.secondParameter;
153-
var firstParameter = params.firstParameter;
154-
if (secondParameter) {
155-
collectionDriver.delete(firstParameter, secondParameter, function(error, objs) { //B
156-
if (error) { res.send(400, error); }
157-
else { res.send(200, objs); } //C 200 b/c includes the original doc
158-
});
159-
} else {
160-
var error = { "message" : "Cannot DELETE a whole collection (firstParameter)" };
161-
res.send(400, error);
162-
}
147+
app.delete('/:firstParameter/:secondParameter?/:thirdParameter?/:fourthParameter?', function(req, res) { //A
148+
var params = req.params;
149+
var firstParameter = params.firstParameter;
150+
var secondParameter = params.secondParameter;
151+
var thirdParameter = params.thirdParameter;
152+
var fourthParameter = params.fourthParameter;
153+
if (secondParameter && !fourthParameter) {
154+
collectionDriver.delete(firstParameter, secondParameter, function(error, objs) { //B
155+
if (error) { res.send(400, error); }
156+
else { res.send(200, objs); } //C 200 b/c includes the original doc
157+
});
158+
} else if (fourthParameter) {
159+
collectionDriver.delete(secondParameter + '/' + thirdParameter, fourthParameter, function(error, objects) {
160+
if error { res.send(400, error); }
161+
else { res.send(200, objects); }
162+
});
163+
} else {
164+
var error = { "message" : "Cannot DELETE a whole collection (firstParameter)" };
165+
res.send(400, error);
166+
}
163167
});
164168
//2
165169

0 commit comments

Comments
 (0)