package Ġpl . to uk . kr ush Ċ Ċ import Ġorg . jetbrains . ex posed . sql . Column Ċ import Ġorg . jetbrains . ex posed . sql .` java - time `. Java LocalDateTime ColumnType Ċ import Ġorg . jetbrains . ex posed . sql . Table Ċ import Ġorg . jetbrains . ex posed . sql .` java - time `. Java Instant ColumnType Ċ import Ġjava . time . Instant Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . time . Zone Id . system Default Ċ import Ġjava . time . Z onedDateTime Ċ import Ġkotlin . reflect . K Class Ċ Ċ class ĠZ onedDateTime ColumnType Ġ: ĠWrapper ColumnType < LocalDateTime , ĠZ onedDateTime >( ĊĠĠĠ Ġraw ColumnType Ġ= ĠJava LocalDateTime ColumnType (), ĊĠĠĠ Ġraw Clazz Ġ= ĠLocalDateTime :: class , ĊĠĠĠ Ġwrapper Clazz Ġ= ĠZ onedDateTime :: class , ĊĠĠĠ Ġinstance Creator Ġ= Ġ{ Ġit . at Zone ( system Default ()) }, ĊĠĠĠ Ġvalue Extractor Ġ= Ġ{ Ġit . to LocalDateTime () Ġ} Ċ ) Ċ Ċ fun ĠTable . zon ed DateTime ( name : ĠString ): ĠColumn < Z onedDateTime > Ġ= Ġregister Column ( name , ĠZ onedDateTime ColumnType ()) Ċ Ċ class ĠInstant Wrapper ColumnType < out ĠWrapper Ġ: ĠAny >( ĊĠĠĠ Ġwrapper Clazz : ĠK Class < Wrapper >, ĊĠĠĠ Ġinstance Creator : Ġ( Instant ) Ġ-> ĠWrapper , ĊĠĠĠ Ġvalue Extractor : Ġ( Wrapper ) Ġ-> ĠInstant Ċ ) Ġ: ĠWrapper ColumnType < Instant , ĠWrapper >( Java Instant ColumnType (), ĠInstant :: class , Ġwrapper Clazz , Ġinstance Creator , Ġvalue Extractor ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġvalue From DB ( value : ĠAny ) Ġ= Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSupport ing Ġsame Ġtypes Ġas Ġorg . jetbrains . ex posed . sql .` java - time `. Java Instant ColumnType ĊĠĠĠĠĠĠĠ Ġis Ġjava . sql . Timestamp Ġ-> Ġinstance Creator ( raw ColumnType . value From DB ( value ) Ġas ĠInstant ) ĊĠĠĠĠĠĠĠ Ġis ĠString Ġ-> Ġinstance Creator ( raw ColumnType . value From DB ( value ) Ġas ĠInstant ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Database Ġvalue Ġ$ value Ġof Ġclass Ġ${ value :: class . qualified Name } Ġis Ġnot Ġvalid Ġ$ raw Clazz ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠWrapper Ġ: ĠAny > ĠTable . instant Wrapper ( ĊĠĠĠ Ġname : ĠString , ĊĠĠĠ Ġno inline Ġinstance Creator : Ġ( Instant ) Ġ-> ĠWrapper , ĊĠĠĠ Ġno inline Ġvalue Extractor : Ġ( Wrapper ) Ġ-> ĠInstant Ċ ): ĠColumn < Wrapper > Ġ= Ġregister Column ( ĊĠĠĠ Ġname , ĠInstant Wrapper ColumnType ( Wrapper :: class , Ġinstance Creator , Ġvalue Extractor ) Ċ ) Ċ