package Ġcom . w car mon . codegen . view Ċ Ċ import Ġcom . w car mon . codegen . ast . Final ity Modifier . FINAL Ċ import Ġcom . w car mon . codegen . ast . Method Parameter Expression Ċ import Ġcom . w car mon . codegen . ast . Render Config Ċ import Ġcom . w car mon . codegen . model . Entity Ċ import Ġcom . w car mon . codegen . model . Field Ċ import Ġcom . w car mon . codegen . model . SQL Placeholder Type Ċ import Ġcom . w car mon . codegen . model . SQL Placeholder Type .* Ċ import Ġcom . w car mon . codegen . model . Target Language Ċ Ċ class ĠG olang Entity View ( ĊĠ Ġdebug Mode : ĠBoolean , ĊĠ Ġprivate Ġval Ġentity : ĠEntity , ĊĠ Ġprivate Ġval Ġrdb ms View : ĠR DBM ST ableView , ĊĠ Ġprivate Ġval Ġtarget Language : ĠTarget Language , Ċ ) Ġ{ ĊĊĠ Ġprivate Ġval Ġrender Config Ġ= ĠRender Config ( ĊĠĠĠ Ġdebug Mode Ġ= Ġdebug Mode , ĊĠĠĠ Ġline Indent ation Ġ= Ġ"", ĊĠĠĠ Ġtarget Language Ġ= Ġtarget Language , ĊĠĠĠ Ġterminate Ġ= Ġfalse , ĊĠ Ġ) ĊĊĠ Ġ// TODO : Ġconsider ĠField Read Expression ĊĠ Ġfun Ġcomma Separ ated Field Reads For Insert ( entityName : ĠString ): ĠString Ġ= ĊĠĠĠ Ġ( entity . id Fields Ġ+ Ġentity . non Id Fields ) ĊĠĠĠĠĠ Ġ. join ToString ( ĊĠĠĠĠĠĠĠ Ġseparator Ġ= Ġ"\ n " ĊĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ"${ entityName }.${ it . name . upper Camel }," ĊĠĠĠĠĠ Ġ} ĊĊĠ Ġfun Ġcomma Separ ated Field Reads For Update ( entityName : ĠString ): ĠString Ġ= ĊĠĠĠ Ġ( entity . non Id Fields Ġ+ Ġentity . id Fields ) ĊĠĠĠĠĠ Ġ. join ToString ( ĊĠĠĠĠĠĠĠ Ġseparator Ġ= Ġ"\ n " ĊĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ"${ entityName }.${ it . name . upper Camel }," ĊĠĠĠĠĠ Ġ} ĊĊĠ Ġfun Ġcomma Separ ated Fields For Query Scan ( ĊĠĠĠ Ġoutput Struct Name : ĠString , ĊĠ Ġ): ĠString Ġ{ ĊĊĠĠĠ Ġreturn Ġ( entity . id Fields Ġ+ Ġentity . non Id Fields ) ĊĠĠĠĠĠ Ġ. join ToString ( ĊĠĠĠĠĠĠĠ Ġseparator Ġ= Ġ"\ n " ĊĠĠĠĠĠ Ġ) Ġ{ Ġfield Ġ-> ĊĠĠĠĠĠĠĠ Ġ"& ${ output Struct Name }.${ field . name . upper Camel }," ĊĠĠĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġval Ġcomma Separ ated Id Field Names Ġ= Ġentity ĊĠĠĠ Ġ. id Fields ĊĠĠĠ Ġ. join ToString (",") Ġ{ ĊĠĠĠĠĠ Ġit . name . lower Camel ĊĠĠĠ Ġ} ĊĊĠ Ġfun Ġpatch Queries _ question Mark (): ĠString Ġ= Ġpatch Queries ( QUEST ION _ MARK ) ĊĊĠ Ġfun Ġpatch Queries _ number d Dollar (): ĠString Ġ= Ġpatch Queries ( NUMBER ED _ DO LL ARS ) ĊĊĠ Ġfun Ġmethod Args For Id Fields () Ġ= ĊĠĠĠ Ġentity . id Fields . join ToString ( ĊĠĠĠĠĠ Ġseparator Ġ= Ġ", Ġ" ĊĠĠĠ Ġ) Ġ{ Ġfield Ġ-> ĊĠĠĠĠĠ ĠMethod Parameter Expression ( ĊĠĠĠĠĠĠĠ Ġfield Ġ= Ġfield , ĊĠĠĠĠĠĠĠ Ġfinal ity Modifier Ġ= ĠFIN AL , ĊĠĠĠĠĠĠĠ Ġfully Qualified Ġ= Ġfalse , ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. render ( render Config ) ĊĠĠĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠConditional ĊĠĠ Ġ*/ ĊĠ Ġfun Ġrender Update Timestamp Field ( ĊĠĠĠ Ġfield : ĠField , ĊĠĠĠ Ġclock Read Expression : ĠString , ĊĠĠĠ Ġsuffix : ĠString , ĊĠ Ġ): ĠString Ġ{ ĊĊĠĠĠ Ġval Ġn Ġ= Ġentity . updated Timestamp FieldName ĊĠĠĠ Ġif Ġ( n Ġ== Ġfield . name Ġ|| Ġn Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġ// ĠDon 't Ġinclude Ġupdate Ġcolumn Ġwhen Ġpatch ing Ġupdate Ġcolumn ĊĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠInclude Ġthe Ġupdate Ġcolumn Ġwhen Ġsetting Ġfield ĊĠĠĠ Ġreturn Ġclock Read Expression Ġ+ Ġsuffix ĊĠ Ġ} ĊĊĊĠ Ġprivate Ġfun Ġpatch Queries ( placeholder Type : ĠSQL Placeholder Type ): ĠString Ġ{ ĊĠĠĠ Ġval Ġindentation Ġ= Ġ" ĠĠĠ Ġ" ĊĊĠĠĠ Ġif Ġ(! entity . has Id Fields Ġ|| Ġ! entity . has Non Id Fields ) Ġ{ ĊĠĠĠĠĠ Ġ// Ġneed ĠID Ġfields Ġfor ĠWHERE Ġclause ĊĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ(! entity . can Update ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġentity . non Id Fields ĊĠĠĠĠĠ Ġ. map Ġ{ Ġfield Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġlines Ġ= Ġmutable ListOf < String >() ĊĊĠĠĠĠĠĠĠ Ġlines Ġ+= Ġ"// ĠPatch Ġ${ entity . name . upper Camel }.${ field . name . lower Camel }" ĊĠĠĠĠĠĠĠ Ġlines Ġ+= Ġ" PATCH __ ${ entity . name . upper Snake } __ ${ field . name . upper Snake } Ġ= Ġ`" ĊĠĠĠĠĠĠĠ Ġlines Ġ+= Ġ""" ${ indentation } UPDATE Ġ${ entity . rdb ms View . qualified TableName } """ ĊĊĠĠĠĠĠĠĠ Ġval Ġp Ġ= Ġplaceholder Type . first Placeholder () ĊĠĠĠĠĠĠĠ Ġlines Ġ+= Ġ""" ${ indentation } SET Ġ${ field . name . lower Snake } =$ p Ġ""" ĊĊĠĠĠĠĠĠĠ Ġvar Ġpk Index Offset Ġ= Ġ 2 Ġ// Ġ 1 Ġfor Ġpatched Ġfield ĊĊĠĠĠĠĠĠĠ Ġif Ġ( entity . updated Timestamp FieldName Ġ!= Ġfield . name ĊĠĠĠĠĠĠĠĠĠ Ġ&& Ġentity . updated Timestamp FieldName Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġplaceholder Ġ= Ġplaceholder Type . for Index ( 2 ) ĊĠĠĠĠĠĠĠĠĠ Ġlines Ġ+= Ġ""" $ indentation Ġ ĠAND Ġ${ entity . updated Timestamp FieldName . lower Snake } =$ placeholder """ ĊĊĠĠĠĠĠĠĠĠĠ Ġpk Index Offset ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġwhere Clause Ġ= Ġwhen Ġ( placeholder Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠNAME D _ PARAMS Ġ-> ĠTODO () ĊĠĠĠĠĠĠĠĠĠ ĠNUMBER ED _ DO LL ARS Ġ-> Ġrdb ms View . primaryKey Where Clause _ number ed Dollar s ( pk Index Offset ) ĊĠĠĠĠĠĠĠĠĠ ĠQ UEST ION _ MARK Ġ-> Ġrdb ms View . primaryKey Where Clause _ question Marks ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlines Ġ+= Ġ""" ${ indentation } WHERE Ġ$ where Clause """ ĊĠĠĠĠĠĠĠ Ġlines Ġ+= Ġ"` " ĊĊĠĠĠĠĠĠĠ Ġlines . join ToString ( ĊĠĠĠĠĠĠĠĠĠ Ġseparator Ġ= Ġ"\ n " ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġ"$ indentation $ it " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ}. join ToString ( ĊĠĠĠĠĠĠĠ Ġseparator Ġ= Ġ"\ n \ n " ĊĠĠĠĠĠ Ġ) Ġ{ Ġline Ġ-> ĊĠĠĠĠĠĠĠ Ġ"$ indentation $ line " ĊĠĠĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ