Package

io.getquill.sql

norm

Permalink

package norm

Visibility
  1. Public
  2. All

Type Members

  1. case class InContext(from: List[FromContext]) extends Product with Serializable

    Permalink

    Simple utility that checks if if an AST entity refers to a entity.

    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.

  2. case class ProtractQuat(refersToEntity: Boolean) extends Product with Serializable

    Permalink
  3. case class References(state: State) extends StatefulTransformer[State] with Product with Serializable

    Permalink
  4. case class RemoveExtraAlias(strategy: NamingStrategy) extends StatelessQueryTransformer with Product with Serializable

    Permalink

    Remove aliases at the top level of the AST since they are not needed (quill uses select row indexes to figure out what data corresponds to what encodeable object) as well as entities whose aliases are the same as their selection e.g.

    Remove aliases at the top level of the AST since they are not needed (quill uses select row indexes to figure out what data corresponds to what encodeable object) as well as entities whose aliases are the same as their selection e.g. "select x.foo as foo" since this just adds syntactic noise.

  5. case class SelectPropertyProtractor(from: List[FromContext]) extends Product with Serializable

    Permalink
  6. case class State(ident: Ident, references: List[Property]) extends Product with Serializable

    Permalink
  7. trait StatelessQueryTransformer extends AnyRef

    Permalink

Value Members

  1. object InContext extends Serializable

    Permalink
  2. object RemoveUnusedSelects

    Permalink

    Filter out unused subquery properties.

    Filter out unused subquery properties. This is safe to do after ExpandNestedQueries now since all properties have been propagated from quats from parent to child SQL select trees.

  3. object VendorizeBooleans extends StatelessTransformer

    Permalink

Ungrouped