package Ġco . anit rend . support . query . builder . dsl Ċ Ċ import Ġandroidx . sqlite . db . Simple SQLite Query Ċ import Ġandroidx . sqlite . db . Support SQLite Query Ċ import Ġco . anit rend . support . query . builder . core . contract . Abstract QueryBuilder Ċ import Ġco . anit rend . support . query . builder . core . contract . query . I QueryBuilder Ċ import Ġco . anit rend . support . query . builder . core . criteria . Criteria Ċ import Ġco . anit rend . support . query . builder . core . criteria . extensions . and Ċ import Ġco . anit rend . support . query . builder . core . criteria . extensions . or Ċ import Ġco . anit rend . support . query . builder . core . from . From Ċ import Ġco . anit rend . support . query . builder . core . order . extensions . order Asc Ċ import Ġco . anit rend . support . query . builder . core . order . extensions . order Desc Ċ import Ġco . anit rend . support . query . builder . core . projection . Projection Ċ import Ġco . anit rend . support . query . builder . core . projection . extensions . as Column Ċ import Ġorg . jetbrains . annotations . Test Only Ċ import Ġjava . math . BigDecimal Ċ Ċ fun ĠAbstract QueryBuilder . select ( ĊĠĠĠ Ġprojection s : ĠList < Projection > Ċ ) Ġ= Ġalso Ġ{ Ġthis . projection s . addAll ( projection s ) Ġ} Ċ Ċ fun ĠAbstract QueryBuilder . select ( ĊĠĠĠ Ġvar arg Ġcolumns : ĠString Ċ ) Ġ= Ġselect ( columns . as Column ()) Ċ Ċ infix Ġfun ĠAbstract QueryBuilder . select ( ĊĠĠĠ Ġcolumn : ĠString Ċ ) Ġ= Ġalso Ġ{ Ġthis . projection s . add ( column . as Column ()) Ġ} Ċ Ċ infix Ġfun ĠAbstract QueryBuilder . select ( ĊĠĠĠ Ġcolumn : ĠProjection Ċ ) Ġ= Ġalso Ġ{ Ġthis . projection s . add ( column ) Ġ} Ċ Ċ infix Ġfun ĠAbstract QueryBuilder . from ( ĊĠĠĠ Ġfrom : ĠFrom Ċ ) Ġ= Ġalso Ġ{ Ġthis . from Ġ= Ġfrom Ġ} Ċ Ċ infix Ġfun ĠAbstract QueryBuilder . from ( ĊĠĠĠ Ġsub Query : ĠI QueryBuilder Ċ ) Ġ= Ġalso Ġ{ Ġthis . from Ġ= ĠFrom . Sub Query ( sub Query ) Ġ} Ċ Ċ infix Ġfun ĠAbstract QueryBuilder . from ( ĊĠĠĠ Ġtable : ĠString Ċ ) Ġ= Ġalso Ġ{ Ġthis . from Ġ= ĠFrom . Table ( table ) Ġ} Ċ Ċ infix Ġfun ĠAbstract QueryBuilder . where ( ĊĠĠĠ Ġcriteria : ĠCriteria Ċ ) Ġ= Ġalso Ġ{ Ġthis . criteria Ġ= Ġcriteria Ġ} Ċ Ċ infix Ġfun ĠAbstract QueryBuilder . where And ( ĊĠĠĠ Ġcriteria : ĠCriteria Ċ ) Ġ= Ġalso Ġ{ Ġthis . criteria Ġ= Ġthis . criteria Ġand Ġcriteria Ġ} Ċ Ċ infix Ġfun ĠAbstract QueryBuilder . where Or ( ĊĠĠĠ Ġcriteria : ĠCriteria Ċ ) Ġ= Ġalso Ġ{ Ġthis . criteria Ġ= Ġthis . criteria Ġor Ġcriteria Ġ} Ċ Ċ infix Ġfun ĠAbstract QueryBuilder . groupBy ( ĊĠĠĠ Ġprojection s : ĠList < Projection . Column > Ċ ) Ġ= Ġalso Ġ{ Ġthis . projection s . addAll ( projection s ) Ġ} Ċ Ċ fun ĠAbstract QueryBuilder . groupBy ( ĊĠĠĠ Ġvar arg Ġcolumns : ĠString Ċ ) Ġ= Ġgroup By ( columns . as Column ()) Ċ Ċ fun ĠAbstract QueryBuilder . clear GroupBy () Ġ= Ġalso Ġ{ ĊĠĠĠ Ġthis . groupBy . clear () Ċ } Ċ Ċ fun ĠAbstract QueryBuilder . orderBy Ascending ( ĊĠĠĠ Ġprojection s : ĠList < Projection . Column >, Ġignore Case : ĠBoolean Ċ ) Ġ= Ġalso Ġ{ Ġthis . orderBy . addAll ( projection s . map Ġ{ Ġit . order Asc ( ignore Case ) Ġ}) Ġ} Ċ Ċ fun ĠAbstract QueryBuilder . orderBy Ascending ( ĊĠĠĠ Ġvar arg Ġcolumns : ĠString , Ġignore Case : ĠBoolean Ċ ) Ġ= ĠorderBy Ascending ( columns . as Column (), Ġignore Case ) Ċ Ċ fun ĠAbstract QueryBuilder . orderBy Descending ( ĊĠĠĠ Ġprojection s : ĠList < Projection . Column >, Ġignore Case : ĠBoolean Ċ ) Ġ= Ġalso Ġ{ Ġthis . orderBy . addAll ( projection s . map Ġ{ Ġit . order Desc ( ignore Case ) Ġ}) Ġ} Ċ Ċ fun ĠAbstract QueryBuilder . orderBy Descending ( ĊĠĠĠ Ġvar arg Ġcolumns : ĠString , Ġignore Case : ĠBoolean Ċ ) Ġ= ĠorderBy Descending ( columns . as Column (), Ġignore Case ) Ċ Ċ fun ĠAbstract QueryBuilder . clear OrderBy () Ġ= Ġalso Ġ{ ĊĠĠĠ Ġthis . orderBy . clear () Ċ } Ċ Ċ infix Ġfun ĠAbstract QueryBuilder . skip ( skip : ĠInt ) Ġ= Ġalso Ġ{ ĊĠĠĠ Ġthis . skip Ġ= Ġskip Ċ } Ċ Ċ infix Ġfun ĠAbstract QueryBuilder . take ( take : ĠInt ) Ġ= Ġalso Ġ{ ĊĠĠĠ Ġthis . skip Ġ= Ġtake Ċ } Ċ Ċ infix Ġfun ĠAbstract QueryBuilder . distinct ( distinct : ĠBoolean ) Ġ= Ġalso Ġ{ ĊĠĠĠ Ġthis . distinct Ġ= Ġdistinct Ċ } Ċ Ċ infix Ġfun ĠAbstract QueryBuilder . union ( query : ĠAbstract QueryBuilder ) Ġ= Ġalso Ġ{ ĊĠĠĠ Ġquery . union All Ġ= Ġfalse ĊĠĠĠ Ġthis . union Query Builders . add ( query ) Ċ } Ċ Ċ infix Ġfun ĠAbstract QueryBuilder . union All ( query : ĠAbstract QueryBuilder ) Ġ= Ġalso Ġ{ ĊĠĠĠ Ġquery . union All Ġ= Ġtrue ĊĠĠĠ Ġthis . union Query Builders . add ( query ) Ċ } Ċ Ċ fun ĠAbstract QueryBuilder . as Support SQLite Query () Ġ: ĠSupport SQLite Query Ġ{ ĊĠĠĠ Ġreturn ĠSimple SQLite Query ( build (), Ġbuild Parameters (). to Typed Array ()) Ċ } ĊĊ Ċ @ Test Only Ċ internal Ġfun ĠAbstract QueryBuilder . as Full Sql String (): ĠString Ġ{ ĊĠĠĠ Ġfun Ġappend Esc aped SQL String ( sb : ĠStringBuilder , Ġsql String : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsb . append (' \' ') ĊĠĠĠĠĠĠĠ Ġif Ġ( sql String . indexOf (' \' ') Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġsql String . length ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġlength ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġsql String [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( c Ġ== Ġ'\' ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append (' \' ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( c ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġsb . append ( sql String ) ĊĠĠĠĠĠĠĠ Ġsb . append (' \' ') ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠAny . to Plain String (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Ġ-> Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFloat Ġ-> ĠBigDecimal ( this . toDouble ()). strip Trailing Z eros (). to Plain String () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDouble Ġ-> ĠBigDecimal ( this ). strip Trailing Z eros (). to Plain String () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthis . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġparameters Ġ= Ġbuild Parameters () ĊĠĠĠ Ġvar Ġsql Ġ= Ġbuild () ĊĠĠĠ Ġfor Ġ( p Ġin Ġparameters ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstringBuilder Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġappend Esc aped SQL String ( string Builder , Ġp . to Plain String ()) ĊĠĠĠĠĠĠĠ Ġsql Ġ= Ġsql . replace First ("\\ ? ". to Regex (), ĠstringBuilder . toString ()) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġsql Ċ }