1 package io.github.magwas.inez.query;
2
3 import java.util.List;
4 import java.util.stream.Stream;
5
6 import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.stereotype.Service;
8
9 import io.github.magwas.inez.Bridi;
10 import io.github.magwas.inez.element.BridiElementFactory;
11 import io.github.magwas.inez.parse.ParseTextService;
12 import io.github.magwas.inez.storage.SaveBridiService;
13 import io.github.magwas.runtime.LogUtil;
14
15 @Service
16 public class CreateBridisFromQueryService {
17 @Autowired
18 ParseTextService parseText;
19
20 @Autowired
21 CreateBridisFromParserOutputService createBridisFromParserOutput;
22
23 @Autowired
24 SaveBridiService saveBridi;
25
26 @Autowired
27 BridiElementFactory bridiElementFactory;
28
29 public Stream<Bridi> apply(final String query) {
30 LogUtil.debug("create(" + query);
31 List<Bridi> toSave = parseText
32 .apply(query)
33 .map(createBridisFromParserOutput)
34 .flatMap(x -> x)
35 .peek(x -> LogUtil.debug("saving", x))
36 .toList();
37 saveBridi.apply(toSave);
38 toSave.forEach(x -> bridiElementFactory.apply(x.id()));
39 return toSave.stream();
40 }
41 }