package Ġorg . s ange et . k graphql Ċ Ċ import Ġkotlinx . serialization . json .* Ċ Ċ // ĠMARK : ĠUsing Ġthis Ġis Ġa Ġtemporary Ġsolution Ġas ĠJ Center Ġis Ġclosed Ġdown . Ċ // ĠĠĠĠĠĠ ĠWe Ġshould Ġeither Ġcreate Ġour Ġown ĠGraphQL Ġclient Ġor Ġfind Ġsome Ġother Ġactive Ġlibrary Ġto Ġdo Ġthis Ġfor Ġus . ĊĊ Ċ fun Ġgraphql Query ( block : ĠK raph . () Ġ-> ĠUnit ): ĠK raph Ġ{ ĊĠĠĠ Ġreturn ĠK raph (" query "). apply ( block ) Ċ } Ċ fun Ġgraphql Mutation ( block : ĠK raph . () Ġ-> ĠUnit ): ĠK raph Ġ{ ĊĠĠĠ Ġreturn ĠK raph (" mutation "). apply ( block ) Ċ } Ċ Ċ class ĠK raph ( ĊĠĠĠ Ġprivate Ġval Ġtype : ĠString , ĊĠĠĠ Ġprivate Ġval Ġvariables : ĠMutable List < K raph . Variable > Ġ= Ġmutable ListOf (), ĊĠĠĠ Ġprivate Ġval Ġroot : ĠBoolean Ġ= Ġtrue , Ċ ): ĠList < K raph . Variable > Ġby Ġvariables Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġfields Ġ= Ġmutable ListOf < K raph >() ĊĊĠĠĠ Ġfun Ġfield ( name : ĠString ) Ġ= Ġfields . add ( K raph ( name , Ġvariables , Ġfalse )) ĊĠĠĠ Ġfun Ġfield ( name : ĠString , Ġblock : ĠK raph . () Ġ-> ĠUnit ) Ġ= Ġfields . add ( K raph ( name , Ġvariables , Ġfalse ). apply ( block )) ĊĊĠĠĠ Ġdata Ġclass ĠVariable ( ĊĠĠĠĠĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġval ĠtypeName : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġvalue : ĠJson Element , ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġvariable ( name : ĠString , ĠtypeName : ĠString , Ġblock : ĠJsonObject Builder . () Ġ-> ĠUnit ) Ġ= Ġvariables . add ( ĊĠĠĠĠĠĠĠ ĠVariable ( name , ĠtypeName , Ġbuild JsonObject ( block )) ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġvariable ( name : ĠString , ĠtypeName : ĠString , Ġvalue : ĠString ) Ġ= Ġvariables . add ( ĊĠĠĠĠĠĠĠ ĠVariable ( name , ĠtypeName , ĠJson Primitive ( value )) ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġvariable ( name : ĠString , ĠtypeName : ĠString , Ġvalue : ĠInt ) Ġ= Ġvariables . add ( ĊĠĠĠĠĠĠĠ ĠVariable ( name , ĠtypeName , ĠJson Primitive ( value )) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġprint (): ĠString Ġ= Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠ Ġappend ("$ type Ġ") ĊĠĠĠĠĠĠĠ Ġif Ġ( variables . isNotEmpty () Ġ&& Ġroot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" My Query (${ variables . join ToString (",") Ġ{ Ġ"\ $ ${ it . name }: Ġ${ it . typeName }" Ġ}}) ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( fields . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend Line ("{ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfields . map Ġ{ Ġappend Line ( it . print ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend Line (" }") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġappend Line () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbuild (): ĠString Ġ= Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠ Ġappend ("{ ") ĊĠĠĠĠĠĠĠ Ġappend ("\" query \": Ġ\" ${ print ()} \" ") ĊĊĠĠĠĠĠĠĠ Ġif Ġ( variables . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend (",") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend ("\" variables \": Ġ{ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariables . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ("\" ${ it . name }\ ": Ġ${ it . value }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġappend (" }") ĊĠĠĠ Ġ} Ċ } Ċ