InContext

io.getquill.sql.norm.InContext
See theInContext companion object
case class InContext(from: List[FromContext])

Simple utility that checks if if an AST entity refers to a entity. It traverses through the context types to find out what kind of context a variable refers to. For example, in a query like:

query[Pair].map(p => Pair(p.a, p.b)).distinct.map(p => (p.b, p.a))

Yielding SQL like this:

SELECT p.b, p.a FROM (SELECT DISTINCT p.a, p.b FROM pair p) AS p

the inner p.a and p.b will have a TableContext while the outer p.b and p.a will have a QueryContext.

Note that there are some cases where the id of a field is not in a FromContext at all. For example, in a query like this:

query[Human].filter(h => query[Robot].filter(r => r.friend == h.id).nonEmpty)

Where the sql produced is something like this:

SELECT h.id FROM human h WHERE EXISTS (SELECT r.* FROM robot r WHERE r.friend = h.id)

the field r.friend`` is selected from a sub-query of an SQL operation (i.e.EXISTS (...)`) so a from-context of it will not exist at all. When deciding which properties to treat as sub-select properties (e.g. if we want to make sure NOT to apply a naming-schema on them) we need to take care to understand that we may not know the FromContext that a property comes from since it may not exist.

Attributes

Companion
object
Graph
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all

Members list

Value members

Concrete methods

def isSubselect(ast: Ast): Boolean

Inherited methods

Attributes

Inherited from:
Product

Attributes

Inherited from:
Product