Skip to content

Commit b0184f1

Browse files
committed
add upcoming and past routes to cores + capsules and fix order of cores and capsules with null launch dates
1 parent 9eb4016 commit b0184f1

File tree

4 files changed

+110
-2
lines changed

4 files changed

+110
-2
lines changed

src/controllers/v3/capsules.js

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
const find = require('../../builders/v3/find');
33
const limit = require('../../builders/v3/limit');
44
const offset = require('../../builders/v3/offset');
5+
const order = require('../../builders/v3/order');
56
const sort = require('../../builders/v3/sort');
67
const project = require('../../builders/v3/project');
78

@@ -11,9 +12,56 @@ module.exports = {
1112
* Returns all capsule information
1213
*/
1314
all: async ctx => {
15+
let data;
16+
let null_dates = [];
17+
if (!ctx.request.query.original_launch) {
18+
null_dates = await global.db
19+
.collection('capsule')
20+
.find(Object.assign({}, find(ctx.request), { original_launch: null }))
21+
.project(project(ctx.request.query))
22+
.sort(sort(ctx.request))
23+
.skip(offset(ctx.request.query))
24+
.limit(limit(ctx.request.query))
25+
.toArray();
26+
}
27+
const not_null_dates = await global.db
28+
.collection('capsule')
29+
.find(Object.assign({ original_launch: { $ne: null } }, find(ctx.request)))
30+
.project(project(ctx.request.query))
31+
.sort(sort(ctx.request))
32+
.skip(offset(ctx.request.query))
33+
.limit(limit(ctx.request.query))
34+
.toArray();
35+
if (order(ctx.request.query) === -1) {
36+
data = null_dates.concat(not_null_dates);
37+
} else {
38+
data = not_null_dates.concat(null_dates);
39+
}
40+
ctx.body = data;
41+
},
42+
43+
/**
44+
* Returns all capsules with non null dates
45+
*/
46+
past: async ctx => {
47+
const data = await global.db
48+
.collection('capsule')
49+
.find(Object.assign({}, find(ctx.request), { original_launch: { $ne: null } }))
50+
.project(project(ctx.request.query))
51+
.sort(sort(ctx.request))
52+
.skip(offset(ctx.request.query))
53+
.limit(limit(ctx.request.query))
54+
.toArray();
55+
ctx.body = data;
56+
},
57+
58+
/**
59+
* Returns all capsules with null original launches
60+
*/
61+
upcoming: async ctx => {
1462
const data = await global.db
1563
.collection('capsule')
16-
.find(find(ctx.request))
64+
.find(Object.assign({}, find(ctx.request), { original_launch: null }))
1765
.project(project(ctx.request.query))
1866
.sort(sort(ctx.request))
1967
.skip(offset(ctx.request.query))

src/controllers/v3/cores.js

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
const find = require('../../builders/v3/find');
33
const limit = require('../../builders/v3/limit');
44
const offset = require('../../builders/v3/offset');
5+
const order = require('../../builders/v3/order');
56
const sort = require('../../builders/v3/sort');
67
const project = require('../../builders/v3/project');
78

@@ -11,9 +12,56 @@ module.exports = {
1112
* Returns all core information
1213
*/
1314
all: async ctx => {
15+
let data;
16+
let null_dates = [];
17+
if (!ctx.request.query.original_launch) {
18+
null_dates = await global.db
19+
.collection('core')
20+
.find(Object.assign({}, find(ctx.request), { original_launch: null }))
21+
.project(project(ctx.request.query))
22+
.sort(sort(ctx.request))
23+
.skip(offset(ctx.request.query))
24+
.limit(limit(ctx.request.query))
25+
.toArray();
26+
}
27+
const not_null_dates = await global.db
28+
.collection('core')
29+
.find(Object.assign({ original_launch: { $ne: null } }, find(ctx.request)))
30+
.project(project(ctx.request.query))
31+
.sort(sort(ctx.request))
32+
.skip(offset(ctx.request.query))
33+
.limit(limit(ctx.request.query))
34+
.toArray();
35+
if (order(ctx.request.query) === -1) {
36+
data = null_dates.concat(not_null_dates);
37+
} else {
38+
data = not_null_dates.concat(null_dates);
39+
}
40+
ctx.body = data;
41+
},
42+
43+
/**
44+
* Returns all cores with non null dates
45+
*/
46+
past: async ctx => {
47+
const data = await global.db
48+
.collection('core')
49+
.find(Object.assign({}, find(ctx.request), { original_launch: { $ne: null } }))
50+
.project(project(ctx.request.query))
51+
.sort(sort(ctx.request))
52+
.skip(offset(ctx.request.query))
53+
.limit(limit(ctx.request.query))
54+
.toArray();
55+
ctx.body = data;
56+
},
57+
58+
/**
59+
* Returns all cores with null original launches
60+
*/
61+
upcoming: async ctx => {
1462
const data = await global.db
1563
.collection('core')
16-
.find(find(ctx.request))
64+
.find(Object.assign({}, find(ctx.request), { original_launch: null }))
1765
.project(project(ctx.request.query))
1866
.sort(sort(ctx.request))
1967
.skip(offset(ctx.request.query))

src/routes/v3/capsules.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ const v3 = new Router({
1010
// Returns all capsule information
1111
v3.get('/capsules', capsules.all);
1212

13+
// Returns all capsules with null launch dates
14+
v3.get('/capsules/upcoming', capsules.upcoming);
15+
16+
// Returns all capsules with non null launch dates
17+
v3.get('/capsules/past', capsules.past);
18+
1319
// Returns specific capsule information
1420
v3.get('/capsules/:cap', capsules.one);
1521

src/routes/v3/cores.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ const v3 = new Router({
1010
// Returns all core information
1111
v3.get('/cores', cores.all);
1212

13+
// Returns all cores with null launch dates
14+
v3.get('/cores/upcoming', cores.upcoming);
15+
16+
// Returns all cores with non null launch dates
17+
v3.get('/cores/past', cores.past);
18+
1319
// Returns specific core information
1420
v3.get('/cores/:core', cores.one);
1521

0 commit comments

Comments
 (0)