/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠApple , ĠInc . Ċ Ġ* Ċ Ġ* Ġ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 . netflix . spin n aker . q . sql . util Ċ Ċ import Ġorg . jooq . DSL Context Ċ import Ġorg . jooq . Field Ċ import Ġorg . jooq . SQL Dialect Ċ import Ġorg . jooq . impl . DSL Ċ Ċ fun Ġcurrent Schema ( context : ĠDSL Context ): ĠString Ġ{ ĊĠ Ġreturn Ġcontext . fetch (" select Ġcurrent _ schema () ") ĊĠĠĠ Ġ. getValue ( 0 , ĠDSL . field (" current _ schema ")). toString () Ċ } Ċ Ċ fun Ġcreate Table Like ( new Table : ĠString , Ġtemplate Table : ĠString , Ġcontext : ĠDSL Context ) Ġ{ ĊĠ Ġvar Ġsql Ġ= Ġ" CREATE ĠTABLE ĠIF ĠNOT ĠEXISTS Ġ" ĊĠ Ġsql Ġ+= Ġwhen Ġ( context . dialect ()) Ġ{ ĊĠĠĠ ĠSQL Dialect . POST GRES Ġ-> Ġ{ ĊĠĠĠĠĠ Ġval Ġcs Ġ= Ġcurrent Schema ( context ) ĊĠĠĠĠĠ Ġ"$ cs .$ new Table Ġ( ĠLIKE Ġ$ cs .$ template Table ĠINCLUDING ĠALL Ġ)" ĊĠĠĠ Ġ} ĊĠĠĠ Ġelse Ġ-> Ġ"$ new Table ĠLIKE Ġ$ template Table " ĊĠ Ġ} ĊĠ Ġcontext . execute ( sql ) Ċ } Ċ Ċ // ĠAllows Ġinsertion Ġof Ġvirtual ĠPostgres Ġvalues Ġon Ġconflict , Ġsimilar Ġto ĠMySQL DSL . values Ċ fun Ġ< T > Ġexcluded ( values : ĠField < T >): ĠField < T > Ġ{ ĊĠ Ġreturn ĠDSL . field (" excluded .{ 0 }", Ġvalues . dataType , Ġvalues ) Ċ } Ċ