package Ġio . arch ime de sf w . data . jdbc Ċ Ċ import Ġio . arch ime de sf w . data . Criteria Ċ import Ġio . arch ime de sf w . data . Order Ċ Ċ class ĠQuery Builder ( select : ĠString ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġsb Ġ= ĠStringBuilder ( select ) ĊĠĠĠ Ġprivate Ġval Ġ_ bindings Ġ= Ġmutable ListOf < Any ?> () ĊĠĠĠ Ġprivate Ġvar Ġgroup By : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠorderBy : ĠOrder ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġlimit : ĠInt ? Ġ= Ġnull ĊĊĠĠĠ Ġval Ġbindings : ĠList < Any ?> Ġby Ġ:: _ bindings ĊĊĠĠĠ Ġfun Ġwhere ( criteria : ĠCriteria < *> ): ĠQuery Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġsb . append (" Ġwhere Ġ") ĊĠĠĠĠĠĠĠ Ġcriteria . to Sql ( sb , Ġ_ bindings ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgroup ( by : ĠString ): ĠQuery Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġgroup By Ġ= Ġby ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġorder ( by : ĠString , Ġdirection : ĠOrder . Direction ): ĠQuery Builder Ġ= Ġorder ( Order ( by , Ġdirection )) ĊĠĠĠ Ġfun Ġorder ( by : ĠOrder ): ĠQuery Builder Ġ{ ĊĠĠĠĠĠĠĠ ĠorderBy Ġ= Ġby ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlimit ( limit : ĠInt ): ĠQuery Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . limit Ġ= Ġlimit ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġto Sql (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġgroup By ?. let Ġ{ Ġsb . append (" Ġgroup Ġby Ġ"). append ( it ) Ġ} ĊĠĠĠĠĠĠĠ ĠorderBy ?. let Ġ{ Ġsb . append (" Ġorder Ġby Ġ"). append ( it . by ). append (' Ġ'). append ( it . direction ) Ġ} ĊĠĠĠĠĠĠĠ Ġlimit ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append (" Ġlimit Ġ? ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ bindings . add ( limit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsb . toString () ĊĠĠĠ Ġ} Ċ Ċ } Ċ