case class InContext(from: List[FromContext]) extends Product with Serializable
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.
- Alphabetic
- By Inheritance
- InContext
- Serializable
- Product
- Equals
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new InContext(from: List[FromContext])
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def contextReferenceType(ast: Ast): Option[InContextType]
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- val from: List[FromContext]
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def isEntityReference(ast: Ast): Boolean
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def isSubselect(ast: Ast): Boolean
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- def productElementNames: Iterator[String]
- Definition Classes
- Product
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()