package Ġde . let escape . k ouch . database Ċ Ċ import Ġcom . google . gson . JsonObject Ċ import Ġcom . google . gson . annotations . SerializedName Ċ import Ġde . let escape . k ouch . documents . Document Ċ import Ġkotlin . reflect . K Property 1 Ċ Ċ data Ġclass Ġ ĠSelection ( ĊĠĠĠ Ġval Ġselector : ĠMap < String , Ġ* >, ĊĠĠĠ Ġval Ġlimit : ĠInt ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġskip : ĠInt ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġsort : ĠList < Map < String , ĠString >> ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġfields : ĠList < String >? Ġ= Ġnull , ĊĠĠĠ Ġ@ SerializedName (" use _ index ") ĊĠĠĠ Ġval Ġuse Index : ĠList < String >? Ġ= Ġnull , ĊĠĠĠ Ġval Ġbookmark : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġupdate : ĠBoolean ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġstable : ĠBoolean ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġstale : ĠString ? Ġ= Ġnull Ċ ) Ċ Ċ data Ġclass ĠSelection Result < T : ĠDocument < T >>( ĊĠĠĠ Ġval Ġdocs : ĠList < T >, ĊĠĠĠ Ġval Ġwarning : ĠString ?, ĊĠĠĠ Ġval Ġbookmark : ĠString Ċ ) Ċ Ċ class ĠSelection Builder < T Ġ: ĠDocument < T >> Ġ{ ĊĠĠĠ Ġprivate Ġval Ġselector Ġ= Ġmutable Map Of < String , ĠMutable Map < String , ĠAny ? >>() ĊĠĠĠ Ġprivate Ġval Ġsort Ġ= Ġmutable ListOf < Map < String , ĠString >>() ĊĠĠĠ Ġvar Ġfields : ĠList < String >? Ġ= Ġnull ĊĠĠĠ Ġvar Ġlimit : ĠInt ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġskip : ĠInt ? Ġ= Ġnull ĊĠĠĠ Ġval Ġuse Index : ĠList < String >? Ġ= Ġnull ĊĠĠĠ Ġval Ġbookmark : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġval Ġupdate : ĠBoolean ? Ġ= Ġnull ĊĠĠĠ Ġval Ġstable : ĠBoolean ? Ġ= Ġnull ĊĠĠĠ Ġval Ġstale : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġin fix Ġfun Ġ< V > ĠK Property 1 < T , ĠV >. eq ( value : ĠV ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Selector ( name , Ġ" eq ", Ġvalue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġin fix Ġfun Ġ< V > ĠK Property 1 < T , ĠV >. lt ( value : ĠV ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Selector ( name , Ġ" lt ", Ġvalue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġin fix Ġfun Ġ< V > ĠK Property 1 < T , ĠV >. lte ( value : ĠV ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Selector ( name , Ġ" lte ", Ġvalue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġin fix Ġfun Ġ< V > ĠK Property 1 < T , ĠV >. ne ( value : ĠV ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Selector ( name , Ġ" ne ", Ġvalue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġin fix Ġfun Ġ< V > ĠK Property 1 < T , ĠV >. gte ( value : ĠV ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Selector ( name , Ġ" gte ", Ġvalue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġin fix Ġfun Ġ< V > ĠK Property 1 < T , ĠV >. gt ( value : ĠV ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Selector ( name , Ġ" gt ", Ġvalue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġin fix Ġfun ĠK Property 1 < T , ĠString >. regex ( regex : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Selector ( name , Ġ" regex ", Ġregex ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġin fix Ġfun ĠK Property 1 < T , Ġ* >. sort ( direction : ĠDirection ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsort . add ( map Of ( name Ġto Ġdirection . string )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Selector ( field : ĠString , Ġoperator : ĠString , Ġvalue : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( selector . containsKey ( field )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselector [ field ] !! [" \ $$ operator "] Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselector [ field ] Ġ= Ġmutable Map Of ("\ $$ operator " Ġto Ġvalue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġbuild (): ĠSelection Ġ= ĠSelection ( ĊĠĠĠĠĠĠĠ Ġselector , ĊĠĠĠĠĠĠĠ Ġlimit , ĊĠĠĠĠĠĠĠ Ġskip , ĊĠĠĠĠĠĠĠ Ġif Ġ( sort . isEmpty ()) Ġnull Ġelse Ġsort , ĊĠĠĠĠĠĠĠ Ġfields , ĊĠĠĠĠĠĠĠ Ġuse Index , ĊĠĠĠĠĠĠĠ Ġbookmark , ĊĠĠĠĠĠĠĠ Ġupdate , ĊĠĠĠĠĠĠĠ Ġstable , ĊĠĠĠĠĠĠĠ Ġstale ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġinline Ġval Ġasc Ġget () Ġ= ĠDirection . ASC ĊĠĠĠ Ġinline Ġval Ġdesc Ġget () Ġ= ĠDirection . DESC ĊĊĠĠĠ Ġenum Ġclass ĠDirection ( val Ġstring : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠASC (" asc "), ĊĠĠĠĠĠĠĠ ĠDESC (" desc ") ĊĠĠĠ Ġ} Ċ }