Skip to content
This repository was archived by the owner on Mar 13, 2025. It is now read-only.

Commit c1d369d

Browse files
committed
Search user mapping fix.
1 parent e1db3ae commit c1d369d

File tree

3 files changed

+32
-15
lines changed

3 files changed

+32
-15
lines changed

src/common/db-helper.js

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -94,16 +94,13 @@ async function scanAll(model, size, lastKey) {
9494
/**
9595
* Get data collection by scan with search
9696
* @param {Object} model The dynamoose model to scan
97-
* @param {String} size The size of result
98-
* @param {String} lastKey The lastKey param
9997
* @param {String} containsKey The contains key param
10098
* @param {String} contains The contains value
10199
* @returns {Promise<void>}
102100
*/
103-
async function scanAllWithSearch(model, size, lastKey, containsKey, contains) {
101+
async function scanAllWithSearch(model, containsKey, contains) {
104102
return await new Promise((resolve, reject) => {
105-
const scanMethod = model.scan(containsKey).contains(contains).limit(size);
106-
if (lastKey) scanMethod.startAt(lastKey);
103+
const scanMethod = model.scan(containsKey).contains(contains).all();
107104
scanMethod.exec((err, result) => {
108105
if (err) {
109106
logger.error(`DynamoDB scan error ${err}`);

src/front/src/app/user-mappings/user-mappings-controller.js

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ angular.module('topcoderX')
1515
totalPages: 1,
1616
initialized: false,
1717
query: '',
18-
lastKey: []
18+
lastKey: [],
19+
pages: 1
1920
};
2021

2122
$scope.addUserMapping = function () {
@@ -40,7 +41,14 @@ angular.module('topcoderX')
4041
config.isLoading = true;
4142
UserMappingsService.search(config.query, config.sortBy, config.sortDir, config.pageNumber, config.pageSize, config.lastKey[config.pageNumber]) // eslint-disable-line max-len
4243
.then(function (res) {
43-
config.items = res.data.docs;
44+
if (config.query) {
45+
config.allItems = res.data.docs;
46+
config.items = config.allItems.slice(0, config.pageSize);
47+
config.pages = Math.ceil(config.allItems.length / config.pageSize);
48+
}
49+
else {
50+
config.items = res.data.docs;
51+
}
4452
if (res.data.lastKey && (res.data.lastKey.githubLastKey || res.data.lastKey.gitlabLastKey)) {
4553
config.lastKey[config.pageNumber + 1] = res.data.lastKey;
4654
if (!config.pages || config.pages <= config.pageNumber) {
@@ -122,21 +130,37 @@ angular.module('topcoderX')
122130
if (pageNumber === 0 || pageNumber > $scope.tableConfig.pages ||
123131
(pageNumber === $scope.tableConfig.pages &&
124132
$scope.tableConfig.pageNumber === pageNumber)) {
125-
return false;
133+
return false;
126134
}
127135
$scope.tableConfig.pageNumber = pageNumber;
128-
$scope.getUserMappings();
136+
if ($scope.tableConfig.query && $scope.tableConfig.allItems) {
137+
var start = ($scope.tableConfig.pageNumber - 1) * $scope.tableConfig.pageSize - 1;
138+
if (pageNumber === 1) {
139+
start = 0;
140+
}
141+
$scope.tableConfig.items = $scope.tableConfig.allItems.slice(
142+
start, $scope.tableConfig.pageSize);
143+
$scope.tableConfig.initialized = true;
144+
$scope.tableConfig.isLoading = false;
145+
}
146+
else {
147+
$scope.getUserMappings();
148+
}
129149
};
130150

131151
$scope.onSearchIconClicked = function () {
132152
$scope.tableConfig.pageNumber = 1;
153+
$scope.tableConfig.pages = 1;
154+
$scope.tableConfig.allItems = [];
133155
$scope.getUserMappings();
134156
};
135157

136158
$scope.onSearchReset = function () {
137159
var config = $scope.tableConfig;
138160
config.query = '';
139161
$scope.tableConfig.pageNumber = 1;
162+
$scope.tableConfig.pages = 1;
163+
$scope.tableConfig.allItems = [];
140164
$scope.getUserMappings();
141165
};
142166

src/services/UserService.js

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -187,16 +187,12 @@ async function search(criteria) {
187187
if (criteria.query) {
188188
githubUserMappings = await dbHelper.scanAllWithSearch(
189189
GithubUserMapping,
190-
criteria.perPage / 2, // eslint-disable-line
191-
criteria.githubLastKey ? JSON.parse(criteria.githubLastKey) : undefined, // eslint-disable-line
192190
'topcoderUsername',
193-
criteria.query.toLowerCase());
191+
criteria.query);
194192
gitlabUserMappings = await dbHelper.scanAllWithSearch(
195193
GitlabUserMapping,
196-
criteria.perPage / 2, // eslint-disable-line
197-
criteria.gitlabLastKey ? JSON.parse(criteria.gitlabLastKey) : undefined, // eslint-disable-line
198194
'topcoderUsername',
199-
criteria.query.toLowerCase());
195+
criteria.query);
200196
}
201197
else {
202198
githubUserMappings = await dbHelper.scanAll(

0 commit comments

Comments
 (0)