package Ġio . kot less . examples . storage Ċ Ċ import Ġcom . amazonaws . services . dynamodb v 2 . Amazon D ynamoDB Client Builder Ċ import Ġcom . amazonaws . services . dynamodb v 2 . model . AttributeValue Ċ import Ġcom . amazonaws . services . dynamodb v 2 . model . GetItem Request Ċ import Ġcom . amazonaws . services . dynamodb v 2 . model . Put Item Request Ċ import Ġcom . amazonaws . services . dynamodb v 2 . model . Scan Request Ċ import Ġio . kot less . Aws Resource Ċ import Ġio . kot less . Permission Level Ċ import Ġio . kot less . dsl . lang . D ynamoDB Table Ċ import Ġio . kot less . dsl . lang . with K ot less Local Ċ import Ġio . kot less . examples . utils . Random Code Ċ Ċ private Ġconst Ġval ĠtableName : ĠString Ġ= Ġ" spring - short - url - table " Ċ Ċ @ D ynamoDB Table ( tableName , ĠPermission Level . ReadWrite ) Ċ object ĠURL Storage Ġ{ ĊĠĠĠ Ġprivate Ġval Ġclient Ġ= ĠAmazon D ynamoDB Client Builder . standard (). with K ot less Local ( Aws Resource . D ynamoDB ). build () ĊĊĠĠĠ Ġfun ĠgetBy Code ( code : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġreq Ġ= ĠGet Item Request (). with Key ( map Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" URL Hash " Ġto ĠAttribute Value (). apply Ġ{ Ġs Ġ= Ġcode Ġ} ĊĠĠĠĠĠĠĠ Ġ )). with TableName ( tableName ) ĊĊĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġclient . getItem ( req ). item ĊĊĠĠĠĠĠĠĠ Ġreturn Ġres ?. let Ġ{ Ġit [" URL "] !!. s Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetBy Url ( url : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġreq Ġ= ĠScan Request () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with TableName ( tableName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Filter Expression ("# u Ġ= Ġ: v _ url ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Expression Attribute Names ( map Of ("# u " Ġto Ġ" URL ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Expression Attribute Values ( map Of (": v _ url " Ġto ĠAttribute Value (). apply Ġ{ Ġs Ġ= Ġurl Ġ})) ĊĊĠĠĠĠĠĠĠ Ġval Ġitems Ġ= Ġclient . scan ( req ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġitems . items . first OrNull ()?. get (" URL Hash ") ?. s ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Code ( url : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcode Ġ= ĠRandom Code . next () ĊĊĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" URL Hash " Ġto ĠAttribute Value (). apply Ġ{ Ġs Ġ= Ġcode Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" URL " Ġto ĠAttribute Value (). apply Ġ{ Ġs Ġ= Ġurl Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" TimeStamp " Ġto ĠAttribute Value (). apply Ġ{ Ġn Ġ= ĠSystem . currentTimeMillis (). toString () Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġreq Ġ= ĠPut Item Request (). with Item ( values ). with TableName ( tableName ) ĊĊĠĠĠĠĠĠĠ Ġclient . put Item ( req ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcode ĊĠĠĠ Ġ} Ċ } Ċ