Skip to content

Commit e29f27f

Browse files
authored
Merge pull request #54 from narekcat/issue-51
fix: for issue 51, add support sorting by 'GET /resources' endpoint
2 parents a1e5cc6 + 3e97cf0 commit e29f27f

File tree

6 files changed

+24
-7
lines changed

6 files changed

+24
-7
lines changed

config/default.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ module.exports = {
3333
// AWS_SECRET_ACCESS_KEY: process.env.AWS_FAKE_KEY,
3434
AWS_REGION: process.env.AWS_REGION || 'us-east-1',
3535
IS_LOCAL_DB: process.env.IS_LOCAL_DB ? process.env.IS_LOCAL_DB === 'true' : true,
36-
URL: process.env.DYNAMODB_URL || 'http://localhost:8000',
36+
DYNAMODB_URL: process.env.DYNAMODB_URL || 'http://localhost:8000',
3737
AWS_READ_UNITS: process.env.AWS_READ_UNITS || 4,
3838
AWS_WRITE_UNITS: process.env.AWS_WRITE_UNITS || 2,
3939
TIMEOUT: process.env.DYNAMODB_TIMEOUT || 10000

docs/swagger.yaml

+10
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,16 @@ paths:
7272
format: UUID
7373
in: query
7474
required: false
75+
- name: sortBy
76+
type: string
77+
description: Sort the results by the field.
78+
in: query
79+
required: false
80+
- name: sortOrder
81+
type: string
82+
description: Order the results by the asc/desc.
83+
in: query
84+
required: false
7585
responses:
7686
'200':
7787
description: OK - the request was successful

src/controllers/ResourceController.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ const helper = require('../common/helper')
1111
* @param {Object} res the response
1212
*/
1313
async function getResources (req, res) {
14-
const result = await service.getResources(req.authUser, req.query.challengeId, req.query.roleId, req.query.page, req.query.perPage)
14+
const result = await service.getResources(req.authUser, req.query.challengeId, req.query.roleId, req.query.page, req.query.perPage, req.query.sortBy, req.query.sortOrder)
1515
helper.setResHeaders(req, res, result)
1616
res.send(result.data)
1717
}

src/init-es.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,11 @@ const initES = async () => {
3131
const body = { mappings: {} }
3232
body.mappings[config.get('ES.ES_TYPE')] = {
3333
properties: {
34-
id: { type: 'keyword' }
34+
id: { type: 'keyword' },
35+
memberHandle: {
36+
type: 'text',
37+
fielddata: true
38+
}
3539
}
3640
}
3741

src/scripts/create-tables.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const logger = require('../common/logger')
99
logger.info('Requesting to create tables...')
1010

1111
const promises = []
12-
const skipModels = ['DynamoDB', 'MemberStats', 'MemberProfile']
12+
const skipModels = ['DynamoDB', 'MemberProfile']
1313

1414
Object.keys(models).forEach(modelName => {
1515
if (!includes(skipModels, modelName)) {

src/services/ResourceService.js

+6-3
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ async function checkAccess (currentUser, resources) {
4444
* @param {Number} perPage The number of items to list per page
4545
* @returns {Array} the search result
4646
*/
47-
async function getResources (currentUser, challengeId, roleId, page, perPage) {
47+
async function getResources (currentUser, challengeId, roleId, page, perPage, sortBy, sortOrder) {
4848
if (!validateUUID(challengeId)) {
4949
throw new errors.BadRequestError(`Challenge ID ${challengeId} must be a valid v5 Challenge Id (UUID)`)
5050
}
@@ -118,7 +118,8 @@ async function getResources (currentUser, challengeId, roleId, page, perPage) {
118118
bool: {
119119
must: mustQuery
120120
}
121-
}
121+
},
122+
sort: [{ [sortBy]: { 'order': sortOrder } }]
122123
}
123124
}
124125
const esClient = await helper.getESClient()
@@ -180,7 +181,9 @@ getResources.schema = {
180181
challengeId: Joi.id(),
181182
roleId: Joi.optionalId(),
182183
page: Joi.page(),
183-
perPage: Joi.perPage()
184+
perPage: Joi.perPage(),
185+
sortBy: Joi.string().valid('memberHandle', 'created').required(),
186+
sortOrder: Joi.string().valid('desc', 'asc').required()
184187
}
185188

186189
/**

0 commit comments

Comments
 (0)