@budibase/server 1.0.105-alpha.3 → 1.0.105-alpha.30

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 (310) hide show
  1. package/builder/assets/index.0a453ed0.js +1296 -0
  2. package/builder/assets/{index.ea3718aa.css → index.f602f4de.css} +2 -2
  3. package/builder/index.html +2 -2
  4. package/coverage/clover.xml +711 -1678
  5. package/coverage/coverage-final.json +30 -45
  6. package/coverage/lcov-report/api/controllers/analytics.js.html +8 -3
  7. package/coverage/lcov-report/api/controllers/apikeys.js.html +9 -4
  8. package/coverage/lcov-report/api/controllers/auth.js.html +8 -3
  9. package/coverage/lcov-report/api/controllers/automation.js.html +8 -3
  10. package/coverage/lcov-report/api/controllers/backup.js.html +8 -3
  11. package/coverage/lcov-report/api/controllers/cloud.js.html +8 -3
  12. package/coverage/lcov-report/api/controllers/component.js.html +8 -3
  13. package/coverage/lcov-report/api/controllers/datasource.js.html +11 -6
  14. package/coverage/lcov-report/api/controllers/dev.js.html +8 -3
  15. package/coverage/lcov-report/api/controllers/index.html +16 -26
  16. package/coverage/lcov-report/api/controllers/integration.js.html +8 -3
  17. package/coverage/lcov-report/api/controllers/layout.js.html +8 -3
  18. package/coverage/lcov-report/api/controllers/metadata.js.html +8 -3
  19. package/coverage/lcov-report/api/controllers/migrations.js.html +8 -3
  20. package/coverage/lcov-report/api/controllers/permission.js.html +8 -3
  21. package/coverage/lcov-report/api/controllers/query/index.html +16 -26
  22. package/coverage/lcov-report/api/controllers/query/validation.js.html +8 -3
  23. package/coverage/lcov-report/api/controllers/role.js.html +10 -5
  24. package/coverage/lcov-report/api/controllers/routing.js.html +9 -4
  25. package/coverage/lcov-report/api/controllers/row/external.js.html +8 -3
  26. package/coverage/lcov-report/api/controllers/row/index.html +25 -35
  27. package/coverage/lcov-report/api/controllers/row/internal.js.html +32 -24
  28. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +21 -16
  29. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +24 -19
  30. package/coverage/lcov-report/api/controllers/row/utils.js.html +33 -19
  31. package/coverage/lcov-report/api/controllers/screen.js.html +9 -4
  32. package/coverage/lcov-report/api/controllers/script.js.html +8 -3
  33. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +55 -50
  34. package/coverage/lcov-report/api/controllers/table/external.js.html +8 -3
  35. package/coverage/lcov-report/api/controllers/table/index.html +19 -44
  36. package/coverage/lcov-report/api/controllers/table/index.js.html +20 -15
  37. package/coverage/lcov-report/api/controllers/templates.js.html +8 -3
  38. package/coverage/lcov-report/api/controllers/user.js.html +8 -3
  39. package/coverage/lcov-report/api/controllers/view/exporters.js.html +8 -3
  40. package/coverage/lcov-report/api/controllers/view/index.html +8 -3
  41. package/coverage/lcov-report/api/controllers/view/index.js.html +10 -5
  42. package/coverage/lcov-report/api/controllers/view/utils.js.html +8 -3
  43. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +8 -3
  44. package/coverage/lcov-report/api/controllers/webhook.js.html +10 -5
  45. package/coverage/lcov-report/api/index.html +18 -13
  46. package/coverage/lcov-report/api/index.js.html +28 -8
  47. package/coverage/lcov-report/api/routes/analytics.js.html +8 -3
  48. package/coverage/lcov-report/api/routes/apikeys.js.html +8 -3
  49. package/coverage/lcov-report/api/routes/auth.js.html +8 -3
  50. package/coverage/lcov-report/api/routes/automation.js.html +8 -3
  51. package/coverage/lcov-report/api/routes/backup.js.html +8 -3
  52. package/coverage/lcov-report/api/routes/cloud.js.html +8 -3
  53. package/coverage/lcov-report/api/routes/component.js.html +8 -3
  54. package/coverage/lcov-report/api/routes/datasource.js.html +8 -3
  55. package/coverage/lcov-report/api/routes/deploy.js.html +8 -3
  56. package/coverage/lcov-report/api/routes/dev.js.html +9 -4
  57. package/coverage/lcov-report/api/routes/index.html +13 -68
  58. package/coverage/lcov-report/api/routes/integration.js.html +8 -3
  59. package/coverage/lcov-report/api/routes/layout.js.html +8 -3
  60. package/coverage/lcov-report/api/routes/metadata.js.html +8 -3
  61. package/coverage/lcov-report/api/routes/migrations.js.html +8 -3
  62. package/coverage/lcov-report/api/routes/permission.js.html +8 -3
  63. package/coverage/lcov-report/api/routes/query.js.html +8 -3
  64. package/coverage/lcov-report/api/routes/role.js.html +8 -3
  65. package/coverage/lcov-report/api/routes/routing.js.html +8 -3
  66. package/coverage/lcov-report/api/routes/screen.js.html +8 -3
  67. package/coverage/lcov-report/api/routes/script.js.html +8 -3
  68. package/coverage/lcov-report/api/routes/table.js.html +8 -3
  69. package/coverage/lcov-report/api/routes/templates.js.html +8 -3
  70. package/coverage/lcov-report/api/routes/user.js.html +8 -3
  71. package/coverage/lcov-report/api/routes/utils/index.html +8 -3
  72. package/coverage/lcov-report/api/routes/utils/validators.js.html +8 -3
  73. package/coverage/lcov-report/api/routes/view.js.html +8 -3
  74. package/coverage/lcov-report/api/routes/webhook.js.html +8 -3
  75. package/coverage/lcov-report/automations/actions.js.html +21 -7
  76. package/coverage/lcov-report/automations/automationUtils.js.html +64 -23
  77. package/coverage/lcov-report/automations/bullboard.js.html +8 -3
  78. package/coverage/lcov-report/automations/index.html +27 -37
  79. package/coverage/lcov-report/automations/index.js.html +8 -3
  80. package/coverage/lcov-report/automations/steps/bash.js.html +8 -3
  81. package/coverage/lcov-report/automations/steps/delay.js.html +8 -3
  82. package/coverage/lcov-report/automations/steps/discord.js.html +8 -3
  83. package/coverage/lcov-report/automations/steps/executeQuery.js.html +8 -3
  84. package/coverage/lcov-report/automations/steps/executeScript.js.html +8 -3
  85. package/coverage/lcov-report/automations/steps/filter.js.html +8 -3
  86. package/coverage/lcov-report/automations/steps/index.html +31 -41
  87. package/coverage/lcov-report/automations/steps/integromat.js.html +8 -3
  88. package/coverage/lcov-report/{api/routes/static.js.html → automations/steps/loop.js.html} +70 -80
  89. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +9 -4
  90. package/coverage/lcov-report/automations/steps/queryRows.js.html +9 -4
  91. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +8 -3
  92. package/coverage/lcov-report/automations/steps/serverLog.js.html +8 -3
  93. package/coverage/lcov-report/automations/steps/slack.js.html +8 -3
  94. package/coverage/lcov-report/automations/steps/updateRow.js.html +8 -3
  95. package/coverage/lcov-report/automations/steps/utils.js.html +14 -9
  96. package/coverage/lcov-report/automations/steps/zapier.js.html +8 -3
  97. package/coverage/lcov-report/automations/triggerInfo/app.js.html +8 -3
  98. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +8 -3
  99. package/coverage/lcov-report/automations/triggerInfo/index.html +8 -3
  100. package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -3
  101. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +8 -3
  102. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +8 -3
  103. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +8 -3
  104. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +8 -3
  105. package/coverage/lcov-report/automations/triggers.js.html +16 -11
  106. package/coverage/lcov-report/block-navigation.js +8 -0
  107. package/coverage/lcov-report/constants/index.html +12 -7
  108. package/coverage/lcov-report/constants/index.js.html +54 -31
  109. package/coverage/lcov-report/constants/layouts.js.html +8 -3
  110. package/coverage/lcov-report/constants/screens.js.html +8 -3
  111. package/coverage/lcov-report/db/client.js.html +26 -21
  112. package/coverage/lcov-report/db/inMemoryView.js.html +8 -3
  113. package/coverage/lcov-report/db/index.html +8 -3
  114. package/coverage/lcov-report/db/index.js.html +10 -5
  115. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +20 -15
  116. package/coverage/lcov-report/db/linkedRows/index.html +8 -3
  117. package/coverage/lcov-report/db/linkedRows/index.js.html +22 -17
  118. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +12 -7
  119. package/coverage/lcov-report/db/newid.js.html +11 -6
  120. package/coverage/lcov-report/db/utils.js.html +83 -78
  121. package/coverage/lcov-report/events/AutomationEmitter.js.html +14 -9
  122. package/coverage/lcov-report/events/index.html +8 -3
  123. package/coverage/lcov-report/events/index.js.html +9 -4
  124. package/coverage/lcov-report/events/utils.js.html +18 -13
  125. package/coverage/lcov-report/index.html +124 -119
  126. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +8 -3
  127. package/coverage/lcov-report/integrations/tests/index.html +8 -3
  128. package/coverage/lcov-report/middleware/appInfo.js.html +8 -3
  129. package/coverage/lcov-report/middleware/builder.js.html +8 -3
  130. package/coverage/lcov-report/middleware/currentapp.js.html +65 -15
  131. package/coverage/lcov-report/middleware/index.html +25 -50
  132. package/coverage/lcov-report/middleware/joi-validator.js.html +9 -4
  133. package/coverage/lcov-report/middleware/publicApi.js.html +8 -3
  134. package/coverage/lcov-report/middleware/resourceId.js.html +8 -3
  135. package/coverage/lcov-report/middleware/selfhost.js.html +9 -4
  136. package/coverage/lcov-report/middleware/utils.js.html +8 -3
  137. package/coverage/lcov-report/sorter.js +26 -0
  138. package/coverage/lcov-report/threads/automation.js.html +581 -90
  139. package/coverage/lcov-report/threads/index.html +27 -37
  140. package/coverage/lcov-report/threads/query.js.html +10 -5
  141. package/coverage/lcov-report/threads/utils.js.html +11 -6
  142. package/coverage/lcov-report/utilities/bcrypt.js.html +8 -3
  143. package/coverage/lcov-report/utilities/budibaseDir.js.html +8 -3
  144. package/coverage/lcov-report/utilities/centralPath.js.html +8 -3
  145. package/coverage/lcov-report/utilities/csvParser.js.html +10 -5
  146. package/coverage/lcov-report/utilities/global.js.html +9 -4
  147. package/coverage/lcov-report/utilities/index.html +8 -3
  148. package/coverage/lcov-report/utilities/index.js.html +11 -6
  149. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +32 -9
  150. package/coverage/lcov-report/utilities/queue/index.html +12 -7
  151. package/coverage/lcov-report/utilities/routing/index.html +8 -3
  152. package/coverage/lcov-report/utilities/routing/index.js.html +8 -3
  153. package/coverage/lcov-report/utilities/rowProcessor/index.html +8 -3
  154. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +46 -41
  155. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +18 -13
  156. package/coverage/lcov-report/utilities/scriptRunner.js.html +8 -3
  157. package/coverage/lcov-report/utilities/security.js.html +9 -4
  158. package/coverage/lcov-report/utilities/statusCodes.js.html +8 -3
  159. package/coverage/lcov-report/utilities/usageQuota/index.html +24 -34
  160. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +45 -40
  161. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +8 -3
  162. package/coverage/lcov-report/utilities/users.js.html +8 -3
  163. package/coverage/lcov-report/utilities/workerRequests.js.html +9 -4
  164. package/coverage/lcov.info +1141 -2837
  165. package/dist/api/controllers/application.js +138 -70
  166. package/dist/api/controllers/deploy/index.js +64 -35
  167. package/dist/api/controllers/public/applications.js +29 -9
  168. package/dist/api/controllers/public/queries.js +27 -7
  169. package/dist/api/controllers/public/rows.js +32 -12
  170. package/dist/api/controllers/public/tables.js +2 -2
  171. package/dist/api/controllers/public/users.js +8 -8
  172. package/dist/api/controllers/public/utils.js +1 -1
  173. package/dist/api/controllers/query/import/index.js +3 -3
  174. package/dist/api/controllers/query/index.js +57 -44
  175. package/dist/api/controllers/row/ExternalRequest.js +27 -27
  176. package/dist/api/controllers/row/index.js +83 -60
  177. package/dist/api/controllers/row/internal.js +2 -1
  178. package/dist/api/controllers/row/utils.js +2 -1
  179. package/dist/api/controllers/static/templates/BudibaseApp.svelte +3 -0
  180. package/dist/api/controllers/table/bulkFormula.js +2 -1
  181. package/dist/api/controllers/table/internal.js +40 -34
  182. package/dist/api/controllers/table/utils.js +271 -229
  183. package/dist/api/index.js +5 -0
  184. package/dist/api/routes/application.js +39 -13
  185. package/dist/api/routes/index.js +61 -56
  186. package/dist/api/routes/public/index.js +6 -9
  187. package/dist/api/routes/public/queries.js +1 -1
  188. package/dist/api/routes/public/rows.js +1 -1
  189. package/dist/api/routes/public/tables.js +3 -3
  190. package/dist/api/routes/public/users.js +1 -1
  191. package/dist/api/routes/row.js +43 -17
  192. package/dist/api/routes/static.js +40 -13
  193. package/dist/api/routes/tests/utilities/TestFunctions.js +62 -26
  194. package/dist/app.js +11 -4
  195. package/dist/automations/actions.js +3 -0
  196. package/dist/automations/automationUtils.js +10 -0
  197. package/dist/automations/steps/createRow.js +12 -12
  198. package/dist/automations/steps/deleteRow.js +13 -16
  199. package/dist/automations/steps/loop.js +51 -0
  200. package/dist/automations/tests/utilities/index.js +0 -2
  201. package/dist/automations/utils.js +187 -132
  202. package/dist/constants/index.js +5 -0
  203. package/dist/environment.js +1 -2
  204. package/dist/integrations/base/sql.js +2 -2
  205. package/dist/integrations/base/sqlTable.js +2 -2
  206. package/dist/integrations/googlesheets.js +1 -1
  207. package/dist/integrations/microsoftSqlServer.js +8 -8
  208. package/dist/integrations/mysql.js +9 -9
  209. package/dist/integrations/oracle.js +7 -7
  210. package/dist/integrations/postgres.js +7 -7
  211. package/dist/integrations/rest.js +1 -1
  212. package/dist/middleware/authorized.js +51 -51
  213. package/dist/middleware/currentapp.js +15 -1
  214. package/dist/migrations/functions/appUrls.js +1 -1
  215. package/dist/migrations/functions/developerQuota.js +49 -0
  216. package/dist/migrations/functions/publishedAppsQuota.js +47 -0
  217. package/dist/migrations/functions/quotas1.js +6 -2
  218. package/dist/migrations/functions/usageQuotas/index.js +0 -4
  219. package/dist/migrations/functions/usageQuotas/syncApps.js +4 -7
  220. package/dist/migrations/functions/usageQuotas/syncDevelopers.js +24 -0
  221. package/dist/migrations/functions/usageQuotas/syncPublishedApps.js +26 -0
  222. package/dist/migrations/functions/usageQuotas/syncRows.js +5 -8
  223. package/dist/migrations/index.js +17 -1
  224. package/dist/package.json +11 -8
  225. package/dist/threads/automation.js +149 -27
  226. package/dist/threads/index.js +35 -8
  227. package/dist/tsconfig.build.tsbuildinfo +1 -0
  228. package/dist/utilities/queue/inMemoryQueue.js +6 -1
  229. package/nodemon.json +1 -1
  230. package/package.json +12 -9
  231. package/scripts/dev/manage.js +2 -0
  232. package/src/api/controllers/{application.js → application.ts} +103 -44
  233. package/src/api/controllers/deploy/{index.js → index.ts} +45 -28
  234. package/src/api/controllers/public/applications.ts +2 -2
  235. package/src/api/controllers/public/queries.ts +1 -1
  236. package/src/api/controllers/public/rows.ts +1 -1
  237. package/src/api/controllers/query/{index.js → index.ts} +51 -48
  238. package/src/api/controllers/row/ExternalRequest.ts +1 -1
  239. package/src/api/controllers/row/{index.js → index.ts} +24 -17
  240. package/src/api/controllers/row/internal.js +2 -1
  241. package/src/api/controllers/row/utils.js +4 -1
  242. package/src/api/controllers/static/templates/BudibaseApp.svelte +3 -0
  243. package/src/api/controllers/table/bulkFormula.js +1 -1
  244. package/src/api/controllers/table/{internal.js → internal.ts} +27 -24
  245. package/src/api/controllers/table/{utils.js → utils.ts} +86 -69
  246. package/src/api/index.js +5 -0
  247. package/src/api/routes/{application.js → application.ts} +8 -14
  248. package/src/api/routes/index.ts +60 -0
  249. package/src/api/routes/public/index.ts +1 -4
  250. package/src/api/routes/{row.js → row.ts} +7 -15
  251. package/src/api/routes/{static.js → static.ts} +11 -11
  252. package/src/api/routes/tests/utilities/{TestFunctions.js → TestFunctions.ts} +42 -25
  253. package/src/app.ts +1 -2
  254. package/src/automations/actions.js +3 -0
  255. package/src/automations/automationUtils.js +12 -0
  256. package/src/automations/steps/{createRow.js → createRow.ts} +9 -15
  257. package/src/automations/steps/{deleteRow.js → deleteRow.ts} +10 -16
  258. package/src/automations/steps/loop.js +50 -0
  259. package/src/automations/tests/automation.spec.js +0 -1
  260. package/src/automations/tests/{createRow.spec.js → createRow.spec.ts} +4 -15
  261. package/src/automations/tests/{deleteRow.spec.js → deleteRow.spec.ts} +3 -5
  262. package/src/automations/tests/utilities/index.js +0 -2
  263. package/src/automations/{utils.js → utils.ts} +39 -27
  264. package/src/constants/index.js +6 -0
  265. package/src/environment.js +1 -2
  266. package/src/middleware/{authorized.js → authorized.ts} +20 -14
  267. package/src/middleware/currentapp.js +16 -1
  268. package/src/migrations/functions/developerQuota.ts +15 -0
  269. package/src/migrations/functions/publishedAppsQuota.ts +13 -0
  270. package/src/migrations/functions/tests/quotas1.spec.js +0 -2
  271. package/src/migrations/functions/usageQuotas/index.ts +0 -5
  272. package/src/migrations/functions/usageQuotas/syncApps.ts +3 -6
  273. package/src/migrations/functions/usageQuotas/syncDevelopers.ts +19 -0
  274. package/src/migrations/functions/usageQuotas/syncPublishedApps.ts +21 -0
  275. package/src/migrations/functions/usageQuotas/syncRows.ts +3 -6
  276. package/src/migrations/functions/usageQuotas/tests/syncApps.spec.ts +32 -0
  277. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +38 -0
  278. package/src/migrations/index.ts +13 -1
  279. package/src/module.d.ts +4 -0
  280. package/src/threads/automation.js +196 -34
  281. package/src/threads/{index.js → index.ts} +14 -12
  282. package/src/utilities/queue/inMemoryQueue.js +7 -1
  283. package/tsconfig.build.json +10 -0
  284. package/tsconfig.json +2 -2
  285. package/builder/assets/index.5778ea01.js +0 -1291
  286. package/coverage/lcov-report/api/controllers/application.js.html +0 -1430
  287. package/coverage/lcov-report/api/controllers/query/index.js.html +0 -713
  288. package/coverage/lcov-report/api/controllers/row/index.js.html +0 -524
  289. package/coverage/lcov-report/api/controllers/table/internal.js.html +0 -548
  290. package/coverage/lcov-report/api/controllers/table/utils.js.html +0 -1331
  291. package/coverage/lcov-report/api/routes/application.js.html +0 -179
  292. package/coverage/lcov-report/api/routes/index.js.html +0 -266
  293. package/coverage/lcov-report/api/routes/row.js.html +0 -908
  294. package/coverage/lcov-report/automations/steps/createRow.js.html +0 -380
  295. package/coverage/lcov-report/automations/steps/deleteRow.js.html +0 -347
  296. package/coverage/lcov-report/automations/utils.js.html +0 -662
  297. package/coverage/lcov-report/middleware/authorized.js.html +0 -458
  298. package/coverage/lcov-report/middleware/usageQuota.js.html +0 -572
  299. package/coverage/lcov-report/threads/index.js.html +0 -278
  300. package/coverage/lcov-report/utilities/usageQuota/index.js.html +0 -359
  301. package/dist/middleware/usageQuota.js +0 -154
  302. package/dist/tsconfig.tsbuildinfo +0 -1
  303. package/dist/utilities/usageQuota/index.js +0 -86
  304. package/src/api/routes/index.js +0 -62
  305. package/src/middleware/tests/usageQuota.spec.js +0 -134
  306. package/src/middleware/usageQuota.js +0 -164
  307. package/src/migrations/functions/usageQuotas/tests/syncApps.spec.js +0 -37
  308. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.js +0 -43
  309. package/src/utilities/tests/usageQuota/usageQuota.spec.js +0 -72
  310. package/src/utilities/usageQuota/index.js +0 -93
@@ -1,548 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for api/controllers/table/internal.js</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../../../prettify.css" />
9
- <link rel="stylesheet" href="../../../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../../../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../../../index.html">All files</a> / <a href="index.html">api/controllers/table</a> internal.js</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">72.46% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>50/69</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">67.64% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>23/34</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">40% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>2/5</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">75.75% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>50/66</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- </div>
58
- <div class='status-line medium'></div>
59
- <pre><table class="coverage">
60
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
61
- <a name='L2'></a><a href='#L2'>2</a>
62
- <a name='L3'></a><a href='#L3'>3</a>
63
- <a name='L4'></a><a href='#L4'>4</a>
64
- <a name='L5'></a><a href='#L5'>5</a>
65
- <a name='L6'></a><a href='#L6'>6</a>
66
- <a name='L7'></a><a href='#L7'>7</a>
67
- <a name='L8'></a><a href='#L8'>8</a>
68
- <a name='L9'></a><a href='#L9'>9</a>
69
- <a name='L10'></a><a href='#L10'>10</a>
70
- <a name='L11'></a><a href='#L11'>11</a>
71
- <a name='L12'></a><a href='#L12'>12</a>
72
- <a name='L13'></a><a href='#L13'>13</a>
73
- <a name='L14'></a><a href='#L14'>14</a>
74
- <a name='L15'></a><a href='#L15'>15</a>
75
- <a name='L16'></a><a href='#L16'>16</a>
76
- <a name='L17'></a><a href='#L17'>17</a>
77
- <a name='L18'></a><a href='#L18'>18</a>
78
- <a name='L19'></a><a href='#L19'>19</a>
79
- <a name='L20'></a><a href='#L20'>20</a>
80
- <a name='L21'></a><a href='#L21'>21</a>
81
- <a name='L22'></a><a href='#L22'>22</a>
82
- <a name='L23'></a><a href='#L23'>23</a>
83
- <a name='L24'></a><a href='#L24'>24</a>
84
- <a name='L25'></a><a href='#L25'>25</a>
85
- <a name='L26'></a><a href='#L26'>26</a>
86
- <a name='L27'></a><a href='#L27'>27</a>
87
- <a name='L28'></a><a href='#L28'>28</a>
88
- <a name='L29'></a><a href='#L29'>29</a>
89
- <a name='L30'></a><a href='#L30'>30</a>
90
- <a name='L31'></a><a href='#L31'>31</a>
91
- <a name='L32'></a><a href='#L32'>32</a>
92
- <a name='L33'></a><a href='#L33'>33</a>
93
- <a name='L34'></a><a href='#L34'>34</a>
94
- <a name='L35'></a><a href='#L35'>35</a>
95
- <a name='L36'></a><a href='#L36'>36</a>
96
- <a name='L37'></a><a href='#L37'>37</a>
97
- <a name='L38'></a><a href='#L38'>38</a>
98
- <a name='L39'></a><a href='#L39'>39</a>
99
- <a name='L40'></a><a href='#L40'>40</a>
100
- <a name='L41'></a><a href='#L41'>41</a>
101
- <a name='L42'></a><a href='#L42'>42</a>
102
- <a name='L43'></a><a href='#L43'>43</a>
103
- <a name='L44'></a><a href='#L44'>44</a>
104
- <a name='L45'></a><a href='#L45'>45</a>
105
- <a name='L46'></a><a href='#L46'>46</a>
106
- <a name='L47'></a><a href='#L47'>47</a>
107
- <a name='L48'></a><a href='#L48'>48</a>
108
- <a name='L49'></a><a href='#L49'>49</a>
109
- <a name='L50'></a><a href='#L50'>50</a>
110
- <a name='L51'></a><a href='#L51'>51</a>
111
- <a name='L52'></a><a href='#L52'>52</a>
112
- <a name='L53'></a><a href='#L53'>53</a>
113
- <a name='L54'></a><a href='#L54'>54</a>
114
- <a name='L55'></a><a href='#L55'>55</a>
115
- <a name='L56'></a><a href='#L56'>56</a>
116
- <a name='L57'></a><a href='#L57'>57</a>
117
- <a name='L58'></a><a href='#L58'>58</a>
118
- <a name='L59'></a><a href='#L59'>59</a>
119
- <a name='L60'></a><a href='#L60'>60</a>
120
- <a name='L61'></a><a href='#L61'>61</a>
121
- <a name='L62'></a><a href='#L62'>62</a>
122
- <a name='L63'></a><a href='#L63'>63</a>
123
- <a name='L64'></a><a href='#L64'>64</a>
124
- <a name='L65'></a><a href='#L65'>65</a>
125
- <a name='L66'></a><a href='#L66'>66</a>
126
- <a name='L67'></a><a href='#L67'>67</a>
127
- <a name='L68'></a><a href='#L68'>68</a>
128
- <a name='L69'></a><a href='#L69'>69</a>
129
- <a name='L70'></a><a href='#L70'>70</a>
130
- <a name='L71'></a><a href='#L71'>71</a>
131
- <a name='L72'></a><a href='#L72'>72</a>
132
- <a name='L73'></a><a href='#L73'>73</a>
133
- <a name='L74'></a><a href='#L74'>74</a>
134
- <a name='L75'></a><a href='#L75'>75</a>
135
- <a name='L76'></a><a href='#L76'>76</a>
136
- <a name='L77'></a><a href='#L77'>77</a>
137
- <a name='L78'></a><a href='#L78'>78</a>
138
- <a name='L79'></a><a href='#L79'>79</a>
139
- <a name='L80'></a><a href='#L80'>80</a>
140
- <a name='L81'></a><a href='#L81'>81</a>
141
- <a name='L82'></a><a href='#L82'>82</a>
142
- <a name='L83'></a><a href='#L83'>83</a>
143
- <a name='L84'></a><a href='#L84'>84</a>
144
- <a name='L85'></a><a href='#L85'>85</a>
145
- <a name='L86'></a><a href='#L86'>86</a>
146
- <a name='L87'></a><a href='#L87'>87</a>
147
- <a name='L88'></a><a href='#L88'>88</a>
148
- <a name='L89'></a><a href='#L89'>89</a>
149
- <a name='L90'></a><a href='#L90'>90</a>
150
- <a name='L91'></a><a href='#L91'>91</a>
151
- <a name='L92'></a><a href='#L92'>92</a>
152
- <a name='L93'></a><a href='#L93'>93</a>
153
- <a name='L94'></a><a href='#L94'>94</a>
154
- <a name='L95'></a><a href='#L95'>95</a>
155
- <a name='L96'></a><a href='#L96'>96</a>
156
- <a name='L97'></a><a href='#L97'>97</a>
157
- <a name='L98'></a><a href='#L98'>98</a>
158
- <a name='L99'></a><a href='#L99'>99</a>
159
- <a name='L100'></a><a href='#L100'>100</a>
160
- <a name='L101'></a><a href='#L101'>101</a>
161
- <a name='L102'></a><a href='#L102'>102</a>
162
- <a name='L103'></a><a href='#L103'>103</a>
163
- <a name='L104'></a><a href='#L104'>104</a>
164
- <a name='L105'></a><a href='#L105'>105</a>
165
- <a name='L106'></a><a href='#L106'>106</a>
166
- <a name='L107'></a><a href='#L107'>107</a>
167
- <a name='L108'></a><a href='#L108'>108</a>
168
- <a name='L109'></a><a href='#L109'>109</a>
169
- <a name='L110'></a><a href='#L110'>110</a>
170
- <a name='L111'></a><a href='#L111'>111</a>
171
- <a name='L112'></a><a href='#L112'>112</a>
172
- <a name='L113'></a><a href='#L113'>113</a>
173
- <a name='L114'></a><a href='#L114'>114</a>
174
- <a name='L115'></a><a href='#L115'>115</a>
175
- <a name='L116'></a><a href='#L116'>116</a>
176
- <a name='L117'></a><a href='#L117'>117</a>
177
- <a name='L118'></a><a href='#L118'>118</a>
178
- <a name='L119'></a><a href='#L119'>119</a>
179
- <a name='L120'></a><a href='#L120'>120</a>
180
- <a name='L121'></a><a href='#L121'>121</a>
181
- <a name='L122'></a><a href='#L122'>122</a>
182
- <a name='L123'></a><a href='#L123'>123</a>
183
- <a name='L124'></a><a href='#L124'>124</a>
184
- <a name='L125'></a><a href='#L125'>125</a>
185
- <a name='L126'></a><a href='#L126'>126</a>
186
- <a name='L127'></a><a href='#L127'>127</a>
187
- <a name='L128'></a><a href='#L128'>128</a>
188
- <a name='L129'></a><a href='#L129'>129</a>
189
- <a name='L130'></a><a href='#L130'>130</a>
190
- <a name='L131'></a><a href='#L131'>131</a>
191
- <a name='L132'></a><a href='#L132'>132</a>
192
- <a name='L133'></a><a href='#L133'>133</a>
193
- <a name='L134'></a><a href='#L134'>134</a>
194
- <a name='L135'></a><a href='#L135'>135</a>
195
- <a name='L136'></a><a href='#L136'>136</a>
196
- <a name='L137'></a><a href='#L137'>137</a>
197
- <a name='L138'></a><a href='#L138'>138</a>
198
- <a name='L139'></a><a href='#L139'>139</a>
199
- <a name='L140'></a><a href='#L140'>140</a>
200
- <a name='L141'></a><a href='#L141'>141</a>
201
- <a name='L142'></a><a href='#L142'>142</a>
202
- <a name='L143'></a><a href='#L143'>143</a>
203
- <a name='L144'></a><a href='#L144'>144</a>
204
- <a name='L145'></a><a href='#L145'>145</a>
205
- <a name='L146'></a><a href='#L146'>146</a>
206
- <a name='L147'></a><a href='#L147'>147</a>
207
- <a name='L148'></a><a href='#L148'>148</a>
208
- <a name='L149'></a><a href='#L149'>149</a>
209
- <a name='L150'></a><a href='#L150'>150</a>
210
- <a name='L151'></a><a href='#L151'>151</a>
211
- <a name='L152'></a><a href='#L152'>152</a>
212
- <a name='L153'></a><a href='#L153'>153</a>
213
- <a name='L154'></a><a href='#L154'>154</a>
214
- <a name='L155'></a><a href='#L155'>155</a>
215
- <a name='L156'></a><a href='#L156'>156</a>
216
- <a name='L157'></a><a href='#L157'>157</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">40x</span>
217
- <span class="cline-any cline-yes">40x</span>
218
- <span class="cline-any cline-yes">40x</span>
219
- <span class="cline-any cline-neutral">&nbsp;</span>
220
- <span class="cline-any cline-neutral">&nbsp;</span>
221
- <span class="cline-any cline-neutral">&nbsp;</span>
222
- <span class="cline-any cline-neutral">&nbsp;</span>
223
- <span class="cline-any cline-neutral">&nbsp;</span>
224
- <span class="cline-any cline-yes">40x</span>
225
- <span class="cline-any cline-yes">40x</span>
226
- <span class="cline-any cline-yes">40x</span>
227
- <span class="cline-any cline-yes">40x</span>
228
- <span class="cline-any cline-yes">40x</span>
229
- <span class="cline-any cline-yes">40x</span>
230
- <span class="cline-any cline-neutral">&nbsp;</span>
231
- <span class="cline-any cline-yes">40x</span>
232
- <span class="cline-any cline-yes">106x</span>
233
- <span class="cline-any cline-yes">106x</span>
234
- <span class="cline-any cline-yes">106x</span>
235
- <span class="cline-any cline-neutral">&nbsp;</span>
236
- <span class="cline-any cline-neutral">&nbsp;</span>
237
- <span class="cline-any cline-neutral">&nbsp;</span>
238
- <span class="cline-any cline-neutral">&nbsp;</span>
239
- <span class="cline-any cline-neutral">&nbsp;</span>
240
- <span class="cline-any cline-neutral">&nbsp;</span>
241
- <span class="cline-any cline-neutral">&nbsp;</span>
242
- <span class="cline-any cline-neutral">&nbsp;</span>
243
- <span class="cline-any cline-yes">106x</span>
244
- <span class="cline-any cline-yes">5x</span>
245
- <span class="cline-any cline-neutral">&nbsp;</span>
246
- <span class="cline-any cline-neutral">&nbsp;</span>
247
- <span class="cline-any cline-yes">106x</span>
248
- <span class="cline-any cline-no">&nbsp;</span>
249
- <span class="cline-any cline-neutral">&nbsp;</span>
250
- <span class="cline-any cline-neutral">&nbsp;</span>
251
- <span class="cline-any cline-neutral">&nbsp;</span>
252
- <span class="cline-any cline-neutral">&nbsp;</span>
253
- <span class="cline-any cline-yes">106x</span>
254
- <span class="cline-any cline-neutral">&nbsp;</span>
255
- <span class="cline-any cline-neutral">&nbsp;</span>
256
- <span class="cline-any cline-neutral">&nbsp;</span>
257
- <span class="cline-any cline-neutral">&nbsp;</span>
258
- <span class="cline-any cline-yes">106x</span>
259
- <span class="cline-any cline-neutral">&nbsp;</span>
260
- <span class="cline-any cline-neutral">&nbsp;</span>
261
- <span class="cline-any cline-neutral">&nbsp;</span>
262
- <span class="cline-any cline-yes">106x</span>
263
- <span class="cline-any cline-yes">5x</span>
264
- <span class="cline-any cline-yes">15x</span>
265
- <span class="cline-any cline-yes">15x</span>
266
- <span class="cline-any cline-no">&nbsp;</span>
267
- <span class="cline-any cline-neutral">&nbsp;</span>
268
- <span class="cline-any cline-neutral">&nbsp;</span>
269
- <span class="cline-any cline-neutral">&nbsp;</span>
270
- <span class="cline-any cline-neutral">&nbsp;</span>
271
- <span class="cline-any cline-neutral">&nbsp;</span>
272
- <span class="cline-any cline-yes">106x</span>
273
- <span class="cline-any cline-neutral">&nbsp;</span>
274
- <span class="cline-any cline-neutral">&nbsp;</span>
275
- <span class="cline-any cline-neutral">&nbsp;</span>
276
- <span class="cline-any cline-neutral">&nbsp;</span>
277
- <span class="cline-any cline-neutral">&nbsp;</span>
278
- <span class="cline-any cline-neutral">&nbsp;</span>
279
- <span class="cline-any cline-neutral">&nbsp;</span>
280
- <span class="cline-any cline-neutral">&nbsp;</span>
281
- <span class="cline-any cline-neutral">&nbsp;</span>
282
- <span class="cline-any cline-neutral">&nbsp;</span>
283
- <span class="cline-any cline-neutral">&nbsp;</span>
284
- <span class="cline-any cline-neutral">&nbsp;</span>
285
- <span class="cline-any cline-yes">106x</span>
286
- <span class="cline-any cline-neutral">&nbsp;</span>
287
- <span class="cline-any cline-neutral">&nbsp;</span>
288
- <span class="cline-any cline-yes">106x</span>
289
- <span class="cline-any cline-no">&nbsp;</span>
290
- <span class="cline-any cline-no">&nbsp;</span>
291
- <span class="cline-any cline-neutral">&nbsp;</span>
292
- <span class="cline-any cline-no">&nbsp;</span>
293
- <span class="cline-any cline-no">&nbsp;</span>
294
- <span class="cline-any cline-neutral">&nbsp;</span>
295
- <span class="cline-any cline-neutral">&nbsp;</span>
296
- <span class="cline-any cline-neutral">&nbsp;</span>
297
- <span class="cline-any cline-yes">106x</span>
298
- <span class="cline-any cline-yes">106x</span>
299
- <span class="cline-any cline-neutral">&nbsp;</span>
300
- <span class="cline-any cline-neutral">&nbsp;</span>
301
- <span class="cline-any cline-neutral">&nbsp;</span>
302
- <span class="cline-any cline-neutral">&nbsp;</span>
303
- <span class="cline-any cline-neutral">&nbsp;</span>
304
- <span class="cline-any cline-neutral">&nbsp;</span>
305
- <span class="cline-any cline-yes">106x</span>
306
- <span class="cline-any cline-yes">5x</span>
307
- <span class="cline-any cline-neutral">&nbsp;</span>
308
- <span class="cline-any cline-neutral">&nbsp;</span>
309
- <span class="cline-any cline-no">&nbsp;</span>
310
- <span class="cline-any cline-neutral">&nbsp;</span>
311
- <span class="cline-any cline-neutral">&nbsp;</span>
312
- <span class="cline-any cline-neutral">&nbsp;</span>
313
- <span class="cline-any cline-neutral">&nbsp;</span>
314
- <span class="cline-any cline-yes">106x</span>
315
- <span class="cline-any cline-yes">106x</span>
316
- <span class="cline-any cline-yes">1x</span>
317
- <span class="cline-any cline-neutral">&nbsp;</span>
318
- <span class="cline-any cline-yes">106x</span>
319
- <span class="cline-any cline-yes">106x</span>
320
- <span class="cline-any cline-neutral">&nbsp;</span>
321
- <span class="cline-any cline-yes">106x</span>
322
- <span class="cline-any cline-neutral">&nbsp;</span>
323
- <span class="cline-any cline-yes">106x</span>
324
- <span class="cline-any cline-yes">106x</span>
325
- <span class="cline-any cline-neutral">&nbsp;</span>
326
- <span class="cline-any cline-neutral">&nbsp;</span>
327
- <span class="cline-any cline-yes">40x</span>
328
- <span class="cline-any cline-yes">3x</span>
329
- <span class="cline-any cline-yes">3x</span>
330
- <span class="cline-any cline-neutral">&nbsp;</span>
331
- <span class="cline-any cline-neutral">&nbsp;</span>
332
- <span class="cline-any cline-yes">3x</span>
333
- <span class="cline-any cline-neutral">&nbsp;</span>
334
- <span class="cline-any cline-neutral">&nbsp;</span>
335
- <span class="cline-any cline-neutral">&nbsp;</span>
336
- <span class="cline-any cline-neutral">&nbsp;</span>
337
- <span class="cline-any cline-yes">3x</span>
338
- <span class="cline-any cline-yes">3x</span>
339
- <span class="cline-any cline-neutral">&nbsp;</span>
340
- <span class="cline-any cline-neutral">&nbsp;</span>
341
- <span class="cline-any cline-yes">3x</span>
342
- <span class="cline-any cline-neutral">&nbsp;</span>
343
- <span class="cline-any cline-neutral">&nbsp;</span>
344
- <span class="cline-any cline-neutral">&nbsp;</span>
345
- <span class="cline-any cline-neutral">&nbsp;</span>
346
- <span class="cline-any cline-neutral">&nbsp;</span>
347
- <span class="cline-any cline-yes">3x</span>
348
- <span class="cline-any cline-neutral">&nbsp;</span>
349
- <span class="cline-any cline-neutral">&nbsp;</span>
350
- <span class="cline-any cline-yes">3x</span>
351
- <span class="cline-any cline-no">&nbsp;</span>
352
- <span class="cline-any cline-no">&nbsp;</span>
353
- <span class="cline-any cline-no">&nbsp;</span>
354
- <span class="cline-any cline-neutral">&nbsp;</span>
355
- <span class="cline-any cline-no">&nbsp;</span>
356
- <span class="cline-any cline-no">&nbsp;</span>
357
- <span class="cline-any cline-neutral">&nbsp;</span>
358
- <span class="cline-any cline-neutral">&nbsp;</span>
359
- <span class="cline-any cline-neutral">&nbsp;</span>
360
- <span class="cline-any cline-neutral">&nbsp;</span>
361
- <span class="cline-any cline-yes">3x</span>
362
- <span class="cline-any cline-yes">3x</span>
363
- <span class="cline-any cline-yes">3x</span>
364
- <span class="cline-any cline-neutral">&nbsp;</span>
365
- <span class="cline-any cline-neutral">&nbsp;</span>
366
- <span class="cline-any cline-yes">40x</span>
367
- <span class="cline-any cline-no">&nbsp;</span>
368
- <span class="cline-any cline-no">&nbsp;</span>
369
- <span class="cline-any cline-no">&nbsp;</span>
370
- <span class="cline-any cline-no">&nbsp;</span>
371
- <span class="cline-any cline-neutral">&nbsp;</span>
372
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const linkRows = require("../../../db/linkedRows")
373
- const { getRowParams, generateTableID } = require("../../../db/utils")
374
- const { FieldTypes } = require("../../../constants")
375
- const {
376
- TableSaveFunctions,
377
- hasTypeChanged,
378
- getTable,
379
- handleDataImport,
380
- } = require("./utils")
381
- const usageQuota = require("../../../utilities/usageQuota")
382
- const { getAppDB } = require("@budibase/backend-core/context")
383
- const env = require("../../../environment")
384
- const { cleanupAttachments } = require("../../../utilities/rowProcessor")
385
- const { runStaticFormulaChecks } = require("./bulkFormula")
386
- &nbsp;
387
- exports.save = async function (ctx) {
388
- const db = getAppDB()
389
- const { dataImport, ...rest } = ctx.request.body
390
- let tableToSave = {
391
- type: "table",
392
- _id: generateTableID(),
393
- views: {},
394
- ...rest,
395
- }
396
- &nbsp;
397
- // if the table obj had an _id then it will have been retrieved
398
- let oldTable
399
- if (ctx.request.body &amp;&amp; ctx.request.body._id) {
400
- oldTable = await db.get(ctx.request.body._id)
401
- }
402
- &nbsp;
403
- <span class="missing-if-branch" title="if path not taken" >I</span>if (hasTypeChanged(tableToSave, oldTable)) {
404
- <span class="cstat-no" title="statement not covered" > ctx.throw(400, "A column type has changed.")</span>
405
- }
406
- &nbsp;
407
- // saving a table is a complex operation, involving many different steps, this
408
- // has been broken out into a utility to make it more obvious/easier to manipulate
409
- const tableSaveFunctions = new TableSaveFunctions({
410
- user: ctx.user,
411
- oldTable,
412
- dataImport,
413
- })
414
- tableToSave = await tableSaveFunctions.before(tableToSave)
415
- &nbsp;
416
- // make sure that types don't change of a column, have to remove
417
- // the column if you want to change the type
418
- if (oldTable &amp;&amp; oldTable.schema) {
419
- for (let propKey of Object.keys(tableToSave.schema)) {
420
- let oldColumn = oldTable.schema[propKey]
421
- <span class="missing-if-branch" title="if path not taken" >I</span>if (oldColumn &amp;&amp; oldColumn.type === "internal") {
422
- <span class="cstat-no" title="statement not covered" > oldColumn.type = "auto"</span>
423
- }
424
- }
425
- }
426
- &nbsp;
427
- // Don't rename if the name is the same
428
- let { _rename } = tableToSave
429
- /* istanbul ignore next */
430
- if (_rename &amp;&amp; _rename.old === _rename.updated) {
431
- _rename = null
432
- delete tableToSave._rename
433
- }
434
- &nbsp;
435
- // rename row fields when table column is renamed
436
- /* istanbul ignore next */
437
- if (_rename &amp;&amp; tableToSave.schema[_rename.updated].type === FieldTypes.LINK) {
438
- ctx.throw(400, "Cannot rename a linked column.")
439
- }
440
- &nbsp;
441
- tableToSave = await tableSaveFunctions.mid(tableToSave)
442
- &nbsp;
443
- // update schema of non-statistics views when new columns are added
444
- for (let view in tableToSave.views) {
445
- const tableView = <span class="cstat-no" title="statement not covered" >tableToSave.views[view]</span>
446
- <span class="cstat-no" title="statement not covered" > if (!tableView) <span class="cstat-no" title="statement not covered" >continue</span></span>
447
- &nbsp;
448
- <span class="cstat-no" title="statement not covered" > if (tableView.schema.group || tableView.schema.field) <span class="cstat-no" title="statement not covered" >continue</span></span>
449
- <span class="cstat-no" title="statement not covered" > tableView.schema = tableToSave.schema</span>
450
- }
451
- &nbsp;
452
- // update linked rows
453
- try {
454
- const linkResp = await linkRows.updateLinks({
455
- eventType: oldTable
456
- ? linkRows.EventType.TABLE_UPDATED
457
- : linkRows.EventType.TABLE_SAVE,
458
- table: tableToSave,
459
- oldTable: oldTable,
460
- })
461
- if (linkResp != null &amp;&amp; linkResp._rev) {
462
- tableToSave._rev = linkResp._rev
463
- }
464
- } catch (err) {
465
- <span class="cstat-no" title="statement not covered" > ctx.throw(400, err)</span>
466
- }
467
- &nbsp;
468
- // don't perform any updates until relationships have been
469
- // checked by the updateLinks function
470
- const updatedRows = tableSaveFunctions.getUpdatedRows()
471
- if (updatedRows &amp;&amp; updatedRows.length !== 0) {
472
- await db.bulkDocs(updatedRows)
473
- }
474
- const result = await db.put(tableToSave)
475
- tableToSave._rev = result.rev
476
- &nbsp;
477
- tableToSave = await tableSaveFunctions.after(tableToSave)
478
- // has to run after, make sure it has _id
479
- await runStaticFormulaChecks(tableToSave, { oldTable })
480
- return tableToSave
481
- }
482
- &nbsp;
483
- exports.destroy = async function (ctx) {
484
- const db = getAppDB()
485
- const tableToDelete = await db.get(ctx.params.tableId)
486
- &nbsp;
487
- // Delete all rows for that table
488
- const rows = await db.allDocs(
489
- getRowParams(ctx.params.tableId, null, {
490
- include_docs: true,
491
- })
492
- )
493
- await db.bulkDocs(rows.rows.map(<span class="fstat-no" title="function not covered" >ro</span>w =&gt; (<span class="cstat-no" title="statement not covered" >{ ...row.doc, _deleted: true })</span>))
494
- await usageQuota.update(usageQuota.Properties.ROW, -rows.rows.length)
495
- &nbsp;
496
- // update linked rows
497
- await linkRows.updateLinks({
498
- eventType: linkRows.EventType.TABLE_DELETE,
499
- table: tableToDelete,
500
- })
501
- &nbsp;
502
- // don't remove the table itself until very end
503
- await db.remove(tableToDelete)
504
- &nbsp;
505
- // remove table search index
506
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!env.isTest()) {
507
- const currentIndexes = <span class="cstat-no" title="statement not covered" >await db.getIndexes()</span>
508
- const existingIndex = <span class="cstat-no" title="statement not covered" >currentIndexes.indexes.find(</span>
509
- <span class="fstat-no" title="function not covered" > ex</span>isting =&gt; <span class="cstat-no" title="statement not covered" >existing.name === `search:${ctx.params.tableId}`</span>
510
- )
511
- <span class="cstat-no" title="statement not covered" > if (existingIndex) {</span>
512
- <span class="cstat-no" title="statement not covered" > await db.deleteIndex(existingIndex)</span>
513
- }
514
- }
515
- &nbsp;
516
- // has to run after, make sure it has _id
517
- await runStaticFormulaChecks(tableToDelete, { deletion: true })
518
- await cleanupAttachments(tableToDelete, { rows })
519
- return tableToDelete
520
- }
521
- &nbsp;
522
- exports.bulkImport = <span class="fstat-no" title="function not covered" >as</span>ync function (ctx) {
523
- const table = <span class="cstat-no" title="statement not covered" >await getTable(ctx.params.tableId)</span>
524
- const { dataImport } = <span class="cstat-no" title="statement not covered" >ctx.request.body</span>
525
- <span class="cstat-no" title="statement not covered" > await handleDataImport(ctx.user, table, dataImport)</span>
526
- <span class="cstat-no" title="statement not covered" > return table</span>
527
- }
528
- &nbsp;</pre></td></tr></table></pre>
529
-
530
- <div class='push'></div><!-- for sticky footer -->
531
- </div><!-- /wrapper -->
532
- <div class='footer quiet pad2 space-top1 center small'>
533
- Code coverage generated by
534
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
535
- at Wed Apr 06 2022 08:58:17 GMT+0000 (Coordinated Universal Time)
536
- </div>
537
- </div>
538
- <script src="../../../prettify.js"></script>
539
- <script>
540
- window.onload = function () {
541
- prettyPrint();
542
- };
543
- </script>
544
- <script src="../../../sorter.js"></script>
545
- <script src="../../../block-navigation.js"></script>
546
- </body>
547
- </html>
548
-