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 @Autowired
20 CreateBridisFromParserOutputService createBridisFromParserOutput;
21 @Autowired
22 SaveBridiService saveBridi;
23 @Autowired
24 BridiElementFactory bridiElementFactory;
25
26 public Stream<Bridi> apply(String query) {
27 LogUtil.debug("create(" + query);
28 List<Bridi> toSave = parseText.apply(query)
29 .map(createBridisFromParserOutput).flatMap(x -> x)
30 .peek(x -> LogUtil.debug("saving", x)).toList();
31 saveBridi.apply(toSave);
32 toSave.forEach(x -> bridiElementFactory.apply(x.id()));
33 return toSave.stream();
34 }
35
36 }