/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 Ġthe Ġoriginal Ġauthor Ġor Ġauthors . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġcom . x ime des . dynamodb . dsl . builders Ċ Ċ import Ġcom . x ime des . dynamodb . dsl . D ynamo Db DSL Ċ import Ġsoftware . amazon . aw ssdk . services . dynamodb . model .* Ċ Ċ @ D ynamo Db DSL Ċ class ĠCreate Table RequestBuilder ( tableName : ĠString ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġ_ builder Ġ= ĠCreate Table Request . builder (). tableName ( tableName ). billing Mode ( Billing Mode . PAY _ PER _ REQUEST ) ĊĠĠĠ Ġprivate Ġval Ġkey Schema Elements Ġ= Ġmutable ListOf < Key Schema Element >() ĊĠĠĠ Ġprivate Ġval Ġglobal Secondary Index Builders Ġ= Ġmutable ListOf < Global Secondary Index Builder >() ĊĠĠĠ Ġprivate Ġvar Ġprovision ed Through put : ĠPro vision ed Through put ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġattributes ( init : ĠAttribute Definitions Builder . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ builder . attribute Definitions ( Attribute Definitions Builder (). apply ( init ). build ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpartition Key ( name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġkey Schema Elements . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey Schema Element . builder (). attribute Name ( name ). key Type ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey Type . HASH ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). build () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsort Key ( name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġkey Schema Elements . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey Schema Element . builder (). attribute Name ( name ). key Type ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey Type . RANGE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). build () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġprovision ed Through put ( read Capacity Units : ĠLong , Ġwrite Capacity Units : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprovision ed Through put Ġ= ĠPro vision ed Through put . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Capacity Units ( read Capacity Units ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Capacity Units ( write Capacity Units ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġglobal Secondary Index ( name : ĠString , Ġinit : ĠGlobal Secondary Index Builder . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġindex Ġ= ĠGlobal Secondary Index Builder ( name ). apply ( init ) ĊĠĠĠĠĠĠĠ Ġglobal Secondary Index Builders . add ( index ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġbuild (): ĠCreate Table Request Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ builder . key Schema (* key Schema Elements . to Typed Array ()) ĊĊĠĠĠĠĠĠĠ Ġprovision ed Through put ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ builder . billing Mode ( Billing Mode . PROV ISION ED ). provision ed Through put ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( global Secondary Index Builders . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ builder . global Secondary Indexes (* global Secondary Index Builders . map Ġ{ Ġit . build ( provision ed Through put ) Ġ}. to Typed Array ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ_ builder . build () ĊĠĠĠ Ġ} Ċ Ċ }