package Ġgraphql . n adel . engine kt . transform . hyd ration Ċ Ċ import Ġgraphql . n adel . Service Ċ import Ġgraphql . n adel . engine kt . blueprint . N adel Batch H yd ration Field Instruction Ċ import Ġgraphql . n adel . engine kt . blueprint . N adel Generic H yd ration Instruction Ċ import Ġgraphql . n adel . engine kt . blueprint . N adel H yd ration Field Instruction Ċ import Ġgraphql . n adel . engine kt . blueprint . N adel Overall Execution Blueprint Ċ import Ġgraphql . n adel . engine kt . blueprint . hyd ration . N adel Batch H yd ration Match Strategy . Match Object Identifier Ċ import Ġgraphql . n adel . engine kt . blueprint . hyd ration . N adel H yd ration Actor Input Def Ċ import Ġgraphql . n adel . engine kt . transform . art ificial . N adel Alias Helper Ċ import Ġgraphql . n adel . engine kt . transform . hyd ration . batch . N adel Batch H yd ration Input Builder Ċ import Ġgraphql . n adel . engine kt . transform . query . NF Util Ċ import Ġgraphql . n adel . engine kt . transform . result . json . JsonNode Ċ import Ġgraphql . n adel . engine kt . util . deep Clone Ċ import Ġgraphql . n adel . engine kt . util . unwrap Ċ import Ġgraphql . normalized . Executable Normalized Field Ċ import Ġgraphql . normalized . Normalized Input Value Ċ import Ġgraphql . schema . Field Coordinates Ċ import Ġgraphql . schema . GraphQL Interface Type Ċ import Ġgraphql . schema . GraphQL ObjectType Ċ import Ġgraphql . schema . GraphQL Union Type Ċ Ċ internal Ġobject ĠN adel H yd ration Fields Builder Ġ{ ĊĠĠĠ Ġfun Ġmake Actor Queries ( ĊĠĠĠĠĠĠĠ Ġinstruction : ĠN adel H yd ration Field Instruction , ĊĠĠĠĠĠĠĠ Ġalias Helper : ĠN adel Alias Helper , ĊĠĠĠĠĠĠĠ Ġhy dr ated Field : ĠExec utable Normalized Field , ĊĠĠĠĠĠĠĠ Ġparent Node : ĠJsonNode , ĊĠĠĠ Ġ): ĠList < Executable Normalized Field > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠN adel H yd ration Input Builder . getInput Values ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstruction Ġ= Ġinstruction , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalias Helper Ġ= Ġalias Helper , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhy dr ated Field Ġ= Ġhy dr ated Field , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent Node Ġ= Ġparent Node , ĊĠĠĠĠĠĠĠ Ġ). map Ġ{ Ġargs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmake Actor Queries ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstruction Ġ= Ġinstruction , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Arguments Ġ= Ġargs , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Children Ġ= Ġdeep Clone ( fields Ġ= Ġhy dr ated Field . children ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmake Batch Actor Queries ( ĊĠĠĠĠĠĠĠ Ġinstruction : ĠN adel Batch H yd ration Field Instruction , ĊĠĠĠĠĠĠĠ Ġalias Helper : ĠN adel Alias Helper , ĊĠĠĠĠĠĠĠ Ġhy dr ated Field : ĠExec utable Normalized Field , ĊĠĠĠĠĠĠĠ Ġparent Nodes : ĠList < JsonNode >, ĊĠĠĠ Ġ): ĠList < Executable Normalized Field > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġarg B atches Ġ= ĠN adel Batch H yd ration Input Builder . getInput Value B atches ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstruction Ġ= Ġinstruction , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalias Helper Ġ= Ġalias Helper , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġh yd ration Field Ġ= Ġhy dr ated Field , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent Nodes Ġ= Ġparent Nodes , ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfield Children Ġ= Ġdeep Clone ( fields Ġ= Ġhy dr ated Field . children ). let Ġ{ Ġchildren Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġobject Id Field Ġ= Ġmake ObjectId Field ( alias Helper , Ġinstruction )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> Ġchildren ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġchildren Ġ+ Ġobject Id Field ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġarg B atches . map Ġ{ Ġarg Batch Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmake Actor Queries ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstruction Ġ= Ġinstruction , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Arguments Ġ= Ġarg Batch . map Keys Ġ{ Ġ( input Def : ĠN adel H yd ration Actor Input Def ) Ġ-> Ġinput Def . name Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Children Ġ= Ġfield Children , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmake Fields Used As Actor Input Values ( ĊĠĠĠĠĠĠĠ Ġservice : ĠService , ĊĠĠĠĠĠĠĠ Ġexecution Blueprint : ĠN adel Overall Execution Blueprint , ĊĠĠĠĠĠĠĠ Ġalias Helper : ĠN adel Alias Helper , ĊĠĠĠĠĠĠĠ Ġfield Coordinates : ĠField Coordinates , ĊĠĠĠĠĠĠĠ Ġinstruction : ĠN adel Generic H yd ration Instruction , ĊĠĠĠ Ġ): ĠList < Executable Normalized Field > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġunderlying TypeName Ġ= Ġexecution Blueprint . get Under lying TypeName ( overall TypeName Ġ= Ġfield Coordinates . typeName ) ĊĠĠĠĠĠĠĠ Ġval Ġunderlying ObjectType Ġ= Ġservice . underlying Schema . get ObjectType ( underlying TypeName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġerror (" No Ġunderlying Ġobject Ġtype ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġinstruction . actor Input Value Defs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . value Source Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Is Instance < N adel H yd ration Actor Input Def . Value Source . Field Result Value >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġvalue Source Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalias Helper . to Art ificial ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNF Util . create Field ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġschema Ġ= Ġservice . underlying Schema , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Type Ġ= Ġunderlying ObjectType , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Path To Field Ġ= Ġvalue Source . query Path To Field , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Arguments Ġ= Ġempty Map (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Children Ġ= Ġempty List (), Ġ// ĠThis Ġmust Ġbe Ġa Ġleaf Ġnode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmake Actor Queries ( ĊĠĠĠĠĠĠĠ Ġinstruction : ĠN adel Generic H yd ration Instruction , ĊĠĠĠĠĠĠĠ Ġfield Arguments : ĠMap < String , ĠNormal ized Input Value >, ĊĠĠĠĠĠĠĠ Ġfield Children : ĠList < Executable Normalized Field >, ĊĠĠĠ Ġ): ĠExec utable Normalized Field Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠNF Util . create Field ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġschema Ġ= Ġinstruction . actor Service . underlying Schema , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent Type Ġ= Ġinstruction . actor Service . underlying Schema . query Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Path To Field Ġ= Ġinstruction . query Path To Actor Field , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Arguments Ġ= Ġfield Arguments , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Children Ġ= Ġfield Children , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmake ObjectId Field ( ĊĠĠĠĠĠĠĠ Ġalias Helper : ĠN adel Alias Helper , ĊĠĠĠĠĠĠĠ Ġbatch H yd ration Instruction : ĠN adel Batch H yd ration Field Instruction , ĊĠĠĠ Ġ): ĠExec utable Normalized Field ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( val Ġmatch Strategy Ġ= Ġbatch H yd ration Instruction . batch H yd ration Match Strategy ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMatch Object Identifier Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactor Field Def Ġ= Ġbatch H yd ration Instruction . actor Field Def ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġunderlying Schema Ġ= Ġbatch H yd ration Instruction . actor Service . underlying Schema ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobject Types : ĠList < GraphQL ObjectType > Ġ= Ġwhen Ġ( val Ġtype Ġ= Ġactor Field Def . type . unwrap ( all Ġ= Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠGraphQL ObjectType Ġ-> ĠlistOf ( type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠGraphQL Union Type Ġ-> Ġtype . types . map Ġ{ Ġit Ġas ĠGraphQL ObjectType Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠGraphQL Interface Type Ġ-> Ġunderlying Schema . get Implement ations ( type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" When Ġmatching Ġby Ġobject Ġidentifier , Ġoutput Ġtype Ġof Ġactor Ġfield Ġmust Ġbe Ġan Ġobject ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Normalized Field . new Normalized Field () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. object Type Names ( object Types . map Ġ{ Ġit . name Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fieldName ( match Strategy . objectId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. alias ( alias Helper . getResult Key ( match Strategy . objectId )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ