Skip to content

Commit

Permalink
Fix #126: Translate sortBy and sortOrder parameters from vscode adapter
Browse files Browse the repository at this point in the history
  • Loading branch information
spoenemann committed Jun 15, 2020
1 parent 9515a19 commit 8f9ef9c
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import org.eclipse.openvsx.search.ExtensionSearch;
import org.eclipse.openvsx.search.SearchService;
import org.eclipse.openvsx.util.CollectionUtil;
import org.eclipse.openvsx.util.ErrorResultException;
import org.eclipse.openvsx.util.NotFoundException;
import org.eclipse.openvsx.util.UrlUtil;
import org.springframework.beans.factory.annotation.Autowired;
Expand Down Expand Up @@ -82,8 +83,12 @@ public ExtensionQueryResult extensionQuery(@RequestBody ExtensionQueryParam para
String queryString = null;
String category = null;
PageRequest pageRequest;
String sortOrder;
String sortBy;
if (param.filters == null || param.filters.isEmpty()) {
pageRequest = PageRequest.of(0, 20);
sortBy = "relevance";
sortOrder = "desc";
} else {
var filter = param.filters.get(0);
var extensionId = filter.findCriterion(FILTER_EXTENSION_ID);
Expand All @@ -100,10 +105,16 @@ public ExtensionQueryResult extensionQuery(@RequestBody ExtensionQueryParam para
queryString = filter.findCriterion(FILTER_TAG);
category = filter.findCriterion(FILTER_CATEGORY);
pageRequest = PageRequest.of(filter.pageNumber - 1, filter.pageSize);
sortOrder = getSortOrder(filter.sortOrder);
sortBy = getSortBy(filter.sortBy);
}

var searchResult = search.search(queryString, category, pageRequest, null, null);
return findExtensions(searchResult, param.flags);
try {
var searchResult = search.search(queryString, category, pageRequest, sortOrder, sortBy);
return findExtensions(searchResult, param.flags);
} catch (ErrorResultException exc) {
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, exc.getMessage(), exc);
}
}

private ExtensionQueryResult findExtension(long id, int flags) {
Expand Down Expand Up @@ -149,6 +160,28 @@ private ExtensionQueryResult findExtensions(Page<ExtensionSearch> searchResult,
return result;
}

private String getSortBy(int sortBy) {
switch (sortBy) {
case 4: // InstallCount
return "downloadCount";
case 5: // PublishedDate
return "timestamp";
case 6: // AverageRating
return "averageRating";
default:
return "relevance";
}
}

private String getSortOrder(int sortOrder) {
switch (sortOrder) {
case 1: // Ascending
return "asc";
default:
return "desc";
}
}

@GetMapping("/vscode/asset/{namespace}/{extensionName}/{version}/{assetType:.+}")
@CrossOrigin
@Transactional
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ public Page<ExtensionSearch> search(String queryString, String category, Pageabl
queryBuilder.withFilter(QueryBuilders.matchPhraseQuery("categories", category));
}

if (!"asc".equals(sortOrder) && !"desc".equals(sortOrder)) {
if (!"asc".equalsIgnoreCase(sortOrder) && !"desc".equalsIgnoreCase(sortOrder)) {
throw new ErrorResultException("sortOrder parameter must be either 'asc' or 'desc'.");
}

Expand Down

0 comments on commit 8f9ef9c

Please sign in to comment.