// package Ġmain . services . token Ċ // Ċ // import Ġkotlin serverless . framework . services . SO A Result Ċ // import Ġkotlin serverless . framework . services . SO A Result Type Ċ // import Ġmain . da os .* Ċ // import Ġmain . services . transaction . Generate Transaction Service Ċ // import Ġorg . jetbrains . ex posed . dao . Entity ID Ċ // import Ġorg . jetbrains . ex posed . sql . insert AndGet Id Ċ // Ċ // /** Ċ // Ġ* ĠGenerate Ġa Ġtoken Ġif Ġit Ġis Ġvalid Ċ // Ġ*/ Ċ // object ĠGenerate Token Service Ġ{ Ċ // ĠĠĠ Ġfun Ġexecute ( caller : ĠUser Account , Ġtoken Namespace : ĠToken Namespace ) Ġ: ĠSO A Result < Token > Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġ// ĠTODO Ġ-- Ġshould Ġgenerate Ġa Ġtransaction Ċ // ĠĠĠĠĠĠĠ Ġval Ġtoken Type Obj Id Ġ= Ġif ( token Namespace . token Type . parent Token Ġ!= Ġnull ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠToken Types . insert AndGet Id Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ name ] Ġ= Ġtoken Namespace . token Type . name Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ parent Token ] Ġ= ĠEntity ID ( token Namespace . token Type . parent Token !! , ĠToken Types ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ parent Token Conversion Rate ] Ġ= Ġtoken Namespace . token Type . parent Token Conversion Rate Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠToken Types . insert AndGet Id Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ name ] Ġ= Ġtoken Namespace . token Type . name Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠ Ġval Ġtoken Id Ġ= ĠTokens . insert AndGet Id Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġit [ amount ] Ġ= Ġtoken Namespace . amount Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġit [ token Type ] Ġ= ĠEntity ID ( token Type Obj Id !!. value , ĠToken Types ) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠ Ġ// ĠTODO Ġ-- Ġadd Ġa Ġtest Ġfor Ġthis ! Ċ // ĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠGenerate Transaction Service . execute ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Namespace ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" DEFAULT ", Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcaller . crypto KeyPair . publicKey , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAction Namespace ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAction Type . TRANSFER , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Id . value , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken :: class . simple Name !! Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( Met adat as Namespace (" amount ", Ġtoken Namespace . amount . toString ())) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ)) Ċ // ĠĠĠĠĠĠĠ Ġif ( result . result Ġ!= ĠSO A Result Type . SUCCESS ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSO A Result ( SO A Result Type . FAILURE , Ġ" Failed Ġto Ġgenerate Ġa Ġtransaction Ġfunding Ġcreator ") Ċ // Ċ // Ċ // ĠĠĠĠĠĠĠ Ġreturn ĠSO A Result ( SO A Result Type . SUCCESS , Ġnull , ĠToken . findById ( tokenId . value ) !! ) Ċ // ĠĠĠ Ġ} Ċ //}