mirror of
https://github.com/HangarMC/Hangar.git
synced 2025-03-13 15:39:18 +08:00
push current poor attempt at project list api
This commit is contained in:
parent
5a3e626884
commit
7c1c096c86
@ -0,0 +1,47 @@
|
||||
package me.minidigger.hangar.db.dao.api;
|
||||
|
||||
import org.jdbi.v3.sqlobject.config.RegisterBeanMapper;
|
||||
import org.jdbi.v3.sqlobject.customizer.AllowUnusedBindings;
|
||||
import org.jdbi.v3.sqlobject.statement.SqlQuery;
|
||||
import org.jdbi.v3.stringtemplate4.UseStringTemplateEngine;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import me.minidigger.hangar.model.Category;
|
||||
import me.minidigger.hangar.model.generated.Project;
|
||||
import me.minidigger.hangar.model.generated.Tag;
|
||||
|
||||
@Repository
|
||||
@RegisterBeanMapper(Project.class)
|
||||
public interface ProjectApiDao {
|
||||
|
||||
@UseStringTemplateEngine
|
||||
@SqlQuery("SELECT p.created_at," +
|
||||
" p.plugin_id," +
|
||||
" p.name," +
|
||||
" p.owner_name," +
|
||||
" p.slug," +
|
||||
" p.promoted_versions," +
|
||||
" p.views," +
|
||||
" p.downloads," +
|
||||
" p.recent_views," +
|
||||
" p.recent_downloads," +
|
||||
" p.stars," +
|
||||
" p.watchers," +
|
||||
" p.category," +
|
||||
" p.description," +
|
||||
" COALESCE(p.last_updated, p.created_at) AS last_updated," +
|
||||
" p.visibility, " +//"<user_actions_taken>" +
|
||||
" ps.homepage," +
|
||||
" ps.issues," +
|
||||
" ps.source," +
|
||||
" ps.support," +
|
||||
" ps.license_name," +
|
||||
" ps.license_url," +
|
||||
" ps.forum_sync" +
|
||||
" FROM home_projects p" +
|
||||
" JOIN projects ps ON p.id = ps.id") // TODO add all the missing filters
|
||||
@AllowUnusedBindings // todo remove
|
||||
List<Project> listProjects(String pluginId, List<Category> categories, List<Tag> tags, String query, String owner, boolean seeHidden, Long requesterId, String ordering, long limit, long offset);
|
||||
}
|
@ -5,6 +5,7 @@ import me.minidigger.hangar.db.dao.HangarDao;
|
||||
import me.minidigger.hangar.db.dao.ProjectDao;
|
||||
import me.minidigger.hangar.db.dao.UserDao;
|
||||
import me.minidigger.hangar.db.dao.VisibilityDao;
|
||||
import me.minidigger.hangar.db.dao.api.ProjectApiDao;
|
||||
import me.minidigger.hangar.db.model.ProjectVersionsTable;
|
||||
import me.minidigger.hangar.db.model.ProjectVisibilityChangesTable;
|
||||
import me.minidigger.hangar.db.model.ProjectsTable;
|
||||
@ -49,15 +50,17 @@ public class ProjectService {
|
||||
private final HangarDao<ProjectDao> projectDao;
|
||||
private final HangarDao<UserDao> userDao;
|
||||
private final HangarDao<VisibilityDao> visibilityDao;
|
||||
private final HangarDao<ProjectApiDao> projectApiDao;
|
||||
private final UserService userService;
|
||||
private final FlagService flagService;
|
||||
|
||||
@Autowired
|
||||
public ProjectService(HangarConfig hangarConfig, HangarDao<ProjectDao> projectDao, HangarDao<UserDao> userDao, HangarDao<VisibilityDao> visibilityDao, UserService userService, FlagService flagService) {
|
||||
public ProjectService(HangarConfig hangarConfig, HangarDao<ProjectDao> projectDao, HangarDao<UserDao> userDao, HangarDao<VisibilityDao> visibilityDao, HangarDao<ProjectApiDao> projectApiDao, UserService userService, FlagService flagService) {
|
||||
this.hangarConfig = hangarConfig;
|
||||
this.projectDao = projectDao;
|
||||
this.userDao = userDao;
|
||||
this.visibilityDao = visibilityDao;
|
||||
this.projectApiDao = projectApiDao;
|
||||
this.userService = userService;
|
||||
this.flagService = flagService;
|
||||
}
|
||||
@ -192,8 +195,16 @@ public class ProjectService {
|
||||
return projectDao.get().getUnhealthyProjects(hangarConfig.projects.getStaleAge().toMillis());
|
||||
}
|
||||
|
||||
public List<Project> getProjects(String pluginId, List<Category> categories, List<Tag> parsedTags, String query, String owner, boolean seeHidden, Long requesterId, ProjectSortingStrategy sort, boolean relevance, long limit, long offset) {
|
||||
return List.of(getProjectApi("test")); // TODO getProjects query
|
||||
public List<Project> getProjects(String pluginId, List<Category> categories, List<Tag> tags, String query, String owner, boolean seeHidden, Long requesterId, ProjectSortingStrategy sort, boolean relevance, long limit, long offset) {
|
||||
String ordering;
|
||||
if (relevance && query != null && !query.isEmpty()) {
|
||||
// TODO implement ordering by relevance, see APIVV2Queries#199
|
||||
ordering = sort.getSql();
|
||||
} else {
|
||||
ordering = sort.getSql();
|
||||
}
|
||||
|
||||
return projectApiDao.get().listProjects(pluginId, categories, tags, query, owner, seeHidden, requesterId, ordering, limit, offset);
|
||||
}
|
||||
|
||||
public long countProjects(String pluginId, List<Category> categories, List<Tag> parsedTags, String query, String owner, boolean seeHidden, Long requesterId) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user