mirror of
https://github.com/HangarMC/Hangar.git
synced 2025-03-19 15:40:50 +08:00
fixed NPE when sort strat. was null
This commit is contained in:
parent
60b2a977c5
commit
0e0fe579be
@ -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;
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user