Closed comdiv closed 7 years ago
Фагим, в описании нашей задачи #6 https://github.com/iskkonekb/kuvera/issues/6 я не увидел вызова метода Apply для SubQueries. Метод CollectSubresults тоже его не выполняет вызывая collector. Так вот если collector должен сделать Apply применив условия для SubQueries тогда FilterSubQueries это аналог CollectSubresults. Но вызов его целесообразно сделать именно здесь по причине того, что это не является ответственность метода Sum запускать отдельные выборки из Query. Это воспитывать чужих детей (SubQueries = Childrens) :-)
corrected
https://github.com/iskkonekb/kuvera/blob/9f30c1354cb10ee676d7daf1aae0a009c4a08f6f/iskkonekb.kuvera.model/Query.cs#L64
Эта строка ошибочная.
Есть 2 вида отношений между запросами
Наследование, реализуется через свойство Parent - оно позволяет сделать базовый запрос или контектс его еще называют и указать его другому запросу и так передать в него общее условие. Например у нас есть заготовка запроса "сумма платежей за еду и за транспорт за вычетом домашней выпечки", в нем выставлена категория и допустим, что это расходы. Но мы же хотим этот запрос в разных контекстах, например по проекту или по дате. И есть задача выгнать большой отчет за 2 департамента за 3 месяца. Вот этот запрос "2 департамента 3 месяца" мы можем сделать контекстом , указать его всем запросам как Parent и соответственно все вычисления будут в этих рамках идти. Наследование буквально так и следует воспринимать "наследование свойств родителя", то есть "Conditions" ибо больше у Query ничего особо и нет
Совсем другое дело - композиция запросов, которая реализуется через SubQueries - композиция разбивает вычисление наружнего запроса (контейнера) на внутренние (подзапросы). С родительско-наследственными отношениями это никак не связано. То есть у всех запросов в SubQueries могут быть разные Parent или не быть вообще - это никак не связано с контейнером. И SubQueries идут в увязке с QueryType= Sum, если QueryType - Primary, значит он сам по себе и есть первичный и далее не декомпозируется, если же он Sum, то нужно обсчитать все SubQueries и вычислить сумму.
Соответственно в строке 64 текущего файла Query
Эти вещи симешаны -
FilterSubQueries(result)
тут непричем - это ошибка - тут их быть не должно. И в постановке #6 этого и не былоОй так вообще непраивльно
Например сделан QueryType и нигде не использован, собственно это часть Query должна была быть...
Собственно потому как с Engine надо было начать - одно тянет другое. Не в том порядке начали делать. И вот путаница пошла...