package Ġdr . adapt or Ċ Ċ import Ġdr . query . Q Field Ċ import Ġdr . query . Q Select Ċ import Ġdr . schema .* Ċ import Ġdr . schema . tabular .* Ċ import Ġorg . jooq . DataType Ċ import Ġorg . jooq . Field Ċ import Ġorg . jooq . impl . DSL Ċ import Ġorg . jooq . impl . SQL DataType Ċ Ċ const Ġval ĠMAIN Ġ= Ġ" main " Ċ Ċ fun ĠS Entity . sql Name () Ġ= Ġname . replace ('.', Ġ'_ ') Ċ Ċ fun ĠS Table . sql Name (): ĠString Ġ{ ĊĠ Ġval Ġentity Ġ= Ġs Entity . sql Name () ĊĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠ Ġs Relation Ġ== Ġnull Ġ-> Ġentity ĊĠĠĠ Ġs Relation . name . startsWith ( SPECIAL ) Ġ-> Ġ"${ entity } __ ${ s Relation . name . substring ( 1 )}" ĊĠĠĠ Ġelse Ġ-> Ġ"${ entity } __ ${ s Relation . name }" ĊĠ Ġ} Ċ } Ċ Ċ fun ĠS Table . ref Sql Name ( t Ref : ĠT Ref ) Ġ= Ġwhen ( t Ref ) Ġ{ ĊĠ Ġis ĠT Super Ref Ġ-> ĠSUP ER ĊĠ Ġis ĠT Parent Ref Ġ-> ĠP ARENT ĊĠ Ġis ĠT Direct Ref Ġ-> Ġif Ġ(! t Ref . include Rel Name ) Ġ"@ ref " Ġelse Ġ"@ ref __ ${ t Ref . rel . name }" ĊĠ Ġis ĠT Inverse Ref Ġ-> Ġif Ġ( s Relation Ġ== Ġnull ) Ġ{ ĊĠĠĠ Ġ// Ġdirect Ġrefs Ġwithout Ġaux Ġtable ĊĠĠĠ Ġif Ġ(! t Ref . include Rel Name ) Ġ"@ inv _${ t Ref . ref Table . sql Name () }" Ġelse Ġ"@ inv _${ t Ref . ref Table . sql Name ()} __ ${ t Ref . rel . name }" ĊĠ Ġ} Ġelse Ġ{ ĊĠĠĠ Ġ// Ġrefs Ġwith Ġaux Ġtable ĊĠĠĠ Ġif Ġ(! t Ref . include Rel Name ) Ġ"@ inv " Ġelse Ġ"@ inv __ ${ t Ref . rel . name }" ĊĠ Ġ} Ċ } Ċ Ċ fun ĠS Table . db Fields ( selection : ĠQ Select , Ġprefix : ĠString Ġ= ĠMAIN ) Ġ= Ġif Ġ( selection . has All ) Ġ{ ĊĠ Ġprops . values . filter Ġ{ Ġit . name Ġ!= ĠID Ġ}. map Ġ{ Ġit . fn ( prefix ) Ġ} Ċ } Ġelse Ġ{ ĊĠ Ġselection . fields . filter Ġ{ Ġit . name Ġ!= ĠID Ġ}. map Ġ{ Ġit . fn ( prefix ) Ġ} Ċ } Ċ Ċ fun ĠS Table . db One ToOne ( selection : ĠQ Select ) Ġ= Ġselection . relations . map NotNull Ġ{ ĊĠ Ġval Ġvalue Ġ= Ġone ToOne [ it . name ] ĊĠ Ġif Ġ( value Ġ!= Ġnull ) Ġit Ġto Ġvalue Ġelse Ġnull Ċ }. toMap () Ċ Ċ fun ĠS Table . db OneToMany ( selection : ĠQ Select ) Ġ= Ġselection . relations . map NotNull Ġ{ ĊĠ Ġval Ġvalue Ġ= Ġone ToMany [ it . name ] ĊĠ Ġif Ġ( value Ġ!= Ġnull ) Ġit Ġto Ġvalue Ġelse Ġnull Ċ }. toMap () Ċ Ċ fun ĠS Table . db ManyToMany ( selection : ĠQ Select ) Ġ= Ġselection . relations . map NotNull Ġ{ ĊĠ Ġval Ġvalue Ġ= Ġmany ToMany [ it . name ] ĊĠ Ġif Ġ( value Ġ!= Ġnull ) Ġit Ġto Ġvalue Ġelse Ġnull Ċ }. toMap () ĊĊ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ fun Ġid Fn ( prefix : ĠString ? Ġ= Ġnull ): ĠField < Long > Ġ= Ġif Ġ( prefix Ġ!= Ġnull ) Ġ{ ĊĠ ĠDSL . field ( DSL . name ( prefix , ĠID ), Ġjava . lang . Long :: class . java ) Ġas ĠField < Long > Ċ } Ġelse Ġ{ ĊĠ ĠDSL . field ( DSL . name ( ID ), Ġjava . lang . Long :: class . java ) Ġas ĠField < Long > Ċ } Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ fun Ġref Fn ( prefix : ĠString ? Ġ= Ġnull ): ĠField < Long > Ġ= Ġif Ġ( prefix Ġ!= Ġnull ) Ġ{ ĊĠ ĠDSL . field ( DSL . name ( prefix , ĠREF ), Ġjava . lang . Long :: class . java ) Ġas ĠField < Long > Ċ } Ġelse Ġ{ ĊĠ ĠDSL . field ( DSL . name ( REF ), Ġjava . lang . Long :: class . java ) Ġas ĠField < Long > Ċ } Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ fun Ġinv Fn ( prefix : ĠString ? Ġ= Ġnull ): ĠField < Long > Ġ= Ġif Ġ( prefix Ġ!= Ġnull ) Ġ{ ĊĠ ĠDSL . field ( DSL . name ( prefix , ĠIN V ), Ġjava . lang . Long :: class . java ) Ġas ĠField < Long > Ċ } Ġelse Ġ{ ĊĠ ĠDSL . field ( DSL . name ( INV ), Ġjava . lang . Long :: class . java ) Ġas ĠField < Long > Ċ } Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ fun ĠT Ref . fn ( tl b : ĠS Table , Ġprefix : ĠString ? Ġ= Ġnull ): ĠField < Long > Ġ= Ġif Ġ( prefix Ġ!= Ġnull ) Ġ{ ĊĠ ĠDSL . field ( DSL . name ( prefix , Ġt lb . ref Sql Name ( this )), Ġjava . lang . Long :: class . java ) Ġas ĠField < Long > Ċ } Ġelse Ġ{ ĊĠ ĠDSL . field ( DSL . name ( tl b . ref Sql Name ( this )), Ġjava . lang . Long :: class . java ) Ġas ĠField < Long > Ċ } Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ fun ĠT Property . fn ( prefix : ĠString ? Ġ= Ġnull ): ĠField < Any > Ġ= Ġif Ġ( prefix Ġ!= Ġnull ) Ġ{ ĊĠ ĠDSL . field ( DSL . name ( prefix , Ġname ), Ġj Type ) Ġas ĠField < Any > Ċ } Ġelse Ġ{ ĊĠ ĠDSL . field ( DSL . name ( name ), Ġj Type ) Ġas ĠField < Any > Ċ } Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ fun ĠQ Field . fn ( prefix : ĠString ? Ġ= Ġnull ): ĠField < Any > Ġ= Ġif Ġ( prefix Ġ!= Ġnull ) Ġ{ ĊĠ ĠDSL . field ( DSL . name ( prefix , Ġname ), Ġj Type ) Ġas ĠField < Any > Ċ } Ġelse Ġ{ ĊĠ ĠDSL . field ( DSL . name ( name ), Ġj Type ) Ġas ĠField < Any > Ċ } Ċ Ċ fun ĠFieldType . to Sql Type (): ĠDataType < out ĠAny > Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠ ĠFieldType . TEXT Ġ-> ĠSQL DataType . VARCHAR ĊĠ ĠFieldType . INT Ġ-> ĠSQL DataType . INTEGER ĊĠ ĠFieldType . LONG Ġ-> ĠSQL DataType . BIG INT ĊĠ ĠFieldType . FLOAT Ġ-> ĠSQL DataType . FLOAT ĊĠ ĠFieldType . DOUBLE Ġ-> ĠSQL DataType . DOUBLE ĊĠ ĠFieldType . BOOL Ġ-> ĠSQL DataType . BOOLEAN ĊĠ ĠFieldType . TIME Ġ-> ĠSQL DataType . LOCAL TIME ĊĠ ĠFieldType . DATE Ġ-> ĠSQL DataType . LOCAL DATE ĊĠ ĠFieldType . DATETIME Ġ-> ĠSQL DataType . LOCAL DATETIME ĊĠ ĠFieldType . MAP Ġ-> ĠSQL DataType . VARCHAR ĊĠ ĠFieldType . LIST Ġ-> ĠSQL DataType . VARCHAR ĊĠ ĠFieldType . SET Ġ-> ĠSQL DataType . VARCHAR Ċ }