package Ġcom . phil pot . rest ql Ċ Ċ object ĠGraphQL Object Builder Ġ{ ĊĊĠĠĠ Ġfun Ġbuilder ( name : ĠString ) Ġ= ĠGraphQL Object Constructor ( name ) ĊĊĠĠĠ Ġclass ĠGraphQL Object Constructor Ġinternal Ġconstructor ( private Ġval Ġname : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġpossible Variables : ĠList < String > Ġ= Ġempty List ()) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġvariables Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġfields Ġ= Ġmutable ListOf < GraphQL Field >() ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġalias : ĠString Ġ= Ġ"" ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠTell s Ġthe Ġobject Ġto Ġuse Ġan Ġalias Ġname Ġfor Ġreturning Ġthe Ġdata ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġwith Alias ( alias : ĠString ): ĠGraphQL Object Constructor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . alias Ġ= Ġalias ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠTell s Ġthe Ġobject Ġto Ġdefine Ġa Ġvariable Ġit Ġneeds Ġto Ġreturn Ġthe Ġobject Ġproperly ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġwith Variable ( variable : ĠString ): ĠGraphQL Object Constructor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( possible Variables . contains ( variable )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariables . add ( variable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠDefines Ġa Ġfield Ġto Ġbe Ġreturned Ġby Ġthe Ġgraph Ġ ql Ġservice ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġwith Field ( name : ĠString ): ĠGraphQL Object Constructor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfields . add ( StringField ( name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġin fix Ġfun ĠGraphQL Object Constructor . with ( name : ĠString ): ĠGraphQL Object Constructor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfields . add ( StringField ( name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠDefines Ġa Ġfield Ġto Ġbe Ġreturned Ġby Ġthe Ġgraph Ġ ql Ġservice Ġ( with Ġan Ġali ased Ġname ) ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġnote : Ġwhy Ġtf Ġyou 'd Ġneed Ġthis , ĠI Ġdon 't Ġknow . ĠIt Ġseems Ġpretty Ġst upid Ġto Ġme ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġwith Alias Field ( alias : ĠString , ĠfieldName : ĠString ): ĠGraphQL Object Constructor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfields . add ( String Alias Field ( alias , ĠfieldName )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠDefines Ġan Ġsub - object Ġto Ġbe Ġreturned Ġthat 's Ġnested Ġwithin Ġthe Ġcurrent Ġobject ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġwith Object ( name : ĠString , Ġcode : Ġ( GraphQL Object Constructor ) Ġ-> ĠGraphQL Object Constructor ): ĠGraphQL Object Constructor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfields . add ( code ( GraphQL Object Constructor ( name , Ġpossible Variables )). build ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġa ĠGraphQL Object Ġthat Ġis Ġcapable Ġof Ġbuilding Ġa ĠGraphQL Ġquery ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġinternal Ġfun Ġbuild (): ĠGraphQL Object Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠGraphQL Object ( name , Ġvariables , Ġfields , Ġalias ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ