11< % _ var packageAddress = options.serverSetup.packageAddress _% >
22package <%-packageAddress%>.dao
33
4+ < % _ if (! table.isPivot) { _% >
45import < %- packageAddress% > .model.< %- table.modelName% >
56import com.google.common.base.Strings
67import java.sql.Connection
78import java.util.ArrayList
89import java.util.HashMap
910import com.simpli.model.LanguageHolder
1011import com.simpli.sql.Dao
12+ < % _ } else { _% >
13+ < % _ for (var i in table.foreignColumns) { var column = table.foreignColumns[i] _% >
14+ import < %- packageAddress% > .model.< %- column.foreign.referencedTableModelName% >
15+ < % _ } _% >
16+ import com.simpli.model.LanguageHolder
17+ import com.simpli.sql.Dao
18+ import java.sql.Connection
19+ < % _ } _% >
1120
1221/* *
1322 * Responsible for <%-table.modelName%> database operations
1423 * @author Simpli© CLI generator
1524 */
1625class < %- table.modelName% > Dao (con: Connection , lang: LanguageHolder ) : Dao (con, lang) {
1726
18- fun getOne (<%-table.primariesByComma(true)%>): <%-table.modelName%>? {
27+ < % _ if (! table.isPivot) { _% >
28+ fun getOne (<%-table.primariesByParam()%>): <%-table.modelName%>? {
1929 // TODO: review generated method
2030 return selectOne("""
2131 SELECT *
2232 FROM <%-table.name%>
2333 WHERE 1 = 1
2434 <%-table.primariesByWhere()%>
25- """ , { rs -> < %- table.modelName% > .buildAll(rs) }, < %- table.primariesByComma(false )% > )
35+ """ , { rs -> < %- table.modelName% > .buildAll(rs) }, < %- table.primariesByComma(true )% > )
2636 }
2737
2838 fun list (): MutableList <<%-table.modelName%>> {
2939 // TODO: review generated method
3040 return selectList("""
3141 SELECT *
3242 FROM <%-table.name%>
33- <%_ if (table.isRemovable) _%>
43+ <%_ if (table.isRemovable) { _%>
3444 WHERE <%-table.removableColumn.name%> = 1
3545<%_ } _%>
3646 """ , { rs -> < %- table.modelName% > .buildAll(rs) })
@@ -46,13 +56,15 @@ class <%-table.modelName%>Dao(con: Connection, lang: LanguageHolder) : Dao(con,
4656 val orderRequestAndColumn = HashMap <String , String >()
4757
4858< % _ for (var i in table.columns) { var column = table.columns[i] _% >
59+ < % _ if (! column.isPassword) { _% >
4960 orderRequestAndColumn.put(" <%-column.name%>" , " <%-table.name%>.<%-column.name%>" )
61+ < % _ } _% >
5062< % _ } _% >
5163
5264 val orderColumn = orderRequestAndColumn[orderRequest]
5365
5466 val params = ArrayList <Any >()
55- < % _ if (table.isRemovable) _% >
67+ < % _ if (table.isRemovable) { _% >
5668 var where = " WHERE <%-table.removableColumn.name%> = 1 "
5769< % _ } else { _% >
5870 var where = " WHERE 1 = 1 "
@@ -62,7 +74,9 @@ class <%-table.modelName%>Dao(con: Connection, lang: LanguageHolder) : Dao(con,
6274 where + = ("""
6375 AND LOWER(CONCAT(
6476<%_ for (var i in table.columns) { var column = table.columns[i] _%>
77+ <%_ if (!column.isPassword) { _%>
6578 IFNULL(<%-table.name%>.<%-column.name%>, '')<%-i < table.columns.length - 1 ? ',' : ''%>
79+ <%_ } _%>
6680<%_ } _%>
6781 )) LIKE LOWER(?)
6882 """ )
@@ -88,104 +102,163 @@ class <%-table.modelName%>Dao(con: Connection, lang: LanguageHolder) : Dao(con,
88102 fun count (): Int? {
89103 // TODO: review generated method
90104 return selectFirstInt("""
91- SELECT COUNT(<%-table.columnId .name%>)
105+ SELECT COUNT(<%-table.idColumn .name%>)
92106 FROM <%-table.name%>
93107<%_ if (table.isRemovable) { _%>
94108 WHERE <%-table.removableColumn.name%> = 1
95109<%_ } _%>
96110 """ )
97111 }
98-
112+
99113 fun count (search : String? ): Int? {
100114 // TODO: review generated method
101115 return selectFirstInt("""
102- SELECT COUNT(<%-table.columnId .name%>)
116+ SELECT COUNT(<%-table.idColumn .name%>)
103117 FROM <%-table.name%>
104118 WHERE LOWER(CONCAT(
105119<%_ for (var i in table.columns) { var column = table.columns[i] _%>
120+ <%_ if (!column.isPassword) { _%>
106121 IFNULL(<%-table.name%>.<%-column.name%>, '')<%-i < table.columns.length - 1 ? ',' : ''%>
122+ <%_ } _%>
107123<%_ } _%>
108124 )) LIKE LOWER(?)
109- """ ,
125+ """ ,
110126 " %$search %" )
111127 }
112-
128+
113129 fun update <%-table.modelName %>(<%-table.instanceName%>: <%-table.modelName%>): Int {
114130 // TODO: review generated method
115131 return update("""
116132 UPDATE <%-table.name%>
117133 SET
118- <%_ for (var i in table.columns ) { var column = table.columns [i] _%>
134+ <%_ for (var i in table.exceptPrimaryColumns ) { var column = table.exceptPrimaryColumns [i] _%>
119135<%_ if (column.isPassword) { _%>
120- <%-column.name%> = IF(? IS NOT NULL, SHA2(?, 256), <%-column.name%>)<%-i < table.columns .length - 1 ? ',' : ''%>
136+ <%-column.name%> = IF(? IS NOT NULL, SHA2(?, 256), <%-column.name%>)<%-i < table.exceptPrimaryColumns .length - 1 ? ',' : ''%>
121137<%_ } else if (column.isUpdatedAt) { _%>
122- <%-column.name%> = NOW()<%-i < table.columns .length - 1 ? ',' : ''%>
123- <%_ } else { _%>
124- <%-column.name%> = ?<%-i < table.columns .length - 1 ? ',' : ''%>
138+ <%-column.name%> = NOW()<%-i < table.exceptPrimaryColumns .length - 1 ? ',' : ''%>
139+ <%_ } else if (!column.isCreatedAt) { _%>
140+ <%-column.name%> = ?<%-i < table.exceptPrimaryColumns .length - 1 ? ',' : ''%>
125141<%_ } _%>
126142<%_ } _%>
127143 WHERE 1 = 1
128144 <%-table.primariesByWhere()%>
129145 """ ,
130- < % _ for (var i in table.columns ) { var column = table.columns [i] _% >
146+ < % _ for (var i in table.exceptPrimaryColumns ) { var column = table.exceptPrimaryColumns [i] _% >
131147< % _ if (column.isPassword) { _% >
132148 < %- table.instanceName% > .< %- column.name% > , < %- table.instanceName% > .< %- column.name% > ,
133149< % _ } else if (column.isUpdatedAt) { _% >
134- < % _ } else { _% >
150+ < % _ } else if ( ! column.isCreatedAt) { _% >
135151 < %- table.instanceName% > .< %- column.name% > ,
136152< % _ } _% >
137153< % _ } _% >
138- < %- table.primariesByComma(false )% > ).affectedRows
154+ < % _ for (var i in table.primaryColumns) { var column = table.primaryColumns[i] _% >
155+ < %- table.instanceName% > .< %- column.name% >< %- i < table.primaryColumns.length - 1 ? ' ,' : ' ' % >
156+ < % _ } _% >
157+ ).affectedRows
139158 }
140-
159+
141160 fun insert (<%-table.instanceName%>: <%-table.modelName%>): Long {
142161 // TODO: review generated method
143162 return update("""
144163 INSERT INTO <%-table.name%> (
145- <%_ for (var i in table.columns ) { var column = table.columns [i] _%>
146- <%-column.name%><%-i < table.columns .length - 1 ? ',' : ''%>
164+ <%_ for (var i in table.exceptPrimaryColumns ) { var column = table.exceptPrimaryColumns [i] _%>
165+ <%-column.name%><%-i < table.exceptPrimaryColumns .length - 1 ? ',' : ''%>
147166<%_ } _%>
148- ) VALUES (
149- <%_ for (var i in table.columns) { var column = table.columns[i] _%>
167+ ) VALUES (<%_ for (var i in table.exceptPrimaryColumns) { var column = table.exceptPrimaryColumns[i] _%>
150168<%_ if (column.isPassword) { _%>
151- <%= 'SHA2(?, 256)' + (i < table.columns .length - 1 ? ',' : '') = %>
169+ <%- 'SHA2(?, 256)' + (i < table.exceptPrimaryColumns .length - 1 ? ',' : '') - %>
152170<%_ } else if (column.isCreatedAt) { _%>
153- <%= 'NOW()' + (i < table.columns.length - 1 ? ',' : '') =%>
154- <%_ } else { _%>
155- <%= '?' + (i < table.columns.length - 1 ? ',' : '') =%>
156- <%_ } _%>
171+ <%- 'NOW()' + (i < table.exceptPrimaryColumns.length - 1 ? ',' : '') -%>
172+ <%_ } else if (!column.isUpdatedAt) { _%>
173+ <%- '?' + (i < table.exceptPrimaryColumns.length - 1 ? ',' : '') -%>
157174<%_ } _%>
158- )
175+ <%_ } _%> )
159176 """ ,
160- < % _ for (var i in table.columns ) { var column = table.columns [i] _% >
177+ < % _ for (var i in table.exceptPrimaryColumns ) { var column = table.exceptPrimaryColumns [i] _% >
161178< % _ if (column.isCreatedAt) { _% >
162- < % _ } else { _% >
163- < %- table.instanceName% > .< %- column.name% >< %- i < table.columns.length - 1 ? ' , ' : ' ' % >
179+ < % _ } else if ( ! column.isUpdatedAt) { _% >
180+ < %- table.instanceName% > .< %- column.name% > ,
164181< % _ } _% >
165- < % _ } _% > ).key
182+ < % _ } _% >
183+ < % _ for (var i in table.primaryColumns) { var column = table.primaryColumns[i] _% >
184+ < %- table.instanceName% > .< %- column.name% >< %- i < table.primaryColumns.length - 1 ? ' ,' : ' ' % >
185+ < % _ } _% >
186+ ).key
166187 }
167188
168- < % _ if (table.hasUnique) { _% >
169- fun existUnico (<%-table.uniqueColumn.name%>: <%-table.uniqueColumn.kotlinType%>? , <%-table.primariesByComma(true)%>): Boolean {
189+ fun exist <%-table.modelName %>(<%-table.primariesByParam()%>): Boolean {
170190 // TODO: review generated method
171191 return exist("""
172- SELECT <%-table.uniqueColumn .name%>
192+ SELECT <%-table.idColumn .name%>
173193 FROM <%-table.name%>
174- WHERE <%-table.uniqueColumn.name%> = ?
194+ WHERE 1 = 1
195+ <%-table.primariesByWhere()%>
196+ """ , < %- table.primariesByComma(true )% > )
197+ }
198+
199+ < % _ for (var i in table.uniqueColumns) { var column = table.uniqueColumns[i] _% >
200+ fun exist <%-options.serverSetup.capitalizeFirstLetter (column.name)%>(<%-column.name%>: <%-column.kotlinType%>? , <%-table.primariesByParam()%>): Boolean {
201+ // TODO: review generated method
202+ return exist("""
203+ SELECT <%-column.name%>
204+ FROM <%-table.name%>
205+ WHERE <%-column.name%> = ?
175206 <%-table.primariesByWhere(true)%>
176- """ , < %- table.uniqueColumn. name% > , < %- table.primariesByComma(false )% > )
207+ """ , < %- column. name% > , < %- table.primariesByComma(true )% > )
177208 }
178209< % _ } _% >
179-
180210< % _ if (table.isRemovable) { _% >
181- fun softDelete (<%-table.primariesByComma(true)%>): Int {
211+
212+ fun softDelete (<%-table.primariesByParam()%>): Int {
182213 // TODO: review generated method
183214 return update("""
184215 UPDATE <%-table.name%>
185216 SET <%-table.removableColumn.name%> = 0
186217 WHERE 1 = 1
187218 <%-table.primariesByWhere()%>
188- """ , < %- table.primariesByComma(false )% > ).affectedRows
219+ """ , < %- table.primariesByComma(true )% > ).affectedRows
189220 }
190221< % _ } _% >
222+ < % _ } else if (table.isPivot) { _% >
223+ < % _ var foreignColumns = table.foreignColumns _% >
224+ < % _ var columnRef1 = foreignColumns[0 ] _% >
225+ < % _ var columnRef2 = foreignColumns[1 ] _% >
226+ fun insert (<%-table.primariesByParam()%>): Int {
227+ // TODO: review generated method
228+ return update("""
229+ INSERT INTO <%-table.name%> (
230+ <%_ for (var i in foreignColumns) { var column = foreignColumns[i] _%>
231+ <%-column.name%><%-i < foreignColumns.length - 1 ? ',' : ''%>
232+ <%_ } _%>
233+ ) VALUES (<%_ for (var i in foreignColumns) { var column = foreignColumns[i] _%>
234+ <%- '?' + (i < foreignColumns.length - 1 ? ',' : '') -%>
235+ <%_ } _%>)
236+ """ ,
237+ < % _ for (var i in foreignColumns) { var column = foreignColumns[i] _% >
238+ < %- column.name% >< %- i < foreignColumns.length - 1 ? ' ,' : ' ' % >
239+ < % _ } _% >
240+ ).affectedRows
241+ }
242+
243+ < % _ for (var i in foreignColumns) { var column = foreignColumns[i] _% >
244+ < % _ var columnRef = column.name == = columnRef1.name ? columnRef2 : columnRef1 _% >
245+ < % _ var columnCross = column.name == = columnRef2.name ? columnRef2 : columnRef1 _% >
246+ fun removeAllFrom <%-columnRef.foreign.referencedTableModelName %>(<%-columnRef.name%>: <%-columnRef.kotlinType%>): Int {
247+ // TODO: review generated method
248+ return update(" DELETE FROM <%-table.name%> WHERE <%-columnRef.name%> = ? " ,
249+ < %- columnRef.name% > ).affectedRows
250+ }
251+
252+ fun list <%-columnRef.foreign.referencedTableModelName %>Of <%-columnCross.foreign.referencedTableModelName %>(<%-columnCross.name%>: <%-columnCross.kotlinType%>): MutableList <<%-columnRef.foreign.referencedTableModelName%>> {
253+ // TODO: review generated method
254+ return selectList("""
255+ SELECT *
256+ FROM <%-columnRef.foreign.referencedTableName%>
257+ INNER JOIN <%-table.name%> ON <%-columnRef.foreign.referencedTableName%>.<%-columnRef.foreign.referencedColumnName%> = <%-table.name%>.<%-columnRef.name%>
258+ WHERE <%-table.name%>.<%-columnCross.name%> = ?
259+ """ , { rs -> < %- columnRef.foreign.referencedTableModelName% > .buildAll(rs) }, < %- columnCross.name% > )
260+ }
261+
262+ < % _ } _% >
263+ < % _ } _% >
191264}
0 commit comments