FindUnexpressedInfixes
The challenge with appending infixes (that have not been used but are still needed) back into the query, is that they could be inside of tuples/case-classes that have already been selected, or inside of sibling elements which have been selected. Take for instance a query that looks like this:
query[Person].map(p => (p.name, (p.id,
sql"foo(${p.other})".as[Int]))).map(p => (p._1, p._2._1))
In this situation, p.id
which is the sibling of the non-selected infix has been selected via p._2._1
(whose select-order is List(1,0) to represent 1st element in 2nd tuple. We need to add it's sibling infix.
Or take the following situation:
query[Person].map(p => (p.name,
(p.id, sql"foo(${p.other})".as[Int]))).map(p => (p._1, p._2))
In this case, we have selected the entire 2nd element including the infix. We need to know that P._2._2
does not need to be selected since p._2
was.
In order to do these things, we use the order
property from OrderedSelect
in order to see which sub-sub-...-element has been selected. If p._2
(that has order List(1)
) has been selected, we know that any infixes inside of it e.g. p._2._1
(ordering List(1,0)
) does not need to be.
Attributes
- Graph
-
- Supertypes
-
class Objecttrait Matchableclass Any