1 package de.dlr.shepard.common.search.services;
2
3 import de.dlr.shepard.auth.users.io.UserGroupIO;
4 import de.dlr.shepard.common.search.daos.SearchDAO;
5 import de.dlr.shepard.common.search.io.UserGroupSearchBody;
6 import de.dlr.shepard.common.search.io.UserGroupSearchResult;
7 import de.dlr.shepard.common.search.query.Neo4jQueryBuilder;
8 import de.dlr.shepard.common.search.query.QueryValidator;
9 import de.dlr.shepard.common.util.Constants;
10 import jakarta.enterprise.context.RequestScoped;
11 import jakarta.inject.Inject;
12
13 @RequestScoped
14 public class UserGroupSearchService {
15
16 @Inject
17 SearchDAO searchDAO;
18
19 public UserGroupSearchResult search(UserGroupSearchBody userGroupSearchBody) {
20 String selectionQuery = Neo4jQueryBuilder.userGroupSelectionQuery(userGroupSearchBody.getSearchParams().getQuery());
21 QueryValidator.checkQuery(userGroupSearchBody.getSearchParams().getQuery());
22 var userGroups = searchDAO.findUserGroups(selectionQuery, Constants.USERGROUP_IN_QUERY);
23 var userGroupsIO = userGroups.stream().map(UserGroupIO::new).toArray(UserGroupIO[]::new);
24 return new UserGroupSearchResult(userGroupsIO, userGroupSearchBody.getSearchParams());
25 }
26 }