Skip to content
This repository was archived by the owner on Jan 24, 2023. It is now read-only.

Commit 9799b92

Browse files
committed
fix(server): Improved the template
1 parent 84f67e0 commit 9799b92

16 files changed

Lines changed: 569 additions & 556 deletions

File tree

packages/@simpli/cli-server/generator/index.js

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ module.exports = (api, options) => {
44
}
55

66
const commonTables = options.serverSetup.commonTables
7+
const pivotTables = options.serverSetup.pivotTables
78
const dir = options.serverSetup.packageDir
89
const moduleName = options.serverSetup.moduleName
910

@@ -20,12 +21,22 @@ module.exports = (api, options) => {
2021
api.renderFrom('./injected', 'src/main/module/response/LoginResp.kt', `../../java/${dir}/${moduleName}/response/LoginResp.kt`)
2122
api.renderFrom('./injected', 'src/main/dao/LoginServiceDao.kt', `../java/${dir}/dao/LoginServiceDao.kt`)
2223

24+
// Exception
25+
api.renderFrom('./injected', 'src/main/exception/HttpException.kt', `../java/${dir}/exception/HttpException.kt`)
26+
2327
// Test
2428
api.renderFrom('./injected', 'src/test/module/process/LoginServiceTest.kt', `../../java/${dir}/${moduleName}/process/LoginServiceTest.kt`)
2529
api.renderFrom('./injected', 'src/test/OtherTest.kt', `./java/${dir}/OtherTest.kt`)
2630

2731
commonTables.forEach((table) => {
28-
// const data = { table }
29-
// api.renderFrom('./injected', 'src/main/dao/TemplateDao.kt', `../java/${dir}/dao/${table.modelName}Dao.kt`, data)
32+
const data = { table }
33+
api.renderFrom('./injected', 'src/main/dao/TemplateDao.kt', `../java/${dir}/dao/${table.modelName}Dao.kt`, data)
34+
api.renderFrom('./injected', 'src/main/module/response/TemplateResp.kt', `../../java/${dir}/${moduleName}/response/${table.modelName}Resp.kt`, data)
35+
api.renderFrom('./injected', 'src/main/model/Template.kt', `../java/${dir}/model/${table.modelName}.kt`, data)
36+
api.renderFrom('./injected', 'src/main/module/process/TemplateProcess.kt', `../../java/${dir}/${moduleName}/process/${table.modelName}Process.kt`, data)
37+
})
38+
pivotTables.forEach((table) => {
39+
const data = { table }
40+
api.renderFrom('./injected', 'src/main/dao/TemplateDao.kt', `../java/${dir}/dao/${table.modelName}Dao.kt`, data)
3041
})
3142
}
Lines changed: 113 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,46 @@
11
<%_ var packageAddress = options.serverSetup.packageAddress _%>
22
package <%-packageAddress%>.dao
33

4+
<%_ if (!table.isPivot) { _%>
45
import <%-packageAddress%>.model.<%-table.modelName%>
56
import com.google.common.base.Strings
67
import java.sql.Connection
78
import java.util.ArrayList
89
import java.util.HashMap
910
import com.simpli.model.LanguageHolder
1011
import 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
*/
1625
class <%-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
}

packages/@simpli/cli-server/generator/injected/src/main/exception/HttpException.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
package br.com.martinlabs.usecase.exception
1+
<%_ var packageAddress = options.serverSetup.packageAddress _%>
2+
package <%-packageAddress%>.exception
23

34
import javax.ws.rs.WebApplicationException
45
import javax.ws.rs.core.MediaType

0 commit comments

Comments
 (0)