io.getquill.context.sql.norm.nested

Members list

Type members

Classlikes

object Elements

Attributes

Supertypes
class Object
trait Matchable
class Any
Self type
Elements.type
class FindUnexpressedInfixes(select: List[OrderedSelect], traceConfig: TraceConfig)

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:

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

Supertypes
class Object
trait Matchable
class Any