feature: support search group & project in global system (#178)

* feat: add global search api

* featï: add global search menu
This commit is contained in:
vran
2022-05-16 08:55:41 +08:00
committed by GitHub
parent 59570a9ee6
commit ff3f2e111f
47 changed files with 227 additions and 49 deletions

View File

@@ -0,0 +1,33 @@
package com.databasir.core.domain.search;
import com.databasir.core.domain.search.converter.SearchResponseConverter;
import com.databasir.core.domain.search.data.SearchResponse;
import com.databasir.dao.impl.GroupDao;
import com.databasir.dao.impl.ProjectDao;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@Service
@RequiredArgsConstructor
public class SearchService {
private final ProjectDao projectDao;
private final GroupDao groupDao;
private final SearchResponseConverter searchResponseConverter;
public SearchResponse search(String query) {
var groupPojoList = groupDao.selectByName(query);
var groupResults = searchResponseConverter.toGroupResults(groupPojoList);
var projectList = projectDao.selectByProjectNameOrDatabaseOrSchemaOrGroup(query);
var projectResults = searchResponseConverter.toProjectResults(projectList);
// build response
SearchResponse response = new SearchResponse();
response.setGroups(groupResults);
response.setProjects(projectResults);
// TODO support Table search
return response;
}
}

View File

@@ -0,0 +1,16 @@
package com.databasir.core.domain.search.converter;
import com.databasir.core.domain.search.data.SearchResponse;
import com.databasir.dao.tables.pojos.GroupPojo;
import com.databasir.dao.value.ProjectQueryPojo;
import org.mapstruct.Mapper;
import java.util.List;
@Mapper(componentModel = "spring")
public interface SearchResponseConverter {
List<SearchResponse.GroupSearchResult> toGroupResults(List<GroupPojo> groups);
List<SearchResponse.ProjectSearchResult> toProjectResults(List<ProjectQueryPojo> projects);
}

View File

@@ -0,0 +1,51 @@
package com.databasir.core.domain.search.data;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Collections;
import java.util.List;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class SearchResponse {
@Builder.Default
private List<GroupSearchResult> groups = Collections.emptyList();
@Builder.Default
private List<ProjectSearchResult> projects = Collections.emptyList();
@Data
public static class GroupSearchResult {
private Integer id;
private String name;
private String description;
}
@Data
public static class ProjectSearchResult {
private Integer projectId;
private Integer groupId;
private String groupName;
private String projectName;
private String projectDescription;
private String databaseName;
private String schemaName;
}
}