Skip to content

Commit dc8373c

Browse files
fix x-headers
1 parent f4507b3 commit dc8373c

8 files changed

+33
-8
lines changed

src/common/helper.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,23 @@ async function scan (modelName, scanParams) {
295295
})
296296
}
297297

298+
/**
299+
* Get all data collection (avoid default page limit of DynamoDB) by scan parameters
300+
* @param {Object} modelName The dynamoose model name
301+
* @param {Object} scanParams The scan parameters object
302+
* @returns {Array}
303+
*/
304+
async function scanAll (modelName, scanParams) {
305+
let results = await models[modelName].scan(scanParams).exec()
306+
let lastKey = results.lastKey
307+
while (!_.isUndefined(results.lastKey)) {
308+
const newResult = await models[modelName].scan(scanParams).startAt(lastKey).exec()
309+
results = [...results, ...newResult]
310+
lastKey = newResult.lastKey
311+
}
312+
return results
313+
}
314+
298315
/**
299316
* Test whether the given value is partially match the filter.
300317
* @param {String} filter the filter
@@ -918,6 +935,7 @@ module.exports = {
918935
create,
919936
update,
920937
scan,
938+
scanAll,
921939
validateDuplicate,
922940
partialMatch,
923941
validatePhases,

src/controllers/ChallengeTimelineTemplateController.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
*/
44
const HttpStatus = require('http-status-codes')
55
const service = require('../services/ChallengeTimelineTemplateService')
6+
const helper = require('../common/helper')
67

78
/**
89
* Search challenge type timeline templates.
@@ -11,7 +12,8 @@ const service = require('../services/ChallengeTimelineTemplateService')
1112
*/
1213
async function searchChallengeTimelineTemplates (req, res) {
1314
const result = await service.searchChallengeTimelineTemplates(req.query)
14-
res.send(result)
15+
helper.setResHeaders(req, res, result)
16+
res.send(result.result)
1517
}
1618

1719
/**

src/services/AuditLogService.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ const helper = require('../common/helper')
1515
async function searchAuditLogs (criteria) {
1616
const page = criteria.page || 1
1717
const perPage = criteria.perPage || 50
18-
let records = await helper.scan('AuditLog')
18+
let records = await helper.scanAll('AuditLog')
1919
// TODO this needs to be in ES
2020
if (criteria.fieldName) records = _.filter(records, e => helper.partialMatch(criteria.fieldName, e.fieldName))
2121
if (criteria.createdDateStart) records = _.filter(records, e => criteria.createdDateStart.getTime() <= e.created.getTime())

src/services/ChallengeTimelineTemplateService.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,17 @@ const constants = require('../../app-constants')
1616
* @returns {Array} the search result
1717
*/
1818
async function searchChallengeTimelineTemplates (criteria) {
19-
let records = await helper.scan('ChallengeTimelineTemplate')
19+
let records = await helper.scanAll('ChallengeTimelineTemplate')
2020
if (criteria.typeId) records = _.filter(records, e => (criteria.typeId === e.typeId))
2121
if (criteria.trackId) records = _.filter(records, e => (criteria.trackId === e.trackId))
2222
if (criteria.timelineTemplateId) records = _.filter(records, e => (criteria.timelineTemplateId === e.timelineTemplateId))
2323
if (!_.isUndefined(criteria.isDefault)) records = _.filter(records, e => (e.isDefault === (criteria.isDefault === 'true')))
24-
return records
24+
return {
25+
total: records.length,
26+
page: 1,
27+
perPage: Math.max(records.length, 10),
28+
result: records
29+
}
2530
}
2631

2732
searchChallengeTimelineTemplates.schema = {

src/services/ChallengeTrackService.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ const constants = require('../../app-constants')
1616
*/
1717
async function searchChallengeTracks (criteria) {
1818
// TODO - move this to ES
19-
let records = await helper.scan('ChallengeTrack')
19+
let records = await helper.scanAll('ChallengeTrack')
2020
const page = criteria.page || 1
2121
const perPage = criteria.perPage || 50
2222

src/services/ChallengeTypeService.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ const constants = require('../../app-constants')
1515
*/
1616
async function searchChallengeTypes (criteria) {
1717
// TODO - move this to ES
18-
let records = await helper.scan('ChallengeType')
18+
let records = await helper.scanAll('ChallengeType')
1919
const page = criteria.page || 1
2020
const perPage = criteria.perPage || 50
2121

src/services/PhaseService.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ const constants = require('../../app-constants')
1717
async function searchPhases (criteria) {
1818
const page = criteria.page || 1
1919
const perPage = criteria.perPage || 50
20-
const list = await helper.scan('Phase')
20+
const list = await helper.scanAll('Phase')
2121
const records = _.filter(list, e => helper.partialMatch(criteria.name, e.name))
2222
const total = records.length
2323
const result = records.slice((page - 1) * perPage, page * perPage)

src/services/TimelineTemplateService.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ const constants = require('../../app-constants')
1717
async function searchTimelineTemplates (criteria) {
1818
const page = criteria.page || 1
1919
const perPage = criteria.perPage || 50
20-
const list = await helper.scan('TimelineTemplate')
20+
const list = await helper.scanAll('TimelineTemplate')
2121
const records = _.filter(list, e => helper.partialMatch(criteria.name, e.name))
2222
const total = records.length
2323
const result = records.slice((page - 1) * perPage, page * perPage)

0 commit comments

Comments
 (0)