wok-server 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (380) hide show
  1. package/README.en.md +61 -0
  2. package/README.md +44 -29
  3. package/dist/cache/cache.js +98 -98
  4. package/dist/cache/config.js +19 -19
  5. package/dist/cache/index.js +27 -27
  6. package/dist/cache/purge-task.js +46 -46
  7. package/dist/cache/stat.js +47 -47
  8. package/dist/config/convert.js +36 -36
  9. package/dist/config/exception.js +14 -14
  10. package/dist/config/index.js +81 -81
  11. package/dist/http-client/index.js +136 -136
  12. package/dist/i18n/ar.js +17 -17
  13. package/dist/i18n/de.js +17 -17
  14. package/dist/i18n/en-us.js +17 -17
  15. package/dist/i18n/es.js +17 -17
  16. package/dist/i18n/fr.js +17 -17
  17. package/dist/i18n/i18n.js +231 -231
  18. package/dist/i18n/index.js +52 -52
  19. package/dist/i18n/ja.js +17 -17
  20. package/dist/i18n/ko.js +17 -17
  21. package/dist/i18n/msg.js +2 -2
  22. package/dist/i18n/pt.js +17 -17
  23. package/dist/i18n/ru.js +17 -17
  24. package/dist/i18n/tag.js +18 -18
  25. package/dist/i18n/zh-HK.js +17 -17
  26. package/dist/i18n/zh-TW.js +17 -17
  27. package/dist/i18n/zh-cn.js +17 -17
  28. package/dist/index.js +14 -14
  29. package/dist/lock/index.js +114 -114
  30. package/dist/log/config.js +35 -35
  31. package/dist/log/date.js +21 -21
  32. package/dist/log/file.js +198 -198
  33. package/dist/log/index.js +135 -135
  34. package/dist/log/level.js +33 -33
  35. package/dist/log/log.js +56 -56
  36. package/dist/log/store.js +19 -19
  37. package/dist/mongodb/collection.js +2 -2
  38. package/dist/mongodb/config.js +34 -34
  39. package/dist/mongodb/doc.js +2 -2
  40. package/dist/mongodb/exception.js +14 -14
  41. package/dist/mongodb/index.js +58 -58
  42. package/dist/mongodb/manager/base.js +563 -563
  43. package/dist/mongodb/manager/index.js +63 -63
  44. package/dist/mongodb/manager/tx-strict.js +84 -84
  45. package/dist/mongodb/manager/tx.js +30 -30
  46. package/dist/mongodb/migration.js +52 -52
  47. package/dist/mvc/access-log.js +33 -33
  48. package/dist/mvc/config.js +27 -27
  49. package/dist/mvc/exchange.js +113 -113
  50. package/dist/mvc/handler/index.js +7 -6
  51. package/dist/mvc/handler/json.js +65 -65
  52. package/dist/mvc/handler/restful.js +35 -35
  53. package/dist/mvc/handler/sse.js +65 -0
  54. package/dist/mvc/handler/upload.js +31 -31
  55. package/dist/mvc/index.js +50 -50
  56. package/dist/mvc/interceptor.js +2 -2
  57. package/dist/mvc/query.js +43 -43
  58. package/dist/mvc/render/file.js +132 -132
  59. package/dist/mvc/render/html/html.js +90 -90
  60. package/dist/mvc/render/html/index.js +18 -18
  61. package/dist/mvc/render/html/style.js +2 -2
  62. package/dist/mvc/render/index.js +7 -7
  63. package/dist/mvc/render/json.js +26 -26
  64. package/dist/mvc/render/text.js +16 -16
  65. package/dist/mvc/router.js +2 -2
  66. package/dist/mvc/server.js +272 -272
  67. package/dist/mvc/static/header.js +67 -67
  68. package/dist/mvc/static/index.js +6 -6
  69. package/dist/mvc/static/mime-type.js +84 -84
  70. package/dist/mvc/static/server-cache-config.js +66 -66
  71. package/dist/mvc/static/server-cache.js +133 -133
  72. package/dist/mvc/static/static-handler.js +372 -372
  73. package/dist/mysql/config.js +51 -51
  74. package/dist/mysql/exception.js +14 -14
  75. package/dist/mysql/index.js +87 -87
  76. package/dist/mysql/manager/base.js +278 -239
  77. package/dist/mysql/manager/index.js +107 -107
  78. package/dist/mysql/manager/ops/count.js +20 -20
  79. package/dist/mysql/manager/ops/criteria.js +381 -356
  80. package/dist/mysql/manager/ops/delete.js +59 -65
  81. package/dist/mysql/manager/ops/exist.js +26 -26
  82. package/dist/mysql/manager/ops/find.js +149 -169
  83. package/dist/mysql/manager/ops/index.js +16 -14
  84. package/dist/mysql/manager/ops/insert.js +132 -106
  85. package/dist/mysql/manager/ops/modify.js +10 -10
  86. package/dist/mysql/manager/ops/order-by.js +28 -0
  87. package/dist/mysql/manager/ops/paginate.js +48 -23
  88. package/dist/mysql/manager/ops/query.js +9 -9
  89. package/dist/mysql/manager/ops/update.js +222 -216
  90. package/dist/mysql/manager/ops/upsert.js +178 -0
  91. package/dist/mysql/manager/ops/utils.js +28 -24
  92. package/dist/mysql/manager/tx-strict.js +103 -103
  93. package/dist/mysql/manager/tx.js +30 -30
  94. package/dist/mysql/manager/utils.js +56 -56
  95. package/dist/mysql/migration.js +136 -136
  96. package/dist/mysql/table-info.js +8 -8
  97. package/dist/task/daily.js +59 -59
  98. package/dist/task/fixed-delay.js +38 -38
  99. package/dist/task/fixed-rate.js +42 -42
  100. package/dist/task/index.js +9 -9
  101. package/dist/task/task.js +56 -56
  102. package/dist/validation/exception.js +36 -36
  103. package/dist/validation/index.js +40 -40
  104. package/dist/validation/validator/array.js +34 -34
  105. package/dist/validation/validator/enum.js +28 -28
  106. package/dist/validation/validator/index.js +14 -14
  107. package/dist/validation/validator/length.js +40 -40
  108. package/dist/validation/validator/max-length.js +35 -35
  109. package/dist/validation/validator/max.js +29 -29
  110. package/dist/validation/validator/min-length.js +33 -33
  111. package/dist/validation/validator/min.js +29 -29
  112. package/dist/validation/validator/not-blank.js +33 -33
  113. package/dist/validation/validator/not-null.js +21 -21
  114. package/dist/validation/validator/plain-obj.js +32 -32
  115. package/dist/validation/validator/regexp.js +34 -34
  116. package/documentation/en/cache.md +56 -0
  117. package/documentation/en/config.md +96 -0
  118. package/documentation/en/engineering.md +256 -0
  119. package/documentation/en/http-client.md +32 -0
  120. package/documentation/en/i18n.md +143 -0
  121. package/documentation/en/index.md +24 -0
  122. package/documentation/en/lock.md +51 -0
  123. package/documentation/en/log.md +109 -0
  124. package/documentation/en/mongodb.md +256 -0
  125. package/documentation/en/mvc.md +688 -0
  126. package/documentation/en/mysql.md +682 -0
  127. package/documentation/en/task.md +45 -0
  128. package/documentation/en/test.md +56 -0
  129. package/documentation/en/validate.md +130 -0
  130. package/documentation/zh-cn/mvc.md +66 -24
  131. package/documentation/zh-cn/mysql.md +146 -17
  132. package/package.json +4 -1
  133. package/skills/wok-server-api-rules/SKILL.md +350 -0
  134. package/skills/wok-server-cache/SKILL.md +216 -0
  135. package/skills/wok-server-code-navigation/SKILL.md +153 -0
  136. package/skills/wok-server-config/SKILL.md +200 -0
  137. package/skills/wok-server-getting-started/SKILL.md +123 -0
  138. package/skills/wok-server-getting-started/references/engineering.md +169 -0
  139. package/skills/wok-server-http-client/SKILL.md +164 -0
  140. package/skills/wok-server-i18n/SKILL.md +214 -0
  141. package/skills/wok-server-lock/SKILL.md +144 -0
  142. package/skills/wok-server-log/SKILL.md +218 -0
  143. package/skills/wok-server-mongodb/SKILL.md +235 -0
  144. package/skills/wok-server-mvc/SKILL.md +251 -0
  145. package/skills/wok-server-mvc/references/respond-html.md +157 -0
  146. package/skills/wok-server-mvc/references/sse.md +121 -0
  147. package/skills/wok-server-mvc/references/static-files.md +47 -0
  148. package/skills/wok-server-mvc/references/upload.md +62 -0
  149. package/skills/wok-server-mvc/references/websocket.md +30 -0
  150. package/skills/wok-server-mysql/SKILL.md +388 -0
  151. package/skills/wok-server-mysql/references/multi-datasource.md +76 -0
  152. package/skills/wok-server-mysql/references/version-control.md +22 -0
  153. package/skills/wok-server-task/SKILL.md +158 -0
  154. package/skills/wok-server-validate/SKILL.md +167 -0
  155. package/src/cache/cache.ts +118 -0
  156. package/src/cache/config.ts +53 -0
  157. package/src/cache/index.ts +27 -0
  158. package/src/cache/purge-task.ts +53 -0
  159. package/src/cache/stat.ts +47 -0
  160. package/src/config/convert.ts +27 -0
  161. package/src/config/exception.ts +8 -0
  162. package/src/config/index.ts +92 -0
  163. package/src/http-client/index.ts +202 -0
  164. package/src/i18n/ar.ts +16 -0
  165. package/src/i18n/de.ts +16 -0
  166. package/src/i18n/en-us.ts +16 -0
  167. package/src/i18n/es.ts +16 -0
  168. package/src/i18n/fr.ts +16 -0
  169. package/src/i18n/i18n.ts +230 -0
  170. package/src/i18n/index.ts +50 -0
  171. package/src/i18n/ja.ts +16 -0
  172. package/src/i18n/ko.ts +16 -0
  173. package/src/i18n/msg.ts +50 -0
  174. package/src/i18n/pt.ts +16 -0
  175. package/src/i18n/ru.ts +16 -0
  176. package/src/i18n/tag.ts +18 -0
  177. package/src/i18n/zh-HK.ts +16 -0
  178. package/src/i18n/zh-TW.ts +16 -0
  179. package/src/i18n/zh-cn.ts +16 -0
  180. package/src/index.ts +11 -0
  181. package/src/lock/index.ts +164 -0
  182. package/src/log/config.ts +71 -0
  183. package/src/log/date.ts +19 -0
  184. package/src/log/file.ts +215 -0
  185. package/src/log/index.ts +136 -0
  186. package/src/log/level.ts +29 -0
  187. package/src/log/log.ts +77 -0
  188. package/src/log/store.ts +31 -0
  189. package/src/mongodb/collection.ts +25 -0
  190. package/src/mongodb/config.ts +69 -0
  191. package/src/mongodb/doc.ts +12 -0
  192. package/src/mongodb/exception.ts +8 -0
  193. package/src/mongodb/index.ts +71 -0
  194. package/src/mongodb/manager/base.ts +674 -0
  195. package/src/mongodb/manager/index.ts +80 -0
  196. package/src/mongodb/manager/tx-strict.ts +153 -0
  197. package/src/mongodb/manager/tx.ts +34 -0
  198. package/src/mongodb/migration.ts +66 -0
  199. package/src/mvc/access-log.ts +33 -0
  200. package/src/mvc/config.ts +70 -0
  201. package/src/mvc/exchange.ts +126 -0
  202. package/src/mvc/handler/index.ts +4 -0
  203. package/src/mvc/handler/json.ts +96 -0
  204. package/src/mvc/handler/restful.ts +39 -0
  205. package/src/mvc/handler/sse.ts +90 -0
  206. package/src/mvc/handler/upload.ts +54 -0
  207. package/src/mvc/index.ts +48 -0
  208. package/src/mvc/interceptor.ts +12 -0
  209. package/src/mvc/query.ts +36 -0
  210. package/src/mvc/render/file.ts +148 -0
  211. package/src/mvc/render/html/html.ts +187 -0
  212. package/src/mvc/render/html/index.ts +16 -0
  213. package/src/mvc/render/html/style.ts +1201 -0
  214. package/src/mvc/render/index.ts +4 -0
  215. package/src/mvc/render/json.ts +24 -0
  216. package/src/mvc/render/text.ts +14 -0
  217. package/src/mvc/router.ts +13 -0
  218. package/src/mvc/server.ts +315 -0
  219. package/src/mvc/static/header.ts +86 -0
  220. package/src/mvc/static/index.ts +3 -0
  221. package/src/mvc/static/mime-type.ts +81 -0
  222. package/src/mvc/static/server-cache-config.ts +92 -0
  223. package/src/mvc/static/server-cache.ts +171 -0
  224. package/src/mvc/static/static-handler.ts +445 -0
  225. package/src/mysql/config.ts +130 -0
  226. package/src/mysql/exception.ts +8 -0
  227. package/src/mysql/index.ts +88 -0
  228. package/src/mysql/manager/base.ts +332 -0
  229. package/src/mysql/manager/index.ts +112 -0
  230. package/src/mysql/manager/ops/count.ts +30 -0
  231. package/src/mysql/manager/ops/criteria.ts +446 -0
  232. package/src/mysql/manager/ops/delete.ts +91 -0
  233. package/src/mysql/manager/ops/exist.ts +41 -0
  234. package/src/mysql/manager/ops/find.ts +209 -0
  235. package/src/mysql/manager/ops/index.ts +13 -0
  236. package/src/mysql/manager/ops/insert.ts +158 -0
  237. package/src/mysql/manager/ops/modify.ts +14 -0
  238. package/src/mysql/manager/ops/order-by.ts +58 -0
  239. package/src/mysql/manager/ops/paginate.ts +100 -0
  240. package/src/mysql/manager/ops/query.ts +13 -0
  241. package/src/mysql/manager/ops/update.ts +318 -0
  242. package/src/mysql/manager/ops/upsert.ts +224 -0
  243. package/src/mysql/manager/ops/utils.ts +24 -0
  244. package/src/mysql/manager/tx-strict.ts +138 -0
  245. package/src/mysql/manager/tx.ts +31 -0
  246. package/src/mysql/manager/utils.ts +75 -0
  247. package/src/mysql/migration.ts +149 -0
  248. package/src/mysql/table-info.ts +41 -0
  249. package/src/task/daily.ts +70 -0
  250. package/src/task/fixed-delay.ts +45 -0
  251. package/src/task/fixed-rate.ts +49 -0
  252. package/src/task/index.ts +4 -0
  253. package/src/task/task.ts +70 -0
  254. package/src/validation/exception.ts +27 -0
  255. package/src/validation/index.ts +61 -0
  256. package/src/validation/validator/array.ts +32 -0
  257. package/src/validation/validator/enum.ts +25 -0
  258. package/src/validation/validator/index.ts +11 -0
  259. package/src/validation/validator/length.ts +42 -0
  260. package/src/validation/validator/max-length.ts +33 -0
  261. package/src/validation/validator/max.ts +26 -0
  262. package/src/validation/validator/min-length.ts +31 -0
  263. package/src/validation/validator/min.ts +26 -0
  264. package/src/validation/validator/not-blank.ts +31 -0
  265. package/src/validation/validator/not-null.ts +19 -0
  266. package/src/validation/validator/plain-obj.ts +30 -0
  267. package/src/validation/validator/regexp.ts +32 -0
  268. package/types/cache/cache.d.ts +52 -52
  269. package/types/cache/config.d.ts +32 -32
  270. package/types/cache/index.d.ts +2 -2
  271. package/types/cache/purge-task.d.ts +11 -11
  272. package/types/cache/stat.d.ts +26 -26
  273. package/types/config/convert.d.ts +6 -6
  274. package/types/config/exception.d.ts +7 -7
  275. package/types/config/index.d.ts +25 -25
  276. package/types/http-client/index.d.ts +71 -71
  277. package/types/i18n/ar.d.ts +2 -2
  278. package/types/i18n/de.d.ts +2 -2
  279. package/types/i18n/en-us.d.ts +2 -2
  280. package/types/i18n/es.d.ts +2 -2
  281. package/types/i18n/fr.d.ts +2 -2
  282. package/types/i18n/i18n.d.ts +102 -102
  283. package/types/i18n/index.d.ts +9 -9
  284. package/types/i18n/ja.d.ts +2 -2
  285. package/types/i18n/ko.d.ts +2 -2
  286. package/types/i18n/msg.d.ts +50 -50
  287. package/types/i18n/pt.d.ts +2 -2
  288. package/types/i18n/ru.d.ts +2 -2
  289. package/types/i18n/tag.d.ts +11 -11
  290. package/types/i18n/zh-HK.d.ts +2 -2
  291. package/types/i18n/zh-TW.d.ts +2 -2
  292. package/types/i18n/zh-cn.d.ts +2 -2
  293. package/types/index.d.ts +11 -11
  294. package/types/lock/index.d.ts +64 -64
  295. package/types/log/config.d.ts +35 -35
  296. package/types/log/date.d.ts +2 -2
  297. package/types/log/file.d.ts +13 -13
  298. package/types/log/index.d.ts +53 -53
  299. package/types/log/level.d.ts +14 -14
  300. package/types/log/log.d.ts +40 -40
  301. package/types/log/store.d.ts +19 -19
  302. package/types/mongodb/collection.d.ts +25 -25
  303. package/types/mongodb/config.d.ts +45 -45
  304. package/types/mongodb/doc.d.ts +11 -11
  305. package/types/mongodb/exception.d.ts +7 -7
  306. package/types/mongodb/index.d.ts +29 -29
  307. package/types/mongodb/manager/base.d.ts +188 -188
  308. package/types/mongodb/manager/index.d.ts +38 -38
  309. package/types/mongodb/manager/tx-strict.d.ts +41 -41
  310. package/types/mongodb/manager/tx.d.ts +21 -21
  311. package/types/mongodb/migration.d.ts +12 -12
  312. package/types/mvc/access-log.d.ts +7 -7
  313. package/types/mvc/config.d.ts +42 -42
  314. package/types/mvc/exchange.d.ts +72 -72
  315. package/types/mvc/handler/index.d.ts +4 -3
  316. package/types/mvc/handler/json.d.ts +44 -44
  317. package/types/mvc/handler/restful.d.ts +11 -11
  318. package/types/mvc/handler/sse.d.ts +34 -0
  319. package/types/mvc/handler/upload.d.ts +36 -36
  320. package/types/mvc/index.d.ts +22 -22
  321. package/types/mvc/interceptor.d.ts +11 -11
  322. package/types/mvc/query.d.ts +13 -13
  323. package/types/mvc/render/file.d.ts +10 -10
  324. package/types/mvc/render/html/html.d.ts +98 -98
  325. package/types/mvc/render/html/index.d.ts +11 -11
  326. package/types/mvc/render/html/style.d.ts +1201 -1201
  327. package/types/mvc/render/index.d.ts +4 -4
  328. package/types/mvc/render/json.d.ts +17 -17
  329. package/types/mvc/render/text.d.ts +10 -10
  330. package/types/mvc/router.d.ts +11 -11
  331. package/types/mvc/server.d.ts +90 -90
  332. package/types/mvc/static/header.d.ts +27 -27
  333. package/types/mvc/static/index.d.ts +3 -3
  334. package/types/mvc/static/mime-type.d.ts +2 -2
  335. package/types/mvc/static/server-cache-config.d.ts +30 -30
  336. package/types/mvc/static/server-cache.d.ts +76 -76
  337. package/types/mvc/static/static-handler.d.ts +77 -77
  338. package/types/mysql/config.d.ts +90 -90
  339. package/types/mysql/exception.d.ts +7 -7
  340. package/types/mysql/index.d.ts +16 -16
  341. package/types/mysql/manager/base.d.ts +196 -165
  342. package/types/mysql/manager/index.d.ts +36 -36
  343. package/types/mysql/manager/ops/count.d.ts +13 -13
  344. package/types/mysql/manager/ops/criteria.d.ts +144 -134
  345. package/types/mysql/manager/ops/delete.d.ts +47 -46
  346. package/types/mysql/manager/ops/exist.d.ts +6 -6
  347. package/types/mysql/manager/ops/find.d.ts +87 -86
  348. package/types/mysql/manager/ops/index.d.ts +12 -10
  349. package/types/mysql/manager/ops/insert.d.ts +32 -18
  350. package/types/mysql/manager/ops/modify.d.ts +3 -3
  351. package/types/mysql/manager/ops/order-by.d.ts +38 -0
  352. package/types/mysql/manager/ops/paginate.d.ts +53 -36
  353. package/types/mysql/manager/ops/query.d.ts +3 -3
  354. package/types/mysql/manager/ops/update.d.ts +99 -76
  355. package/types/mysql/manager/ops/upsert.d.ts +36 -0
  356. package/types/mysql/manager/ops/utils.d.ts +5 -5
  357. package/types/mysql/manager/tx-strict.d.ts +36 -36
  358. package/types/mysql/manager/tx.d.ts +15 -15
  359. package/types/mysql/manager/utils.d.ts +17 -17
  360. package/types/mysql/migration.d.ts +8 -8
  361. package/types/mysql/table-info.d.ts +36 -36
  362. package/types/task/daily.d.ts +16 -16
  363. package/types/task/fixed-delay.d.ts +9 -9
  364. package/types/task/fixed-rate.d.ts +9 -9
  365. package/types/task/index.d.ts +4 -4
  366. package/types/task/task.d.ts +34 -34
  367. package/types/validation/exception.d.ts +38 -38
  368. package/types/validation/index.d.ts +32 -32
  369. package/types/validation/validator/array.d.ts +5 -5
  370. package/types/validation/validator/enum.d.ts +8 -8
  371. package/types/validation/validator/index.d.ts +11 -11
  372. package/types/validation/validator/length.d.ts +10 -10
  373. package/types/validation/validator/max-length.d.ts +8 -8
  374. package/types/validation/validator/max.d.ts +7 -7
  375. package/types/validation/validator/min-length.d.ts +6 -6
  376. package/types/validation/validator/min.d.ts +7 -7
  377. package/types/validation/validator/not-blank.d.ts +7 -7
  378. package/types/validation/validator/not-null.d.ts +6 -6
  379. package/types/validation/validator/plain-obj.d.ts +7 -7
  380. package/types/validation/validator/regexp.d.ts +8 -8
@@ -1,106 +1,132 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.insertMany = exports.insert = void 0;
4
- const exception_1 = require("../../exception");
5
- const utils_1 = require("../utils");
6
- const utils_2 = require("./utils");
7
- /**
8
- * 为表插入数据
9
- * @param connection
10
- * @param table
11
- * @param data
12
- * @returns
13
- */
14
- async function insert(config, connection, table, data) {
15
- // 插入后的新数据
16
- // 列信息,使用 set 防止 columns 中重复配置 id 和更新创建时间列
17
- let columnsSet = new Set();
18
- // 判定下 id ,如果有值,才在 insert 语句中出现 id 列,否则不出现
19
- if (data[table.id]) {
20
- columnsSet.add(table.id);
21
- }
22
- table.columns.forEach(col => columnsSet.add(col));
23
- if (table.createdDate) {
24
- const createdData = table.createdDate.type === 'date' ? new Date() : new Date().getTime();
25
- data[table.createdDate.column] = createdData;
26
- columnsSet.add(table.createdDate.column);
27
- }
28
- if (table.updatedDate) {
29
- const updatedDate = table.updatedDate.type === 'date' ? new Date() : new Date().getTime();
30
- data[table.updatedDate.column] = updatedDate;
31
- columnsSet.add(table.updatedDate.column);
32
- }
33
- const columns = Array.from(columnsSet);
34
- // 构建 sql
35
- const sql = `insert into ??(${columns.map(() => '??').join(',')}) values(${columns
36
- .map(() => '?')
37
- .join(',')})`;
38
- const values = [
39
- table.tableName,
40
- ...columns,
41
- ...columns.map(col => (0, utils_2.processColumnValue)(data[col]))
42
- ];
43
- const res = await (0, utils_1.promiseQuery)(config, connection, sql, values);
44
- const packet = res;
45
- if (packet.affectedRows !== 1) {
46
- throw new exception_1.MysqlException(`Insert failed,table:${table.tableName},primary key: ${data[table.id]}`);
47
- }
48
- // 自动生成的id处理
49
- if (packet.insertId && (data[table.id] === undefined || data[table.id] === null)) {
50
- data[table.id] = packet.insertId;
51
- }
52
- return data;
53
- }
54
- exports.insert = insert;
55
- /**
56
- * 一次插入多条记录
57
- * @param connection 连接
58
- * @param table 表
59
- * @param list 要插入的记录列表
60
- */
61
- async function insertMany(config, connection, table, list) {
62
- if (!list.length) {
63
- return;
64
- }
65
- // 列信息,使用 set 防止 columns 中重复配置 id 和更新创建时间列
66
- let columnsSet = new Set();
67
- // 批量插入必须统一使用 id 或不使用 id,以第一条记录为准
68
- if (list[0][table.id]) {
69
- columnsSet.add(table.id);
70
- }
71
- table.columns.forEach(col => columnsSet.add(col));
72
- let createdData = undefined;
73
- if (table.createdDate) {
74
- createdData = table.createdDate.type === 'date' ? new Date() : new Date().getTime();
75
- columnsSet.add(table.createdDate.column);
76
- }
77
- let updatedDate = undefined;
78
- if (table.updatedDate) {
79
- updatedDate = table.updatedDate.type === 'date' ? new Date() : new Date().getTime();
80
- columnsSet.add(table.updatedDate.column);
81
- }
82
- const columns = Array.from(columnsSet);
83
- // 构建 sql
84
- let sql = `insert into ??(${columns.map(() => '??').join(',')}) values`;
85
- const values = [table.tableName, ...columns];
86
- list.forEach((data, idx) => {
87
- if (idx > 0) {
88
- sql += ',';
89
- }
90
- sql += `(${columns.map(() => '?').join(',')})`;
91
- if (table.createdDate) {
92
- data[table.createdDate.column] = createdData;
93
- }
94
- if (table.updatedDate) {
95
- data[table.updatedDate.column] = updatedDate;
96
- }
97
- values.push(...columns.map(col => (0, utils_2.processColumnValue)(data[col])));
98
- });
99
- const res = await (0, utils_1.promiseQuery)(config, connection, sql, values);
100
- const rsh = res;
101
- if (rsh.affectedRows !== list.length) {
102
- throw new exception_1.MysqlException(`Insert many for table ${table.tableName} failed,expected to insert ${list.length} records, actually ${rsh.affectedRows}.`);
103
- }
104
- // insert 插入多条记录是不会返回生成的 id 的,所以就没有办法自动处理
105
- }
106
- exports.insertMany = insertMany;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.insertMany = exports.insert = exports.processInsertValue = void 0;
4
+ const exception_1 = require("../../exception");
5
+ const utils_1 = require("../utils");
6
+ const utils_2 = require("./utils");
7
+ /**
8
+ * 处理 insert value,支持表达式
9
+ * @returns { frag: SQL 片段, values: 参数值数组 }
10
+ */
11
+ function processInsertValue(value) {
12
+ if (Array.isArray(value)) {
13
+ if (value[0] === 'now') {
14
+ return { frag: 'NOW()', values: [] };
15
+ }
16
+ if (value[0] === 'set') {
17
+ return { frag: '?', values: [(0, utils_2.processColumnValue)(value[1])] };
18
+ }
19
+ if (value[0] === 'expr') {
20
+ return { frag: value[1], values: value[2] || [] };
21
+ }
22
+ }
23
+ return { frag: '?', values: [(0, utils_2.processColumnValue)(value)] };
24
+ }
25
+ exports.processInsertValue = processInsertValue;
26
+ /**
27
+ * 为表插入数据
28
+ * @param connection
29
+ * @param table
30
+ * @param data
31
+ * @returns
32
+ */
33
+ async function insert(config, connection, table, data) {
34
+ // 列信息,使用 set 防止 columns 中重复配置 id 和更新创建时间列
35
+ let columnsSet = new Set();
36
+ // 判定下 id ,如果有值,才在 insert 语句中出现 id 列,否则不出现
37
+ if (data[table.id]) {
38
+ columnsSet.add(table.id);
39
+ }
40
+ table.columns.forEach(col => columnsSet.add(col));
41
+ if (table.createdDate) {
42
+ const createdData = table.createdDate.type === 'date' ? new Date() : new Date().getTime();
43
+ data[table.createdDate.column] = createdData;
44
+ columnsSet.add(table.createdDate.column);
45
+ }
46
+ if (table.updatedDate) {
47
+ const updatedDate = table.updatedDate.type === 'date' ? new Date() : new Date().getTime();
48
+ data[table.updatedDate.column] = updatedDate;
49
+ columnsSet.add(table.updatedDate.column);
50
+ }
51
+ const columns = Array.from(columnsSet);
52
+ // 构建 sql,逐列处理以支持表达式
53
+ const fragList = [];
54
+ const insertValues = [];
55
+ for (const col of columns) {
56
+ const { frag, values: vs } = processInsertValue(data[col]);
57
+ fragList.push(frag);
58
+ insertValues.push(...vs);
59
+ }
60
+ const sql = `insert into ??(${columns.map(() => '??').join(',')}) values(${fragList.join(',')})`;
61
+ const values = [table.tableName, ...columns, ...insertValues];
62
+ const res = await (0, utils_1.promiseQuery)(config, connection, sql, values);
63
+ const packet = res;
64
+ if (packet.affectedRows !== 1) {
65
+ throw new exception_1.MysqlException(`Insert failed,table:${table.tableName},primary key: ${data[table.id]}`);
66
+ }
67
+ // 自动生成的id处理
68
+ if (packet.insertId && (data[table.id] === undefined || data[table.id] === null)) {
69
+ data[table.id] = packet.insertId;
70
+ }
71
+ return data;
72
+ }
73
+ exports.insert = insert;
74
+ /**
75
+ * 一次插入多条记录
76
+ * @param connection 连接
77
+ * @param table 表
78
+ * @param list 要插入的记录列表
79
+ */
80
+ async function insertMany(config, connection, table, list) {
81
+ if (!list.length) {
82
+ return;
83
+ }
84
+ // 列信息,使用 set 防止 columns 中重复配置 id 和更新创建时间列
85
+ let columnsSet = new Set();
86
+ // 批量插入必须统一使用 id 或不使用 id,以第一条记录为准
87
+ if (list[0][table.id]) {
88
+ columnsSet.add(table.id);
89
+ }
90
+ table.columns.forEach(col => columnsSet.add(col));
91
+ let createdData = undefined;
92
+ if (table.createdDate) {
93
+ createdData = table.createdDate.type === 'date' ? new Date() : new Date().getTime();
94
+ columnsSet.add(table.createdDate.column);
95
+ }
96
+ let updatedDate = undefined;
97
+ if (table.updatedDate) {
98
+ updatedDate = table.updatedDate.type === 'date' ? new Date() : new Date().getTime();
99
+ columnsSet.add(table.updatedDate.column);
100
+ }
101
+ const columns = Array.from(columnsSet);
102
+ // 构建 sql
103
+ let sql = `insert into ??(${columns.map(() => '??').join(',')}) values`;
104
+ const values = [table.tableName, ...columns];
105
+ list.forEach((data, idx) => {
106
+ if (idx > 0) {
107
+ sql += ',';
108
+ }
109
+ const fragList = [];
110
+ const rowValues = [];
111
+ if (table.createdDate) {
112
+ data[table.createdDate.column] = createdData;
113
+ }
114
+ if (table.updatedDate) {
115
+ data[table.updatedDate.column] = updatedDate;
116
+ }
117
+ for (const col of columns) {
118
+ const { frag, values: vs } = processInsertValue(data[col]);
119
+ fragList.push(frag);
120
+ rowValues.push(...vs);
121
+ }
122
+ sql += `(${fragList.join(',')})`;
123
+ values.push(...rowValues);
124
+ });
125
+ const res = await (0, utils_1.promiseQuery)(config, connection, sql, values);
126
+ const rsh = res;
127
+ if (rsh.affectedRows !== list.length) {
128
+ throw new exception_1.MysqlException(`Insert many for table ${table.tableName} failed,expected to insert ${list.length} records, actually ${rsh.affectedRows}.`);
129
+ }
130
+ // insert 插入多条记录是不会返回生成的 id 的,所以就没有办法自动处理
131
+ }
132
+ exports.insertMany = insertMany;
@@ -1,10 +1,10 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.modify = void 0;
4
- const utils_1 = require("../utils");
5
- async function modify(config, connection, sql, values) {
6
- const res = await (0, utils_1.promiseQuery)(config, connection, sql, values || []);
7
- const pck = res;
8
- return pck.affectedRows;
9
- }
10
- exports.modify = modify;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.modify = void 0;
4
+ const utils_1 = require("../utils");
5
+ async function modify(config, connection, sql, values) {
6
+ const res = await (0, utils_1.promiseQuery)(config, connection, sql, values || []);
7
+ const pck = res;
8
+ return pck.affectedRows;
9
+ }
10
+ exports.modify = modify;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildOrderBy = void 0;
4
+ /**
5
+ * 构建 ORDER BY 子句.
6
+ *
7
+ * @param orderBy 排序规则
8
+ * @returns { sql: SQL 片段, values: 参数值数组 }
9
+ */
10
+ function buildOrderBy(orderBy) {
11
+ const fragments = [];
12
+ const values = [];
13
+ orderBy.forEach((item, idx) => {
14
+ const prefix = idx === 0 ? ' order by ' : ' , ';
15
+ if (item.length === 4 && item[0] === 'expr') {
16
+ const [, exprSql, exprValues, sort] = item;
17
+ fragments.push(`${prefix}${exprSql} ${sort}`);
18
+ values.push(...exprValues);
19
+ }
20
+ else {
21
+ const [field, sort] = item;
22
+ fragments.push(`${prefix}?? ${sort}`);
23
+ values.push(field);
24
+ }
25
+ });
26
+ return { sql: fragments.join(''), values };
27
+ }
28
+ exports.buildOrderBy = buildOrderBy;
@@ -1,23 +1,48 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.paginate = void 0;
4
- const count_1 = require("./count");
5
- const find_1 = require("./find");
6
- async function paginate(config, conn, opts) {
7
- const pn = opts.pn && opts.pn >= 1 ? opts.pn : 1;
8
- const limit = opts.pz && opts.pz >= 1 && opts.pz <= 1000 ? opts.pz : 20;
9
- const offset = (pn - 1) * limit;
10
- const list = await (0, find_1.find)(config, conn, {
11
- table: opts.table,
12
- criteria: opts.criteria,
13
- offset,
14
- limit,
15
- orderBy: opts.orderBy
16
- });
17
- const total = await (0, count_1.count)(config, conn, opts.table, opts.criteria);
18
- return {
19
- total,
20
- list
21
- };
22
- }
23
- exports.paginate = paginate;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.paginateSelect = exports.paginate = void 0;
4
+ const count_1 = require("./count");
5
+ const find_1 = require("./find");
6
+ async function paginate(config, conn, opts) {
7
+ const pn = opts.pn && opts.pn >= 1 ? opts.pn : 1;
8
+ const limit = opts.pz && opts.pz >= 1 && opts.pz <= 1000 ? opts.pz : 20;
9
+ const offset = (pn - 1) * limit;
10
+ const list = await (0, find_1.find)(config, conn, {
11
+ table: opts.table,
12
+ criteria: opts.criteria,
13
+ offset,
14
+ limit,
15
+ orderBy: opts.orderBy
16
+ });
17
+ const total = await (0, count_1.count)(config, conn, opts.table, opts.criteria);
18
+ return {
19
+ total,
20
+ list
21
+ };
22
+ }
23
+ exports.paginate = paginate;
24
+ /**
25
+ * 指定字段分页查询
26
+ * @param config
27
+ * @param conn
28
+ * @param opts
29
+ */
30
+ async function paginateSelect(config, conn, opts) {
31
+ const pn = opts.pn && opts.pn >= 1 ? opts.pn : 1;
32
+ const limit = opts.pz && opts.pz >= 1 && opts.pz <= 1000 ? opts.pz : 20;
33
+ const offset = (pn - 1) * limit;
34
+ const list = await (0, find_1.findSelect)(config, conn, {
35
+ table: opts.table,
36
+ criteria: opts.criteria,
37
+ offset,
38
+ limit,
39
+ orderBy: opts.orderBy,
40
+ select: opts.select
41
+ });
42
+ const total = await (0, count_1.count)(config, conn, opts.table, opts.criteria);
43
+ return {
44
+ total,
45
+ list
46
+ };
47
+ }
48
+ exports.paginateSelect = paginateSelect;
@@ -1,9 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.query = void 0;
4
- const utils_1 = require("../utils");
5
- async function query(config, connection, sql, values) {
6
- const res = await (0, utils_1.promiseQuery)(config, connection, sql, values || []);
7
- return res;
8
- }
9
- exports.query = query;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.query = void 0;
4
+ const utils_1 = require("../utils");
5
+ async function query(config, connection, sql, values) {
6
+ const res = await (0, utils_1.promiseQuery)(config, connection, sql, values || []);
7
+ return res;
8
+ }
9
+ exports.query = query;