Skip to content

Commit

Permalink
add upcoming and past routes to cores + capsules and fix order of cor…
Browse files Browse the repository at this point in the history
…es and capsules with null launch dates
  • Loading branch information
jakewmeyer committed Dec 12, 2018
1 parent 9eb4016 commit b0184f1
Show file tree
Hide file tree
Showing 4 changed files with 110 additions and 2 deletions.
50 changes: 49 additions & 1 deletion src/controllers/v3/capsules.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
const find = require('../../builders/v3/find');
const limit = require('../../builders/v3/limit');
const offset = require('../../builders/v3/offset');
const order = require('../../builders/v3/order');
const sort = require('../../builders/v3/sort');
const project = require('../../builders/v3/project');

Expand All @@ -11,9 +12,56 @@ module.exports = {
* Returns all capsule information
*/
all: async ctx => {
let data;
let null_dates = [];
if (!ctx.request.query.original_launch) {
null_dates = await global.db
.collection('capsule')
.find(Object.assign({}, find(ctx.request), { original_launch: null }))
.project(project(ctx.request.query))
.sort(sort(ctx.request))
.skip(offset(ctx.request.query))
.limit(limit(ctx.request.query))
.toArray();
}
const not_null_dates = await global.db
.collection('capsule')
.find(Object.assign({ original_launch: { $ne: null } }, find(ctx.request)))
.project(project(ctx.request.query))
.sort(sort(ctx.request))
.skip(offset(ctx.request.query))
.limit(limit(ctx.request.query))
.toArray();
if (order(ctx.request.query) === -1) {
data = null_dates.concat(not_null_dates);
} else {
data = not_null_dates.concat(null_dates);
}
ctx.body = data;
},

/**
* Returns all capsules with non null dates
*/
past: async ctx => {
const data = await global.db
.collection('capsule')
.find(Object.assign({}, find(ctx.request), { original_launch: { $ne: null } }))
.project(project(ctx.request.query))
.sort(sort(ctx.request))
.skip(offset(ctx.request.query))
.limit(limit(ctx.request.query))
.toArray();
ctx.body = data;
},

/**
* Returns all capsules with null original launches
*/
upcoming: async ctx => {
const data = await global.db
.collection('capsule')
.find(find(ctx.request))
.find(Object.assign({}, find(ctx.request), { original_launch: null }))
.project(project(ctx.request.query))
.sort(sort(ctx.request))
.skip(offset(ctx.request.query))
Expand Down
50 changes: 49 additions & 1 deletion src/controllers/v3/cores.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
const find = require('../../builders/v3/find');
const limit = require('../../builders/v3/limit');
const offset = require('../../builders/v3/offset');
const order = require('../../builders/v3/order');
const sort = require('../../builders/v3/sort');
const project = require('../../builders/v3/project');

Expand All @@ -11,9 +12,56 @@ module.exports = {
* Returns all core information
*/
all: async ctx => {
let data;
let null_dates = [];
if (!ctx.request.query.original_launch) {
null_dates = await global.db
.collection('core')
.find(Object.assign({}, find(ctx.request), { original_launch: null }))
.project(project(ctx.request.query))
.sort(sort(ctx.request))
.skip(offset(ctx.request.query))
.limit(limit(ctx.request.query))
.toArray();
}
const not_null_dates = await global.db
.collection('core')
.find(Object.assign({ original_launch: { $ne: null } }, find(ctx.request)))
.project(project(ctx.request.query))
.sort(sort(ctx.request))
.skip(offset(ctx.request.query))
.limit(limit(ctx.request.query))
.toArray();
if (order(ctx.request.query) === -1) {
data = null_dates.concat(not_null_dates);
} else {
data = not_null_dates.concat(null_dates);
}
ctx.body = data;
},

/**
* Returns all cores with non null dates
*/
past: async ctx => {
const data = await global.db
.collection('core')
.find(Object.assign({}, find(ctx.request), { original_launch: { $ne: null } }))
.project(project(ctx.request.query))
.sort(sort(ctx.request))
.skip(offset(ctx.request.query))
.limit(limit(ctx.request.query))
.toArray();
ctx.body = data;
},

/**
* Returns all cores with null original launches
*/
upcoming: async ctx => {
const data = await global.db
.collection('core')
.find(find(ctx.request))
.find(Object.assign({}, find(ctx.request), { original_launch: null }))
.project(project(ctx.request.query))
.sort(sort(ctx.request))
.skip(offset(ctx.request.query))
Expand Down
6 changes: 6 additions & 0 deletions src/routes/v3/capsules.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,12 @@ const v3 = new Router({
// Returns all capsule information
v3.get('/capsules', capsules.all);

// Returns all capsules with null launch dates
v3.get('/capsules/upcoming', capsules.upcoming);

// Returns all capsules with non null launch dates
v3.get('/capsules/past', capsules.past);

// Returns specific capsule information
v3.get('/capsules/:cap', capsules.one);

Expand Down
6 changes: 6 additions & 0 deletions src/routes/v3/cores.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,12 @@ const v3 = new Router({
// Returns all core information
v3.get('/cores', cores.all);

// Returns all cores with null launch dates
v3.get('/cores/upcoming', cores.upcoming);

// Returns all cores with non null launch dates
v3.get('/cores/past', cores.past);

// Returns specific core information
v3.get('/cores/:core', cores.one);

Expand Down

0 comments on commit b0184f1

Please sign in to comment.