UserGroupSearchService.java

package de.dlr.shepard.common.search.services;

import de.dlr.shepard.auth.users.io.UserGroupIO;
import de.dlr.shepard.common.search.daos.SearchDAO;
import de.dlr.shepard.common.search.io.UserGroupSearchBody;
import de.dlr.shepard.common.search.io.UserGroupSearchResult;
import de.dlr.shepard.common.search.query.Neo4jQueryBuilder;
import de.dlr.shepard.common.search.query.QueryValidator;
import de.dlr.shepard.common.util.Constants;
import jakarta.enterprise.context.RequestScoped;
import jakarta.inject.Inject;

@RequestScoped
public class UserGroupSearchService {

  @Inject
  SearchDAO searchDAO;

  public UserGroupSearchResult search(UserGroupSearchBody userGroupSearchBody) {
    String selectionQuery = Neo4jQueryBuilder.userGroupSelectionQuery(userGroupSearchBody.getSearchParams().getQuery());
    QueryValidator.checkQuery(userGroupSearchBody.getSearchParams().getQuery());
    var userGroups = searchDAO.findUserGroups(selectionQuery, Constants.USERGROUP_IN_QUERY);
    var userGroupsIO = userGroups.stream().map(UserGroupIO::new).toArray(UserGroupIO[]::new);
    return new UserGroupSearchResult(userGroupsIO, userGroupSearchBody.getSearchParams());
  }
}