package Ġorg . roy l ance . ya orm . services . phoenix Ċ Ċ import Ġorg . roy l ance . ya orm . models . ColumnName Tuple Ċ import Ġorg . roy l ance . ya orm . Ya orm Model Ċ import Ġorg . roy l ance . ya orm . services . IS QL Generator Service Ċ import Ġorg . roy l ance . ya orm . utilities . Projection Utilities Ċ import Ġorg . roy l ance . ya orm . utilities . Ya orm Utils Ċ import Ġjava . util .* Ċ Ċ class ĠP ho enix Generator Service Ġ( override Ġval Ġbulk Insert Size : ĠInt Ġ= Ġ 5 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġempty As Null : ĠBoolean Ġ= Ġfalse ) Ġ: ĠIS QL Generator Service Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġtext TypeName : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠSql Text Name ĊĠĠĠ Ġoverride Ġval Ġinteger TypeName : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠSql Integer Name ĊĠĠĠ Ġoverride Ġval Ġreal TypeName : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠSql Real Name ĊĠĠĠ Ġoverride Ġval Ġblob TypeName : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠSql Blob Name ĊĊĠĠĠ Ġoverride Ġval Ġproto Type To Sql Type Ġ= ĠHashMap < Ya orm Model . Protobuf Type , ĠString >() ĊĠĠĠ Ġoverride Ġval Ġsql Type To Proto Type Ġ= ĠHashMap < String , ĠY a orm Model . Protobuf Type >() ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġproto Type To Sql Type . put ( Ya orm Model . Protobuf Type . STRING , ĠSql Text Name ) ĊĠĠĠĠĠĠĠ Ġproto Type To Sql Type . put ( Ya orm Model . Protobuf Type . INT 3 2 , ĠSql Integer Name ) ĊĠĠĠĠĠĠĠ Ġproto Type To Sql Type . put ( Ya orm Model . Protobuf Type . INT 6 4 , ĠSql Integer Name ) ĊĠĠĠĠĠĠĠ Ġproto Type To Sql Type . put ( Ya orm Model . Protobuf Type . UINT 3 2 , ĠSql Integer Name ) ĊĠĠĠĠĠĠĠ Ġproto Type To Sql Type . put ( Ya orm Model . Protobuf Type . UINT 6 4 , ĠSql Integer Name ) ĊĠĠĠĠĠĠĠ Ġproto Type To Sql Type . put ( Ya orm Model . Protobuf Type . S INT 3 2 , ĠSql Integer Name ) ĊĠĠĠĠĠĠĠ Ġproto Type To Sql Type . put ( Ya orm Model . Protobuf Type . S INT 6 4 , ĠSql Integer Name ) ĊĠĠĠĠĠĠĠ Ġproto Type To Sql Type . put ( Ya orm Model . Protobuf Type . FIXED 3 2 , ĠSql Integer Name ) ĊĠĠĠĠĠĠĠ Ġproto Type To Sql Type . put ( Ya orm Model . Protobuf Type . FIXED 6 4 , ĠSql Integer Name ) ĊĠĠĠĠĠĠĠ Ġproto Type To Sql Type . put ( Ya orm Model . Protobuf Type . S FIXED 3 2 , ĠSql Integer Name ) ĊĠĠĠĠĠĠĠ Ġproto Type To Sql Type . put ( Ya orm Model . Protobuf Type . S FIXED 6 4 , ĠSql Integer Name ) ĊĠĠĠĠĠĠĠ Ġproto Type To Sql Type . put ( Ya orm Model . Protobuf Type . BOOL , ĠSql Integer Name ) ĊĠĠĠĠĠĠĠ Ġproto Type To Sql Type . put ( Ya orm Model . Protobuf Type . BYTES , ĠSql Blob Name ) ĊĠĠĠĠĠĠĠ Ġproto Type To Sql Type . put ( Ya orm Model . Protobuf Type . DOUBLE , ĠSql Real Name ) ĊĠĠĠĠĠĠĠ Ġproto Type To Sql Type . put ( Ya orm Model . Protobuf Type . FLOAT , ĠSql Real Name ) ĊĊĠĠĠĠĠĠĠ Ġsql Type To Proto Type . put ( Sql Text Name , ĠY a orm Model . Protobuf Type . STRING ) ĊĠĠĠĠĠĠĠ Ġsql Type To Proto Type . put ( Sql Integer Name , ĠY a orm Model . Protobuf Type . INT 6 4 ) ĊĠĠĠĠĠĠĠ Ġsql Type To Proto Type . put ( Sql Real Name , ĠY a orm Model . Protobuf Type . DOUBLE ) ĊĠĠĠĠĠĠĠ Ġsql Type To Proto Type . put ( Sql Blob Name , ĠY a orm Model . Protobuf Type . STRING ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Join Sql ( join Table : ĠY a orm Model . Join Table ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ""" select Ġ* Ċ from Ġ${ this . build Keyword ( join Table . first Table . name )} Ġa Ċ join Ġ${ this . build Keyword ( join Table . second Table . name )} Ġb ĊĠĠĠ Ġon Ġa .${ build Keyword ( join Table . first Column . name )} Ġ= Ġb .${ build Keyword ( join Table . second Column . name )} Ċ """ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġinsert Same As Update : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Select Ids ( definition : ĠY a orm Model . Table Definition ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" select Ġid Ġfrom Ġ${ definition . name }" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Count Sql ( definition : ĠY a orm Model . Table Definition ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" select Ġcount ( 1 ) Ġas Ġlong Val Ġfrom Ġ${ definition . name }" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Create Column ( definition : ĠY a orm Model . Table Definition , Ġproperty Definition : ĠY a orm Model . Column Definition ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! proto Type To Sql Type . containsKey ( property Definition . type )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ" alter Ġtable Ġ${ definition . name } Ġadd Ġif Ġnot Ġexists Ġ${ property Definition . name } Ġ${ proto Type To Sql Type [ property Definition . type ]}" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Drop Column ( definition : ĠY a orm Model . Table Definition , Ġproperty Definition : ĠY a orm Model . Column Definition ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" alter Ġtable Ġ${ definition . name } Ġdrop Ġcolumn Ġif Ġexists Ġ${ property Definition . name }" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Drop Index ( definition : ĠY a orm Model . Table Definition , Ġcolumns : ĠMap < String , ĠY a orm Model . Column Definition >): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġindex Name Ġ= ĠY a orm Utils . build Index Name ( definition . name , Ġcolumns . values . map Ġ{ Ġit . name Ġ}) ĊĠĠĠĠĠĠĠ Ġreturn Ġ" drop Ġindex Ġif Ġexists Ġ$ index Name Ġon Ġ${ definition . name }" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Create Index ( definition : ĠY a orm Model . Table Definition , Ġproperties : ĠMap < String , ĠY a orm Model . Column Definition >, Ġincludes : ĠMap < String , ĠY a orm Model . Column Definition >): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġindex Name Ġ= ĠY a orm Utils . build Index Name ( definition . name , Ġproperties . values . map Ġ{ Ġit . name Ġ}) ĊĠĠĠĠĠĠĠ Ġval Ġjoined Column Names Ġ= Ġproperties . values . join ToString ( Ya orm Utils . Comma ) ĊĠĠĠĠĠĠĠ Ġval Ġsql Statement Ġ= Ġ" create Ġindex Ġif Ġnot Ġexists Ġ$ index Name Ġon Ġ${ definition . name } Ġ($ joined Column Names )" ĊĊĠĠĠĠĠĠĠ Ġif Ġ( includes . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsql Statement ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġjoined Include Column Names Ġ= Ġincludes . values . join ToString ( Ya orm Utils . Comma ) ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ sql Statement Ġinclude Ġ($ joined Include Column Names )" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Delete With Criteria ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefinition : ĠY a orm Model . Table Definition , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhere Clause Item : ĠY a orm Model . Where Clause ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwhere Clause Ġ= ĠY a orm Utils . build Where Clause ( where Clause Item , Ġthis ) ĊĠĠĠĠĠĠĠ Ġreturn Ġ" delete Ġfrom Ġ${ definition . name } Ġwhere Ġ$ where Clause " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Update With Criteria ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefinition : ĠY a orm Model . Table Definition , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecord : ĠY a orm Model . Record , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhere Clause Item : ĠY a orm Model . Where Clause ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Drop Table ( definition : ĠY a orm Model . Table Definition ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" drop Ġtable Ġif Ġexists Ġ${ definition . name }" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Delete All ( definition : ĠY a orm Model . Table Definition ) Ġ: ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" delete Ġfrom Ġ${ definition . name }" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Bulk Insert ( definition : ĠY a orm Model . Table Definition , Ġrecords : ĠY a orm Model . Records ) Ġ: ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġdo Ġsingle Ġinserts , Ġthen Ġcommit ĊĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Select All ( definition : ĠY a orm Model . Table Definition , Ġlimit : ĠInt , Ġoffset : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġjava . lang . String . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSelect All Template , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefinition . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlimit ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Where Clause ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefinition : ĠY a orm Model . Table Definition , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhere Clause Item : ĠY a orm Model . Where Clause ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwhere Sql Ġ= Ġjava . lang . String . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWhere Clause Template , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefinition . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠY a orm Utils . build Where Clause ( where Clause Item , Ġthis )) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhere Sql ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Delete Table ( definition : ĠY a orm Model . Table Definition , Ġprimary Key : ĠY a orm Model . Column ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠtableName Ġ= Ġdefinition . name ĊĊĠĠĠĠĠĠĠ Ġval Ġdelete Sql Ġ= Ġjava . lang . String . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDelete Table Template , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtableName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠY a orm Utils . get Formatted String ( primaryKey , Ġempty As Null )) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġdelete Sql ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Update Table ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefinition : ĠY a orm Model . Table Definition , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecord : ĠY a orm Model . Record ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . build Insert Into Table ( definition , Ġrecord ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Insert Into Table ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefinition : ĠY a orm Model . Table Definition , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecord : ĠY a orm Model . Record ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname TypeMap Ġ= ĠHashMap < String , ĠColumn Name Tuple < String >>() ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠY a orm Utils . getName Types ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefinition , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠY a orm Model . Protobuf Type . STRING , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . proto Type To Sql Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġname TypeMap . put ( it . sql ColumnName , Ġit ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolumn Names Ġ= ĠArrayList < String >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= ĠArrayList < String >() ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecord ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. columns List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted By Ġ{ Ġit . definition . order Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġformatted Value Ġ= ĠY a orm Utils . get Formatted String ( it , Ġempty As Null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn Names . add ( it . definition . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . add ( formatted Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinsert Sql Ġ= Ġjava . lang . String . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInsert Into Table Single Template , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefinition . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn Names . join ToString ( Ya orm Utils . Comma ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . join ToString ( Ya orm Utils . Comma )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinsert Sql ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild CreateTable ( definition : ĠY a orm Model . Table Definition ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname Types Ġ= ĠY a orm Utils . getName Types ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefinition , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠY a orm Model . Protobuf Type . STRING , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . proto Type To Sql Type ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( name Types . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġworkspace Ġ= ĠStringBuilder () ĊĊĠĠĠĠĠĠĠ Ġval Ġfound Id Ġ= Ġname Types . first OrNull Ġ{ ĠY a orm Utils . Id Name Ġ== Ġit . sql ColumnName Ġ} Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġworkspace . append ( Ya orm Utils . Id Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( Ya orm Utils . Space ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( found Id . dataType ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( Ya orm Utils . Space ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( NotNull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( Ya orm Utils . Space ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( PrimaryKey ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( name Type Ġin Ġname Types . filter Ġ{ ĠY a orm Utils . Id Name Ġ!= Ġit . sql ColumnName Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġworkspace ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( Ya orm Utils . Comma ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( Ya orm Utils . Space ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( name Type . sql ColumnName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( Ya orm Utils . Space ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( name Type . dataType ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcreate Table Sql Ġ= Ġjava . lang . String . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCreate Initial Table Template , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefinition . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworkspace . toString ()) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Table Sql ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Keyword ( keyword : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġkeyword ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Schema Names (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Table Names ( schema Name : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ". tables " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Table Definition SQL ( schema Name : ĠString , ĠtableName : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Table Definition ( tableName : ĠString , Ġrecords : ĠY a orm Model . Records ): ĠY a orm Model . Table Definition Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠY a orm Model . Table Definition . getDefaultInstance () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Projection SQL ( projection : ĠY a orm Model . Projection ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠProjection Utilities . build Projection SQL ( projection , Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCreate Initial Table Template Ġ= Ġ" create Ġtable Ġif Ġnot Ġexists Ġ% s Ġ(% s )" ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠInsert Into Table Single Template Ġ= Ġ" upsert Ġinto Ġ% s Ġ(% s ) Ġvalues Ġ(% s )" ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDelete Table Template Ġ= Ġ" delete Ġfrom Ġ% s Ġwhere Ġid =% s " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠWhere Clause Template Ġ= Ġ" select Ġ* Ġfrom Ġ% s Ġwhere Ġ% s " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSelect All Template Ġ= Ġ" select Ġ* Ġfrom Ġ% s Ġlimit Ġ% " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠPrimary Key Ġ= Ġ" primary Ġkey " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠNot Null Ġ= Ġ" not Ġnull " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSql Integer Name Ġ= Ġ" bigint " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSql Text Name Ġ= Ġ" varchar " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSql Real Name Ġ= Ġ" decimal " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSql Blob Name Ġ= Ġ" varchar " ĊĠĠĠ Ġ} Ċ } Ċ