package Ġio . ko ala ql . query . built Ċ Ċ import Ġio . ko ala ql . identifier . Named Ċ import Ġio . ko ala ql . query .* Ċ import Ġio . ko ala ql . sql . Scope Ċ Ċ class ĠBuilt Relation Ġ{ ĊĠĠĠ Ġlateinit Ġvar Ġrelation : ĠRelation ĊĊĠĠĠ Ġvar Ġexplicit Alias : ĠAlias ? Ġ= Ġnull ĊĠĠĠ Ġlateinit Ġvar Ġcomputed Alias : ĠAlias ĊĊĠĠĠ Ġfun Ġset Aliases ( explicit Alias : ĠAlias ?, Ġdefault Alias : ĠAlias ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . explicit Alias Ġ= Ġexplicit Alias ĊĠĠĠĠĠĠĠ Ġcomputed Alias Ġ= Ġexplicit Alias ?: default Alias ?: Alias () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpopulate Scope ( scope : ĠScope ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnames Ġ= Ġwhen Ġ( val Ġrelation Ġ= Ġrelation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠTable Relation Ġ-> Ġrelation . columns . map Ġ{ Ġit Ġto ĠNamed ( it . symbol ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSub query Ġ-> Ġrelation . of . columns . map Ġ{ Ġit Ġto Ġscope . names [ it ] Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠC te Ġ-> Ġscope . cte Columns ( relation ). map Ġ{ Ġit Ġto Ġscope . names [ it ] Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠEmpty Relation Ġ-> Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġnames . forEach Ġ{ Ġ( name , Ġsymbol ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope . internal ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexplicit Alias ?. get ( name ) ?: name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsymbol , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomputed Alias ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġfrom ( builder : ĠRelation Builder ): ĠBuilt Relation Ġ= Ġwith Ġ( builder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBuilt Relation (). also Ġ{ Ġit . build Into Relation () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }