/* Ċ Ġ* ĠCopyright Ġ 2 0 2 2 Ġe Al va . com Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// 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 . e al va . w elite . db . table Ċ Ċ import Ġcom . e al va . w elite . db . type . Base Persistent Type Ċ import Ġcom . e al va . w elite . db . type . Bind able Ċ import Ġcom . e al va . w elite . db . type . Long Persistent Type Ċ import Ġcom . e al va . w elite . db . type . Persistent Type Ċ import Ġcom . e al va . w elite . db . type . Row Ċ import Ġkotlin . time . Duration Ċ import Ġkotlin . time . Duration Unit Ċ import Ġkotlin . time . to Duration Ċ Ċ public Ġfun ĠTable . duration ( ĊĠ Ġname : ĠString , ĊĠ Ġduration Unit : ĠDuration Unit , ĊĠ Ġblock : ĠColumn Constraints < Duration >. () Ġ-> ĠUnit Ġ= Ġ{} Ċ ): ĠColumn < Duration > Ġ= Ġregister Column ( name , ĠDuration As Long Type ( duration Unit ), Ġblock ) Ċ Ċ public Ġfun ĠTable . opt Duration ( ĊĠ Ġname : ĠString , ĊĠ Ġduration Unit : ĠDuration Unit , ĊĠ Ġblock : ĠColumn Constraints < Duration ?> . () Ġ-> ĠUnit Ġ= Ġ{} Ċ ): ĠColumn < Duration ?> Ġ= Ġregister Opt Column ( name , ĠDuration As Long Type ( duration Unit ), Ġblock ) Ċ Ċ private Ġfun ĠAny . value To Duration ( duration Unit : ĠDuration Unit ): ĠDuration Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠ Ġis ĠDuration Ġ-> Ġthis ĊĠ Ġis ĠLong Ġ-> Ġto Duration ( duration Unit ) ĊĠ Ġis ĠString Ġ-> ĠDuration . parse ( this ) ĊĠ Ġelse Ġ-> ĠDuration . parse ( toString ()) Ċ } Ċ Ċ public Ġclass ĠDuration As Long Type < T Ġ: ĠDuration ? >( ĊĠ Ġprivate Ġval Ġlong Column : ĠLong Persistent Type < Long ? >, ĊĠ Ġprivate Ġval Ġduration Unit : ĠDuration Unit Ċ ) Ġ: ĠBase Persistent Type < T , ĠLong >( long Column . sql Type ) Ġ{ ĊĠ Ġoverride Ġfun Ġdo Bind ( bind able : ĠBind able , Ġindex : ĠInt , Ġvalue : ĠAny ): ĠUnit Ġ= ĊĠĠĠ Ġlong Column . bind ( bind able , Ġindex , Ġvalue . value To Duration ( duration Unit ). to Long ( duration Unit )) ĊĊĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠ Ġoverride Ġfun ĠRow . read Column Value ( index : ĠInt ): ĠT Ġ= Ġget Long ( index ). to Duration ( duration Unit ) Ġas ĠT ĊĊĠ Ġoverride Ġfun Ġnot NullValue To DB ( value : ĠAny ): ĠLong Ġ= ĊĠĠĠ Ġvalue . value To Duration ( duration Unit ). to Long ( duration Unit ) ĊĊĠ Ġoverride Ġfun Ġclone (): ĠPersistent Type < T ?> Ġ= ĠDuration As Long Type ( duration Unit ) ĊĊĠ Ġpublic Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġpublic Ġoperator Ġfun Ġ< T Ġ: ĠDuration ?> Ġinvoke ( duration Unit : ĠDuration Unit ): ĠDuration As Long Type < T > Ġ= ĊĠĠĠĠĠ ĠDuration As Long Type ( Long Persistent Type (), Ġduration Unit ) ĊĠ Ġ} Ċ } Ċ