package Ġcom . iv ie league . de j ank o . orm Ċ Ċ import Ġcom . iv ie league . de j ank o . snake Case Ċ import Ġcom . iv ie league . de j ank o . type Ċ import Ġkotlin . reflect . K Class Ċ import Ġkotlin . reflect . K Type Ċ import Ġkotlin . reflect . full . declared Member Properties Ċ import Ġkotlin . reflect . full . has Annotation Ċ import Ġkotlin . reflect . jvm . jvm Er asure ĊĊ Ċ interface ĠDB Type < T > Ġ{ ĊĠĠĠ Ġfun Ġparse ( value : ĠAny ?): ĠT ĊĠĠĠ Ġfun Ġget ColumnName ( default Name : ĠString ): ĠString Ġ= Ġdefault Name Ċ } Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ fun Ġ< T : ĠAny > ĠK Class < T >. db Type (): ĠDB Type < T > Ġ{ ĊĠĠĠ Ġreturn Ġwhen ( this ) Ġ{ ĊĠĠĠĠĠĠĠ ĠForeign Key :: class Ġ-> Ġthrow ĠIllegalArgumentException () ĊĠĠĠĠĠĠĠ ĠMedia File :: class Ġ-> ĠDB Type Media File Ġas ĠDB Type < T > ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠDB Type No Op () ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ inline Ġfun Ġ< re ified ĠT > Ġdb Type () Ġ= Ġtype < T >(). db Type () Ġas ĠDB Type < T > Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ fun ĠK Type . db Type (): ĠDB Type < *> Ġ{ ĊĠĠĠ Ġval Ġbase Ġ= Ġwhen ( jvm Er asure ) Ġ{ ĊĠĠĠĠĠĠĠ ĠForeign Key :: class Ġ-> ĠDB Type ForeignKey ( arguments [ 1 ]. type !!. jvm Er asure Ġas ĠK Class < Any >, Ġarguments [ 0 ]. type !!. db Type ()) ĊĠĠĠĠĠĠĠ ĠMedia File :: class Ġ-> ĠDB Type Media File ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠDB Type No Op () ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġif ( this . is Marked Nullable ) ĠDB Type Nullable ( base ) Ġelse Ġbase Ċ } Ċ Ċ class ĠDB Type No Op < T >: ĠDB Type < T > Ġ{ ĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġoverride Ġfun Ġparse ( value : ĠAny ?): ĠT Ġ= Ġvalue Ġas ĠT ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġ" No Op " Ċ } Ċ Ċ object ĠDB Type Media File : ĠDB Type < Media File > Ġ{ ĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġoverride Ġfun Ġparse ( value : ĠAny ?): ĠMedia File Ġ= ĠMedia File ( value Ġas ĠString ) ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġ" Media File " Ċ } Ċ Ċ class ĠDB Type ForeignKey < KEY , ĠTABLE : ĠAny >( val Ġtable : ĠK Class < TABLE >, Ġval Ġkey Type : ĠDB Type < KEY >): ĠDB Type < ForeignKey < KEY , ĠTABLE >> Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġparse ( value : ĠAny ?): ĠForeign Key < KEY , ĠTABLE > Ġ= ĠForeign Key ( table , Ġkey Type . parse ( value )) ĊĠĠĠ Ġoverride Ġfun Ġget ColumnName ( default Name : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdefault Name Ġ+ Ġ"_" Ġ+ Ġtable . pk Info . name . snake Case () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġ" ForeignKey < ${ table . simple Name }, Ġ${ key Type }> " Ċ } Ċ Ċ class ĠDB Type Nullable < T >( val Ġtype : ĠDB Type < T >): ĠDB Type < T ?> Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġparse ( value : ĠAny ?): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif ( value Ġ== Ġnull ) Ġnull ĊĠĠĠĠĠĠĠ Ġelse Ġtype . parse ( value ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġget ColumnName ( default Name : ĠString ): ĠString Ġ= Ġtype . get ColumnName ( default Name ) ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġtype . toString () Ġ+ Ġ" ?" Ċ }