package Ġorg . rev crm . graphql . fetch ers Ċ Ċ import Ġgraphql . schema . Data Fetcher Ċ import Ġgraphql . schema . Data Fetching Environment Ċ import Ġorg . rev crm . db . Entity Validation Data Ċ import Ġorg . rev crm . db . Entity ValidationError Ċ import Ġorg . rev crm . graphql . API Context Ċ import Ġorg . rev crm . meta . Entity Ċ import Ġxyz . morph ia . mapping . Mapping Exception Ċ Ċ class ĠEntity Create Data Fetcher ( ĊĠĠĠ Ġprivate Ġval Ġentity : ĠEntity Ċ ) Ġ: ĠData Fetcher < Any > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget ( environment : ĠData Fetching Environment ): ĠAny Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġctx Ġ= Ġenvironment . getContext < API Context >() ĊĠĠĠĠĠĠĠ Ġval Ġklass Ġ= ĠClass . forName ( entity . className ) ĊĊĠĠĠĠĠĠĠ Ġval Ġgson Ġ= Ġget Gson ( ctx . db . entity Context FIX ME ) ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġenvironment . get Argument < Map < Any , ĠAny >> (" data ") ĊĠĠĠĠĠĠĠ Ġval Ġtree Ġ= Ġgson . toJson Tree ( data ) ĊĠĠĠĠĠĠĠ Ġval Ġrecord Ġ= Ġgson . fromJson ( tree , Ġklass ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġvalidation Data : ĠEntity Validation Data ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . db . with DB Ġ{ Ġds Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġds . save ( record ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠEntity ValidationError ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidation Data Ġ= Ġe . error Data ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠMapping Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( e . cause Ġis ĠEntity ValidationError ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidation Data Ġ= Ġ( e . cause Ġas ĠEntity ValidationError ). error Data ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( validation Data Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠEntity Mutation Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġrecord , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidation Ġ= ĠEntity Validation Data () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠEntity Mutation Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidation Ġ= Ġvalidation Data ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }