1 package de.dlr.shepard.common.search.services;
2
3 import de.dlr.shepard.auth.users.entities.User;
4 import de.dlr.shepard.auth.users.services.UserService;
5 import de.dlr.shepard.common.search.daos.SearchDAO;
6 import de.dlr.shepard.common.search.io.TimeseriesSearchBody;
7 import de.dlr.shepard.common.search.io.TimeseriesSearchResult;
8 import de.dlr.shepard.common.search.query.TimeseriesInContainerQueryBuilder;
9 import de.dlr.shepard.data.timeseries.io.TimeseriesIO;
10 import jakarta.enterprise.context.RequestScoped;
11 import jakarta.inject.Inject;
12
13 @RequestScoped
14 public class TimeseriesSearchService {
15
16 @Inject
17 UserService userService;
18
19 @Inject
20 SearchDAO searchDAO;
21
22 public TimeseriesSearchResult search(Long containerId, TimeseriesSearchBody timeseriesSearchBody) {
23 User user = userService.getCurrentUser();
24 String jsonQuery = timeseriesSearchBody.getSearchParams().getQuery();
25 String query = TimeseriesInContainerQueryBuilder.searchTimeseriesInContainerQuery(
26 containerId,
27 jsonQuery,
28 user.getUsername()
29 );
30 TimeseriesIO[] timeseriesIO = searchDAO.findTimeseries(query).map(TimeseriesIO::new).toArray(TimeseriesIO[]::new);
31 return new TimeseriesSearchResult(timeseriesIO, timeseriesSearchBody.getSearchParams());
32 }
33 }