fixed NPE when sort strat. was null

This commit is contained in:
Jake Potrebic 2020-09-02 18:28:27 -07:00
parent 60b2a977c5
commit 0e0fe579be
No known key found for this signature in database
GPG Key ID: 7C58557EC9C421F8
3 changed files with 14 additions and 6 deletions

View File

@ -10,6 +10,7 @@ import io.papermc.hangar.model.generated.ProjectSortingStrategy;
import io.papermc.hangar.model.generated.ProjectStatsDay;
import io.papermc.hangar.model.generated.Tag;
import io.papermc.hangar.service.pluginupload.ProjectFiles;
import io.papermc.hangar.util.ApiUtil;
import io.papermc.hangar.util.RouteHelper;
import io.papermc.hangar.util.TemplateHelper;
import org.springframework.stereotype.Service;
@ -46,7 +47,7 @@ public class ProjectApiService {
}
public List<Project> getProjects(String pluginId, List<Category> categories, List<Tag> tags, String query, String owner, boolean seeHidden, Long requesterId, ProjectSortingStrategy sort, boolean orderWithRelevance, long limit, long offset) {
String ordering = sort.getSql();
String ordering = ApiUtil.strategyOrDefault(sort).getSql();
if (orderWithRelevance && query != null && !query.isEmpty()) {
String relevance = "ts_rank(p.search_words, websearch_to_tsquery_postfix('english', :query)) DESC";
if(query.endsWith(" ")) {
@ -56,7 +57,7 @@ public class ProjectApiService {
// 1483056000 is the Ore epoch
// 86400 seconds to days
// 604800 seconds to weeks
switch(sort){
switch(ApiUtil.strategyOrDefault(sort)){
case STARS: orderingFirstHalf = "p.starts * "; break;
case DOWNLOADS: orderingFirstHalf ="(p.downloads / 100) * "; break;
case VIEWS: orderingFirstHalf ="(p.views / 200) *"; break;

View File

@ -7,6 +7,7 @@ import io.papermc.hangar.model.generated.PaginatedCompactProjectResult;
import io.papermc.hangar.model.generated.ProjectCompact;
import io.papermc.hangar.model.generated.ProjectSortingStrategy;
import io.papermc.hangar.model.generated.User;
import io.papermc.hangar.util.ApiUtil;
import org.springframework.stereotype.Service;
import java.util.List;
@ -25,18 +26,18 @@ public class UserApiService {
}
public List<ProjectCompact> getWatchedProjects(String user, boolean seeHidden, Long userId, ProjectSortingStrategy strategy, long limit, long offset) {
return usersApiDao.get().watchersQuery(user, seeHidden, userId, strategy.getSql(), limit, offset);
return usersApiDao.get().watchersQuery(user, seeHidden, userId, ApiUtil.strategyOrDefault(strategy).getSql(), limit, offset);
}
public long getWatchedProjectsCount(String user, boolean seeHidden, Long userId) {
return usersApiDao.get().watchersQuery(user, seeHidden, userId, ProjectSortingStrategy.VIEWS.getSql(), null, 0).size();
return usersApiDao.get().watchersQuery(user, seeHidden, userId, ProjectSortingStrategy.Default.getSql(), null, 0).size();
}
public List<ProjectCompact> getStarredProjects(String user, boolean seeHidden, Long userId, ProjectSortingStrategy strategy, long limit, long offset) {
return usersApiDao.get().starredQuery(user, seeHidden, userId, strategy.getSql(), limit, offset);
return usersApiDao.get().starredQuery(user, seeHidden, userId, ApiUtil.strategyOrDefault(strategy).getSql(), limit, offset);
}
public long getStarredProjectsCount(String user, boolean seeHidden, Long userId) {
return usersApiDao.get().starredQuery(user, seeHidden, userId, ProjectSortingStrategy.VIEWS.getSql(), null, 0).size();
return usersApiDao.get().starredQuery(user, seeHidden, userId, ProjectSortingStrategy.Default.getSql(), null, 0).size();
}
}

View File

@ -1,6 +1,8 @@
package io.papermc.hangar.util;
import io.papermc.hangar.db.model.UsersTable;
import io.papermc.hangar.model.generated.ProjectSortingStrategy;
import org.jetbrains.annotations.Nullable;
import org.springframework.http.HttpStatus;
import org.springframework.web.server.ResponseStatusException;
@ -31,4 +33,8 @@ public class ApiUtil {
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "Badly formatted date " + date);
}
}
public static ProjectSortingStrategy strategyOrDefault(@Nullable ProjectSortingStrategy strategy) {
return strategy == null ? ProjectSortingStrategy.Default : strategy;
}
}