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
- Serializable
- Product
- Equals
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
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[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
- def contextReferenceType(ast: Ast): Option[InContextType]
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
- val from: List[FromContext]
-
final
def
getClass(): Class[_]
- 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()
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )