@budibase/server 1.0.48 → 1.0.49-alpha.3

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 (289) hide show
  1. package/builder/assets/{index.e083dcaf.js → index.21e57eb4.js} +234 -231
  2. package/builder/assets/index.83c0944f.css +1 -0
  3. package/builder/assets/{vendor.f9faf6ab.js → vendor.d526bfe8.js} +12 -12
  4. package/builder/index.html +3 -3
  5. package/coverage/clover.xml +2338 -2028
  6. package/coverage/coverage-final.json +100 -95
  7. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/application.js.html +210 -126
  10. package/coverage/lcov-report/api/controllers/auth.js.html +18 -6
  11. package/coverage/lcov-report/api/controllers/automation.js.html +21 -21
  12. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/component.js.html +4 -4
  15. package/coverage/lcov-report/api/controllers/datasource.js.html +72 -36
  16. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/index.html +53 -53
  18. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/layout.js.html +6 -6
  20. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/migrations.js.html +119 -0
  22. package/coverage/lcov-report/api/controllers/permission.js.html +15 -15
  23. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  24. package/coverage/lcov-report/api/controllers/query/index.js.html +19 -19
  25. package/coverage/lcov-report/api/controllers/query/validation.js.html +6 -6
  26. package/coverage/lcov-report/api/controllers/role.js.html +9 -9
  27. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/external.js.html +16 -16
  29. package/coverage/lcov-report/api/controllers/row/index.html +48 -33
  30. package/coverage/lcov-report/api/controllers/row/index.js.html +26 -26
  31. package/coverage/lcov-report/api/controllers/row/internal.js.html +95 -158
  32. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +41 -17
  33. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +551 -0
  34. package/coverage/lcov-report/api/controllers/row/utils.js.html +39 -57
  35. package/coverage/lcov-report/api/controllers/screen.js.html +7 -7
  36. package/coverage/lcov-report/api/controllers/script.js.html +4 -4
  37. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +629 -0
  38. package/coverage/lcov-report/api/controllers/table/external.js.html +12 -12
  39. package/coverage/lcov-report/api/controllers/table/index.html +46 -31
  40. package/coverage/lcov-report/api/controllers/table/index.js.html +53 -77
  41. package/coverage/lcov-report/api/controllers/table/internal.js.html +59 -35
  42. package/coverage/lcov-report/api/controllers/table/utils.js.html +217 -73
  43. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  44. package/coverage/lcov-report/api/controllers/user.js.html +30 -24
  45. package/coverage/lcov-report/api/controllers/view/exporters.js.html +4 -4
  46. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  47. package/coverage/lcov-report/api/controllers/view/index.js.html +14 -14
  48. package/coverage/lcov-report/api/controllers/view/utils.js.html +11 -11
  49. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +7 -7
  50. package/coverage/lcov-report/api/controllers/webhook.js.html +15 -15
  51. package/coverage/lcov-report/api/index.html +1 -1
  52. package/coverage/lcov-report/api/index.js.html +8 -8
  53. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/index.html +18 -18
  65. package/coverage/lcov-report/api/routes/index.js.html +3 -3
  66. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/{hosting.js.html → migrations.js.html} +17 -14
  70. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/static.js.html +17 -2
  78. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  79. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  80. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  81. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  82. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  83. package/coverage/lcov-report/automations/actions.js.html +24 -24
  84. package/coverage/lcov-report/automations/automationUtils.js.html +5 -5
  85. package/coverage/lcov-report/automations/bullboard.js.html +16 -16
  86. package/coverage/lcov-report/automations/index.html +1 -1
  87. package/coverage/lcov-report/automations/index.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/bash.js.html +6 -6
  89. package/coverage/lcov-report/automations/steps/createRow.js.html +13 -19
  90. package/coverage/lcov-report/automations/steps/delay.js.html +4 -4
  91. package/coverage/lcov-report/automations/steps/deleteRow.js.html +11 -20
  92. package/coverage/lcov-report/automations/steps/discord.js.html +7 -7
  93. package/coverage/lcov-report/automations/steps/executeQuery.js.html +6 -6
  94. package/coverage/lcov-report/automations/steps/executeScript.js.html +6 -6
  95. package/coverage/lcov-report/automations/steps/filter.js.html +7 -7
  96. package/coverage/lcov-report/automations/steps/index.html +13 -13
  97. package/coverage/lcov-report/automations/steps/integromat.js.html +5 -5
  98. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +8 -8
  99. package/coverage/lcov-report/automations/steps/queryRows.js.html +10 -10
  100. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +5 -5
  101. package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -3
  102. package/coverage/lcov-report/automations/steps/slack.js.html +5 -5
  103. package/coverage/lcov-report/automations/steps/updateRow.js.html +6 -6
  104. package/coverage/lcov-report/automations/steps/utils.js.html +3 -3
  105. package/coverage/lcov-report/automations/steps/zapier.js.html +5 -5
  106. package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
  107. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
  108. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  109. package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
  110. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
  111. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
  112. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
  113. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
  114. package/coverage/lcov-report/automations/triggers.js.html +18 -18
  115. package/coverage/lcov-report/automations/utils.js.html +32 -32
  116. package/coverage/lcov-report/constants/index.html +5 -5
  117. package/coverage/lcov-report/constants/index.js.html +53 -26
  118. package/coverage/lcov-report/constants/layouts.js.html +5 -5
  119. package/coverage/lcov-report/constants/screens.js.html +4 -4
  120. package/coverage/lcov-report/db/client.js.html +18 -18
  121. package/coverage/lcov-report/db/inMemoryView.js.html +7 -7
  122. package/coverage/lcov-report/db/index.html +15 -15
  123. package/coverage/lcov-report/db/index.js.html +3 -3
  124. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +18 -18
  125. package/coverage/lcov-report/db/linkedRows/index.html +10 -10
  126. package/coverage/lcov-report/db/linkedRows/index.js.html +38 -41
  127. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +15 -15
  128. package/coverage/lcov-report/db/newid.js.html +4 -4
  129. package/coverage/lcov-report/db/utils.js.html +86 -86
  130. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  131. package/coverage/lcov-report/events/index.html +1 -1
  132. package/coverage/lcov-report/events/index.js.html +5 -5
  133. package/coverage/lcov-report/events/utils.js.html +3 -3
  134. package/coverage/lcov-report/index.html +114 -99
  135. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  136. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  137. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  138. package/coverage/lcov-report/middleware/authorized.js.html +166 -64
  139. package/coverage/lcov-report/middleware/builder.js.html +8 -8
  140. package/coverage/lcov-report/middleware/currentapp.js.html +29 -29
  141. package/coverage/lcov-report/middleware/index.html +30 -30
  142. package/coverage/lcov-report/middleware/joi-validator.js.html +3 -3
  143. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  144. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  145. package/coverage/lcov-report/middleware/usageQuota.js.html +270 -42
  146. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  147. package/coverage/lcov-report/threads/automation.js.html +1 -1
  148. package/coverage/lcov-report/threads/index.html +15 -15
  149. package/coverage/lcov-report/threads/index.js.html +10 -10
  150. package/coverage/lcov-report/threads/query.js.html +23 -8
  151. package/coverage/lcov-report/threads/utils.js.html +14 -14
  152. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  153. package/coverage/lcov-report/utilities/budibaseDir.js.html +7 -7
  154. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  155. package/coverage/lcov-report/utilities/csvParser.js.html +6 -6
  156. package/coverage/lcov-report/utilities/global.js.html +26 -26
  157. package/coverage/lcov-report/utilities/index.html +19 -19
  158. package/coverage/lcov-report/utilities/index.js.html +25 -25
  159. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +8 -8
  160. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  161. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  162. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  163. package/coverage/lcov-report/utilities/rowProcessor/index.html +27 -27
  164. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +115 -79
  165. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +75 -27
  166. package/coverage/lcov-report/utilities/scriptRunner.js.html +5 -5
  167. package/coverage/lcov-report/utilities/security.js.html +8 -8
  168. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  169. package/coverage/lcov-report/utilities/usageQuota/index.html +141 -0
  170. package/coverage/lcov-report/utilities/usageQuota/index.js.html +356 -0
  171. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +302 -0
  172. package/coverage/lcov-report/{api/controllers/hosting.js.html → utilities/usageQuota/usageQuoteReset.js.html} +36 -48
  173. package/coverage/lcov-report/utilities/users.js.html +5 -5
  174. package/coverage/lcov-report/utilities/workerRequests.js.html +39 -108
  175. package/coverage/lcov.info +3656 -3057
  176. package/dist/api/controllers/application.js +61 -34
  177. package/dist/api/controllers/auth.js +4 -0
  178. package/dist/api/controllers/datasource.js +11 -0
  179. package/dist/api/controllers/migrations.js +21 -0
  180. package/dist/api/controllers/row/internal.js +30 -53
  181. package/dist/api/controllers/row/internalSearch.js +12 -4
  182. package/dist/api/controllers/row/staticFormula.js +147 -0
  183. package/dist/api/controllers/row/utils.js +6 -8
  184. package/dist/api/controllers/static/index.js +59 -10
  185. package/dist/api/controllers/table/bulkFormula.js +160 -0
  186. package/dist/api/controllers/table/index.js +12 -9
  187. package/dist/api/controllers/table/internal.js +9 -0
  188. package/dist/api/controllers/table/utils.js +41 -12
  189. package/dist/api/controllers/user.js +2 -0
  190. package/dist/api/routes/index.js +2 -2
  191. package/dist/api/routes/migrations.js +9 -0
  192. package/dist/api/routes/static.js +2 -1
  193. package/dist/app.js +35 -5
  194. package/dist/automations/steps/createRow.js +2 -4
  195. package/dist/automations/steps/deleteRow.js +1 -4
  196. package/dist/constants/index.js +7 -0
  197. package/dist/db/linkedRows/index.js +4 -5
  198. package/dist/definitions/datasource.js +1 -0
  199. package/dist/environment.js +2 -0
  200. package/dist/integrations/base/sql.js +13 -6
  201. package/dist/integrations/googlesheets.js +340 -0
  202. package/dist/integrations/index.js +3 -0
  203. package/dist/integrations/utils.js +57 -9
  204. package/dist/middleware/authorized.js +55 -30
  205. package/dist/middleware/usageQuota.js +80 -13
  206. package/dist/migrations/functions/appUrls.js +46 -0
  207. package/dist/migrations/functions/quotas1.js +50 -0
  208. package/dist/migrations/functions/usageQuotas/index.js +20 -0
  209. package/dist/migrations/functions/usageQuotas/syncApps.js +32 -0
  210. package/dist/migrations/functions/usageQuotas/syncRows.js +35 -0
  211. package/dist/migrations/functions/userEmailViewCasing.js +24 -0
  212. package/dist/migrations/index.js +62 -0
  213. package/dist/package.json +8 -5
  214. package/dist/tests/utilities/TestConfiguration.js +13 -6
  215. package/dist/threads/query.js +4 -0
  216. package/dist/tsconfig.tsbuildinfo +1 -1
  217. package/dist/utilities/rowProcessor/index.js +18 -11
  218. package/dist/utilities/rowProcessor/utils.js +14 -4
  219. package/dist/utilities/{usageQuota.js → usageQuota/index.js} +44 -31
  220. package/dist/utilities/usageQuota/rows.js +77 -0
  221. package/dist/utilities/usageQuota/usageQuoteReset.js +16 -0
  222. package/dist/utilities/workerRequests.js +0 -20
  223. package/nodemon.json +1 -1
  224. package/package.json +9 -6
  225. package/src/api/controllers/application.js +52 -24
  226. package/src/api/controllers/auth.js +4 -0
  227. package/src/api/controllers/datasource.js +12 -0
  228. package/src/api/controllers/migrations.js +13 -0
  229. package/src/api/controllers/row/internal.js +29 -50
  230. package/src/api/controllers/row/internalSearch.js +12 -4
  231. package/src/api/controllers/row/staticFormula.js +157 -0
  232. package/src/api/controllers/row/utils.js +6 -12
  233. package/src/api/controllers/static/index.js +63 -10
  234. package/src/api/controllers/table/bulkFormula.js +183 -0
  235. package/src/api/controllers/table/index.js +16 -24
  236. package/src/api/controllers/table/internal.js +9 -1
  237. package/src/api/controllers/table/utils.js +57 -9
  238. package/src/api/controllers/user.js +2 -0
  239. package/src/api/routes/index.js +2 -2
  240. package/src/api/routes/migrations.js +14 -0
  241. package/src/api/routes/static.js +5 -0
  242. package/src/api/routes/tests/application.spec.js +2 -2
  243. package/src/api/routes/tests/auth.spec.js +1 -2
  244. package/src/api/routes/tests/static.spec.js +98 -0
  245. package/src/app.ts +18 -5
  246. package/src/automations/steps/createRow.js +2 -4
  247. package/src/automations/steps/deleteRow.js +1 -4
  248. package/src/constants/index.js +9 -0
  249. package/src/db/linkedRows/index.js +4 -5
  250. package/src/definitions/common.ts +3 -0
  251. package/src/definitions/datasource.ts +3 -0
  252. package/src/environment.js +2 -0
  253. package/src/integrations/base/sql.ts +14 -7
  254. package/src/integrations/googlesheets.ts +353 -0
  255. package/src/integrations/index.ts +3 -0
  256. package/src/integrations/tests/sql.spec.js +16 -0
  257. package/src/integrations/utils.ts +71 -11
  258. package/src/middleware/authorized.js +64 -30
  259. package/src/middleware/tests/authorized.spec.js +6 -4
  260. package/src/middleware/tests/usageQuota.spec.js +18 -24
  261. package/src/middleware/usageQuota.js +91 -15
  262. package/src/migrations/functions/appUrls.ts +34 -0
  263. package/src/migrations/functions/quotas1.ts +20 -0
  264. package/src/migrations/functions/tests/appUrls.spec.js +29 -0
  265. package/src/migrations/functions/tests/quotas1.spec.js +27 -0
  266. package/src/migrations/functions/tests/userEmailViewCasing.spec.js +25 -0
  267. package/src/migrations/functions/usageQuotas/index.ts +8 -0
  268. package/src/migrations/functions/usageQuotas/syncApps.ts +18 -0
  269. package/src/migrations/functions/usageQuotas/syncRows.ts +21 -0
  270. package/src/migrations/functions/usageQuotas/tests/syncApps.spec.js +37 -0
  271. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.js +43 -0
  272. package/src/migrations/functions/userEmailViewCasing.ts +13 -0
  273. package/src/migrations/index.ts +56 -0
  274. package/src/tests/utilities/TestConfiguration.js +14 -6
  275. package/src/threads/query.js +5 -0
  276. package/src/utilities/rowProcessor/index.js +24 -12
  277. package/src/utilities/rowProcessor/utils.js +23 -7
  278. package/src/utilities/tests/usageQuota/usageQuota.spec.js +72 -0
  279. package/src/utilities/usageQuota/index.js +92 -0
  280. package/src/utilities/usageQuota/rows.js +74 -0
  281. package/src/utilities/usageQuota/usageQuoteReset.js +18 -0
  282. package/src/utilities/workerRequests.js +0 -23
  283. package/builder/assets/index.39e01193.css +0 -1
  284. package/dist/api/controllers/hosting.js +0 -30
  285. package/dist/api/routes/hosting.js +0 -11
  286. package/src/api/controllers/hosting.js +0 -22
  287. package/src/api/routes/hosting.js +0 -13
  288. package/src/api/routes/tests/hosting.spec.js +0 -36
  289. package/src/utilities/usageQuota.js +0 -73
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">64.13% </span>
26
+ <span class="strong">64.07% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>118/184</span>
28
+ <span class='fraction'>132/206</span>
29
29
  </div>
30
30
 
31
31
 
@@ -37,16 +37,16 @@
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">60.71% </span>
40
+ <span class="strong">58.82% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>17/28</span>
42
+ <span class='fraction'>20/34</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">64.64% </span>
47
+ <span class="strong">64.5% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>117/181</span>
49
+ <span class='fraction'>129/200</span>
50
50
  </div>
51
51
 
52
52
 
@@ -438,39 +438,110 @@
438
438
  <a name='L379'></a><a href='#L379'>379</a>
439
439
  <a name='L380'></a><a href='#L380'>380</a>
440
440
  <a name='L381'></a><a href='#L381'>381</a>
441
- <a name='L382'></a><a href='#L382'>382</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">34x</span>
442
- <span class="cline-any cline-yes">34x</span>
441
+ <a name='L382'></a><a href='#L382'>382</a>
442
+ <a name='L383'></a><a href='#L383'>383</a>
443
+ <a name='L384'></a><a href='#L384'>384</a>
444
+ <a name='L385'></a><a href='#L385'>385</a>
445
+ <a name='L386'></a><a href='#L386'>386</a>
446
+ <a name='L387'></a><a href='#L387'>387</a>
447
+ <a name='L388'></a><a href='#L388'>388</a>
448
+ <a name='L389'></a><a href='#L389'>389</a>
449
+ <a name='L390'></a><a href='#L390'>390</a>
450
+ <a name='L391'></a><a href='#L391'>391</a>
451
+ <a name='L392'></a><a href='#L392'>392</a>
452
+ <a name='L393'></a><a href='#L393'>393</a>
453
+ <a name='L394'></a><a href='#L394'>394</a>
454
+ <a name='L395'></a><a href='#L395'>395</a>
455
+ <a name='L396'></a><a href='#L396'>396</a>
456
+ <a name='L397'></a><a href='#L397'>397</a>
457
+ <a name='L398'></a><a href='#L398'>398</a>
458
+ <a name='L399'></a><a href='#L399'>399</a>
459
+ <a name='L400'></a><a href='#L400'>400</a>
460
+ <a name='L401'></a><a href='#L401'>401</a>
461
+ <a name='L402'></a><a href='#L402'>402</a>
462
+ <a name='L403'></a><a href='#L403'>403</a>
463
+ <a name='L404'></a><a href='#L404'>404</a>
464
+ <a name='L405'></a><a href='#L405'>405</a>
465
+ <a name='L406'></a><a href='#L406'>406</a>
466
+ <a name='L407'></a><a href='#L407'>407</a>
467
+ <a name='L408'></a><a href='#L408'>408</a>
468
+ <a name='L409'></a><a href='#L409'>409</a>
469
+ <a name='L410'></a><a href='#L410'>410</a>
470
+ <a name='L411'></a><a href='#L411'>411</a>
471
+ <a name='L412'></a><a href='#L412'>412</a>
472
+ <a name='L413'></a><a href='#L413'>413</a>
473
+ <a name='L414'></a><a href='#L414'>414</a>
474
+ <a name='L415'></a><a href='#L415'>415</a>
475
+ <a name='L416'></a><a href='#L416'>416</a>
476
+ <a name='L417'></a><a href='#L417'>417</a>
477
+ <a name='L418'></a><a href='#L418'>418</a>
478
+ <a name='L419'></a><a href='#L419'>419</a>
479
+ <a name='L420'></a><a href='#L420'>420</a>
480
+ <a name='L421'></a><a href='#L421'>421</a>
481
+ <a name='L422'></a><a href='#L422'>422</a>
482
+ <a name='L423'></a><a href='#L423'>423</a>
483
+ <a name='L424'></a><a href='#L424'>424</a>
484
+ <a name='L425'></a><a href='#L425'>425</a>
485
+ <a name='L426'></a><a href='#L426'>426</a>
486
+ <a name='L427'></a><a href='#L427'>427</a>
487
+ <a name='L428'></a><a href='#L428'>428</a>
488
+ <a name='L429'></a><a href='#L429'>429</a>
489
+ <a name='L430'></a><a href='#L430'>430</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">39x</span>
490
+ <span class="cline-any cline-yes">39x</span>
443
491
  <span class="cline-any cline-neutral">&nbsp;</span>
444
492
  <span class="cline-any cline-neutral">&nbsp;</span>
445
493
  <span class="cline-any cline-neutral">&nbsp;</span>
446
494
  <span class="cline-any cline-neutral">&nbsp;</span>
447
- <span class="cline-any cline-yes">34x</span>
448
- <span class="cline-any cline-yes">34x</span>
449
- <span class="cline-any cline-yes">34x</span>
450
- <span class="cline-any cline-yes">34x</span>
451
495
  <span class="cline-any cline-neutral">&nbsp;</span>
452
496
  <span class="cline-any cline-neutral">&nbsp;</span>
497
+ <span class="cline-any cline-yes">39x</span>
498
+ <span class="cline-any cline-yes">39x</span>
499
+ <span class="cline-any cline-yes">39x</span>
453
500
  <span class="cline-any cline-neutral">&nbsp;</span>
454
501
  <span class="cline-any cline-neutral">&nbsp;</span>
455
- <span class="cline-any cline-yes">34x</span>
456
502
  <span class="cline-any cline-neutral">&nbsp;</span>
503
+ <span class="cline-any cline-yes">39x</span>
457
504
  <span class="cline-any cline-neutral">&nbsp;</span>
458
505
  <span class="cline-any cline-neutral">&nbsp;</span>
459
- <span class="cline-any cline-yes">34x</span>
460
- <span class="cline-any cline-yes">34x</span>
461
- <span class="cline-any cline-yes">34x</span>
462
506
  <span class="cline-any cline-neutral">&nbsp;</span>
463
- <span class="cline-any cline-yes">34x</span>
464
- <span class="cline-any cline-yes">99x</span>
465
- <span class="cline-any cline-yes">99x</span>
466
- <span class="cline-any cline-yes">99x</span>
467
- <span class="cline-any cline-yes">99x</span>
507
+ <span class="cline-any cline-neutral">&nbsp;</span>
508
+ <span class="cline-any cline-yes">39x</span>
509
+ <span class="cline-any cline-neutral">&nbsp;</span>
510
+ <span class="cline-any cline-neutral">&nbsp;</span>
511
+ <span class="cline-any cline-neutral">&nbsp;</span>
512
+ <span class="cline-any cline-neutral">&nbsp;</span>
513
+ <span class="cline-any cline-yes">39x</span>
514
+ <span class="cline-any cline-yes">39x</span>
515
+ <span class="cline-any cline-yes">39x</span>
516
+ <span class="cline-any cline-yes">39x</span>
517
+ <span class="cline-any cline-yes">39x</span>
518
+ <span class="cline-any cline-neutral">&nbsp;</span>
519
+ <span class="cline-any cline-yes">39x</span>
520
+ <span class="cline-any cline-no">&nbsp;</span>
521
+ <span class="cline-any cline-no">&nbsp;</span>
522
+ <span class="cline-any cline-neutral">&nbsp;</span>
523
+ <span class="cline-any cline-neutral">&nbsp;</span>
524
+ <span class="cline-any cline-neutral">&nbsp;</span>
525
+ <span class="cline-any cline-neutral">&nbsp;</span>
526
+ <span class="cline-any cline-no">&nbsp;</span>
527
+ <span class="cline-any cline-neutral">&nbsp;</span>
528
+ <span class="cline-any cline-no">&nbsp;</span>
529
+ <span class="cline-any cline-no">&nbsp;</span>
530
+ <span class="cline-any cline-neutral">&nbsp;</span>
531
+ <span class="cline-any cline-neutral">&nbsp;</span>
532
+ <span class="cline-any cline-neutral">&nbsp;</span>
533
+ <span class="cline-any cline-neutral">&nbsp;</span>
534
+ <span class="cline-any cline-yes">39x</span>
535
+ <span class="cline-any cline-yes">101x</span>
536
+ <span class="cline-any cline-yes">101x</span>
537
+ <span class="cline-any cline-yes">101x</span>
538
+ <span class="cline-any cline-yes">101x</span>
468
539
  <span class="cline-any cline-yes">4x</span>
469
540
  <span class="cline-any cline-yes">11x</span>
470
541
  <span class="cline-any cline-neutral">&nbsp;</span>
471
542
  <span class="cline-any cline-neutral">&nbsp;</span>
472
543
  <span class="cline-any cline-neutral">&nbsp;</span>
473
- <span class="cline-any cline-yes">99x</span>
544
+ <span class="cline-any cline-yes">101x</span>
474
545
  <span class="cline-any cline-neutral">&nbsp;</span>
475
546
  <span class="cline-any cline-yes">1x</span>
476
547
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -481,6 +552,8 @@
481
552
  <span class="cline-any cline-yes">1x</span>
482
553
  <span class="cline-any cline-yes">1x</span>
483
554
  <span class="cline-any cline-yes">1x</span>
555
+ <span class="cline-any cline-yes">1x</span>
556
+ <span class="cline-any cline-yes">1x</span>
484
557
  <span class="cline-any cline-no">&nbsp;</span>
485
558
  <span class="cline-any cline-no">&nbsp;</span>
486
559
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -489,13 +562,15 @@
489
562
  <span class="cline-any cline-neutral">&nbsp;</span>
490
563
  <span class="cline-any cline-neutral">&nbsp;</span>
491
564
  <span class="cline-any cline-yes">1x</span>
565
+ <span class="cline-any cline-neutral">&nbsp;</span>
566
+ <span class="cline-any cline-yes">1x</span>
492
567
  <span class="cline-any cline-yes">1x</span>
493
568
  <span class="cline-any cline-neutral">&nbsp;</span>
494
- <span class="cline-any cline-yes">99x</span>
569
+ <span class="cline-any cline-yes">101x</span>
495
570
  <span class="cline-any cline-neutral">&nbsp;</span>
496
571
  <span class="cline-any cline-neutral">&nbsp;</span>
497
572
  <span class="cline-any cline-neutral">&nbsp;</span>
498
- <span class="cline-any cline-yes">34x</span>
573
+ <span class="cline-any cline-yes">39x</span>
499
574
  <span class="cline-any cline-yes">4x</span>
500
575
  <span class="cline-any cline-no">&nbsp;</span>
501
576
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -515,9 +590,9 @@
515
590
  <span class="cline-any cline-yes">4x</span>
516
591
  <span class="cline-any cline-neutral">&nbsp;</span>
517
592
  <span class="cline-any cline-neutral">&nbsp;</span>
518
- <span class="cline-any cline-yes">34x</span>
519
- <span class="cline-any cline-yes">100x</span>
520
- <span class="cline-any cline-yes">99x</span>
593
+ <span class="cline-any cline-yes">39x</span>
594
+ <span class="cline-any cline-yes">102x</span>
595
+ <span class="cline-any cline-yes">101x</span>
521
596
  <span class="cline-any cline-neutral">&nbsp;</span>
522
597
  <span class="cline-any cline-neutral">&nbsp;</span>
523
598
  <span class="cline-any cline-yes">1x</span>
@@ -556,15 +631,19 @@
556
631
  <span class="cline-any cline-neutral">&nbsp;</span>
557
632
  <span class="cline-any cline-neutral">&nbsp;</span>
558
633
  <span class="cline-any cline-yes">1x</span>
634
+ <span class="cline-any cline-neutral">&nbsp;</span>
635
+ <span class="cline-any cline-neutral">&nbsp;</span>
636
+ <span class="cline-any cline-yes">1x</span>
637
+ <span class="cline-any cline-yes">1x</span>
559
638
  <span class="cline-any cline-yes">1x</span>
560
639
  <span class="cline-any cline-yes">1x</span>
561
640
  <span class="cline-any cline-yes">1x</span>
562
641
  <span class="cline-any cline-neutral">&nbsp;</span>
563
642
  <span class="cline-any cline-neutral">&nbsp;</span>
564
- <span class="cline-any cline-yes">34x</span>
565
- <span class="cline-any cline-yes">99x</span>
643
+ <span class="cline-any cline-yes">39x</span>
644
+ <span class="cline-any cline-yes">101x</span>
566
645
  <span class="cline-any cline-neutral">&nbsp;</span>
567
- <span class="cline-any cline-yes">99x</span>
646
+ <span class="cline-any cline-yes">101x</span>
568
647
  <span class="cline-any cline-yes">2x</span>
569
648
  <span class="cline-any cline-yes">2x</span>
570
649
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -602,12 +681,12 @@
602
681
  <span class="cline-any cline-neutral">&nbsp;</span>
603
682
  <span class="cline-any cline-neutral">&nbsp;</span>
604
683
  <span class="cline-any cline-neutral">&nbsp;</span>
605
- <span class="cline-any cline-yes">99x</span>
684
+ <span class="cline-any cline-yes">101x</span>
606
685
  <span class="cline-any cline-neutral">&nbsp;</span>
607
686
  <span class="cline-any cline-neutral">&nbsp;</span>
608
- <span class="cline-any cline-yes">34x</span>
687
+ <span class="cline-any cline-yes">39x</span>
609
688
  <span class="cline-any cline-neutral">&nbsp;</span>
610
- <span class="cline-any cline-yes">99x</span>
689
+ <span class="cline-any cline-yes">101x</span>
611
690
  <span class="cline-any cline-yes">1x</span>
612
691
  <span class="cline-any cline-neutral">&nbsp;</span>
613
692
  <span class="cline-any cline-yes">5x</span>
@@ -615,60 +694,75 @@
615
694
  <span class="cline-any cline-neutral">&nbsp;</span>
616
695
  <span class="cline-any cline-neutral">&nbsp;</span>
617
696
  <span class="cline-any cline-neutral">&nbsp;</span>
618
- <span class="cline-any cline-yes">99x</span>
697
+ <span class="cline-any cline-yes">101x</span>
619
698
  <span class="cline-any cline-neutral">&nbsp;</span>
620
699
  <span class="cline-any cline-neutral">&nbsp;</span>
621
700
  <span class="cline-any cline-neutral">&nbsp;</span>
622
701
  <span class="cline-any cline-neutral">&nbsp;</span>
623
- <span class="cline-any cline-yes">99x</span>
624
- <span class="cline-any cline-yes">99x</span>
625
- <span class="cline-any cline-yes">99x</span>
626
- <span class="cline-any cline-yes">99x</span>
702
+ <span class="cline-any cline-yes">101x</span>
703
+ <span class="cline-any cline-yes">101x</span>
704
+ <span class="cline-any cline-yes">101x</span>
705
+ <span class="cline-any cline-yes">101x</span>
627
706
  <span class="cline-any cline-neutral">&nbsp;</span>
628
- <span class="cline-any cline-yes">99x</span>
629
- <span class="cline-any cline-yes">99x</span>
707
+ <span class="cline-any cline-yes">101x</span>
708
+ <span class="cline-any cline-yes">101x</span>
630
709
  <span class="cline-any cline-neutral">&nbsp;</span>
631
- <span class="cline-any cline-yes">99x</span>
710
+ <span class="cline-any cline-yes">101x</span>
632
711
  <span class="cline-any cline-neutral">&nbsp;</span>
633
712
  <span class="cline-any cline-neutral">&nbsp;</span>
634
713
  <span class="cline-any cline-neutral">&nbsp;</span>
635
714
  <span class="cline-any cline-neutral">&nbsp;</span>
636
- <span class="cline-any cline-yes">99x</span>
715
+ <span class="cline-any cline-yes">101x</span>
637
716
  <span class="cline-any cline-yes">4x</span>
638
717
  <span class="cline-any cline-neutral">&nbsp;</span>
639
- <span class="cline-any cline-yes">99x</span>
640
- <span class="cline-any cline-yes">99x</span>
718
+ <span class="cline-any cline-yes">101x</span>
719
+ <span class="cline-any cline-yes">101x</span>
720
+ <span class="cline-any cline-neutral">&nbsp;</span>
721
+ <span class="cline-any cline-neutral">&nbsp;</span>
722
+ <span class="cline-any cline-neutral">&nbsp;</span>
723
+ <span class="cline-any cline-neutral">&nbsp;</span>
724
+ <span class="cline-any cline-yes">101x</span>
725
+ <span class="cline-any cline-neutral">&nbsp;</span>
726
+ <span class="cline-any cline-neutral">&nbsp;</span>
641
727
  <span class="cline-any cline-neutral">&nbsp;</span>
642
728
  <span class="cline-any cline-neutral">&nbsp;</span>
643
729
  <span class="cline-any cline-neutral">&nbsp;</span>
730
+ <span class="cline-any cline-yes">101x</span>
731
+ <span class="cline-any cline-yes">101x</span>
644
732
  <span class="cline-any cline-neutral">&nbsp;</span>
645
- <span class="cline-any cline-yes">99x</span>
646
733
  <span class="cline-any cline-neutral">&nbsp;</span>
647
734
  <span class="cline-any cline-neutral">&nbsp;</span>
648
735
  <span class="cline-any cline-neutral">&nbsp;</span>
736
+ <span class="cline-any cline-yes">101x</span>
737
+ <span class="cline-any cline-yes">101x</span>
649
738
  <span class="cline-any cline-neutral">&nbsp;</span>
650
- <span class="cline-any cline-yes">99x</span>
651
- <span class="cline-any cline-yes">99x</span>
652
739
  <span class="cline-any cline-neutral">&nbsp;</span>
653
740
  <span class="cline-any cline-neutral">&nbsp;</span>
654
741
  <span class="cline-any cline-neutral">&nbsp;</span>
655
742
  <span class="cline-any cline-neutral">&nbsp;</span>
656
- <span class="cline-any cline-yes">99x</span>
657
- <span class="cline-any cline-yes">99x</span>
743
+ <span class="cline-any cline-yes">101x</span>
658
744
  <span class="cline-any cline-neutral">&nbsp;</span>
659
745
  <span class="cline-any cline-neutral">&nbsp;</span>
660
746
  <span class="cline-any cline-neutral">&nbsp;</span>
747
+ <span class="cline-any cline-yes">101x</span>
661
748
  <span class="cline-any cline-neutral">&nbsp;</span>
662
749
  <span class="cline-any cline-neutral">&nbsp;</span>
663
- <span class="cline-any cline-yes">99x</span>
664
750
  <span class="cline-any cline-neutral">&nbsp;</span>
751
+ <span class="cline-any cline-yes">39x</span>
752
+ <span class="cline-any cline-yes">207x</span>
753
+ <span class="cline-any cline-yes">207x</span>
665
754
  <span class="cline-any cline-neutral">&nbsp;</span>
666
755
  <span class="cline-any cline-neutral">&nbsp;</span>
667
- <span class="cline-any cline-yes">99x</span>
668
756
  <span class="cline-any cline-neutral">&nbsp;</span>
669
757
  <span class="cline-any cline-neutral">&nbsp;</span>
758
+ <span class="cline-any cline-yes">474x</span>
670
759
  <span class="cline-any cline-neutral">&nbsp;</span>
671
- <span class="cline-any cline-yes">34x</span>
760
+ <span class="cline-any cline-neutral">&nbsp;</span>
761
+ <span class="cline-any cline-neutral">&nbsp;</span>
762
+ <span class="cline-any cline-neutral">&nbsp;</span>
763
+ <span class="cline-any cline-neutral">&nbsp;</span>
764
+ <span class="cline-any cline-neutral">&nbsp;</span>
765
+ <span class="cline-any cline-yes">39x</span>
672
766
  <span class="cline-any cline-no">&nbsp;</span>
673
767
  <span class="cline-any cline-no">&nbsp;</span>
674
768
  <span class="cline-any cline-no">&nbsp;</span>
@@ -677,22 +771,24 @@
677
771
  <span class="cline-any cline-no">&nbsp;</span>
678
772
  <span class="cline-any cline-neutral">&nbsp;</span>
679
773
  <span class="cline-any cline-neutral">&nbsp;</span>
680
- <span class="cline-any cline-yes">34x</span>
774
+ <span class="cline-any cline-yes">39x</span>
681
775
  <span class="cline-any cline-no">&nbsp;</span>
682
776
  <span class="cline-any cline-no">&nbsp;</span>
683
777
  <span class="cline-any cline-neutral">&nbsp;</span>
684
778
  <span class="cline-any cline-neutral">&nbsp;</span>
685
- <span class="cline-any cline-yes">34x</span>
779
+ <span class="cline-any cline-yes">39x</span>
686
780
  <span class="cline-any cline-yes">30x</span>
687
781
  <span class="cline-any cline-yes">30x</span>
688
782
  <span class="cline-any cline-no">&nbsp;</span>
689
783
  <span class="cline-any cline-no">&nbsp;</span>
784
+ <span class="cline-any cline-no">&nbsp;</span>
785
+ <span class="cline-any cline-no">&nbsp;</span>
690
786
  <span class="cline-any cline-neutral">&nbsp;</span>
691
787
  <span class="cline-any cline-yes">30x</span>
692
788
  <span class="cline-any cline-neutral">&nbsp;</span>
693
789
  <span class="cline-any cline-neutral">&nbsp;</span>
694
790
  <span class="cline-any cline-neutral">&nbsp;</span>
695
- <span class="cline-any cline-yes">34x</span>
791
+ <span class="cline-any cline-yes">39x</span>
696
792
  <span class="cline-any cline-yes">1x</span>
697
793
  <span class="cline-any cline-yes">1x</span>
698
794
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -764,15 +860,15 @@
764
860
  <span class="cline-any cline-neutral">&nbsp;</span>
765
861
  <span class="cline-any cline-neutral">&nbsp;</span>
766
862
  <span class="cline-any cline-neutral">&nbsp;</span>
767
- <span class="cline-any cline-yes">34x</span>
863
+ <span class="cline-any cline-yes">39x</span>
768
864
  <span class="cline-any cline-no">&nbsp;</span>
769
865
  <span class="cline-any cline-neutral">&nbsp;</span>
770
866
  <span class="cline-any cline-neutral">&nbsp;</span>
771
- <span class="cline-any cline-yes">34x</span>
867
+ <span class="cline-any cline-yes">39x</span>
772
868
  <span class="cline-any cline-no">&nbsp;</span>
773
869
  <span class="cline-any cline-neutral">&nbsp;</span>
774
870
  <span class="cline-any cline-neutral">&nbsp;</span>
775
- <span class="cline-any cline-yes">34x</span>
871
+ <span class="cline-any cline-yes">39x</span>
776
872
  <span class="cline-any cline-no">&nbsp;</span>
777
873
  <span class="cline-any cline-neutral">&nbsp;</span>
778
874
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -784,7 +880,7 @@
784
880
  <span class="cline-any cline-no">&nbsp;</span>
785
881
  <span class="cline-any cline-neutral">&nbsp;</span>
786
882
  <span class="cline-any cline-neutral">&nbsp;</span>
787
- <span class="cline-any cline-yes">34x</span>
883
+ <span class="cline-any cline-yes">39x</span>
788
884
  <span class="cline-any cline-no">&nbsp;</span>
789
885
  <span class="cline-any cline-neutral">&nbsp;</span>
790
886
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -801,9 +897,9 @@
801
897
  <span class="cline-any cline-no">&nbsp;</span>
802
898
  <span class="cline-any cline-neutral">&nbsp;</span>
803
899
  <span class="cline-any cline-neutral">&nbsp;</span>
804
- <span class="cline-any cline-yes">34x</span>
805
- <span class="cline-any cline-yes">99x</span>
806
- <span class="cline-any cline-yes">95x</span>
900
+ <span class="cline-any cline-yes">39x</span>
901
+ <span class="cline-any cline-yes">101x</span>
902
+ <span class="cline-any cline-yes">97x</span>
807
903
  <span class="cline-any cline-neutral">&nbsp;</span>
808
904
  <span class="cline-any cline-yes">4x</span>
809
905
  <span class="cline-any cline-yes">11x</span>
@@ -818,17 +914,22 @@
818
914
  <span class="cline-any cline-yes">4x</span>
819
915
  <span class="cline-any cline-neutral">&nbsp;</span>
820
916
  <span class="cline-any cline-neutral">&nbsp;</span>
821
- <span class="cline-any cline-yes">34x</span>
917
+ <span class="cline-any cline-yes">39x</span>
822
918
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const CouchDB = require("../../../db")
823
919
  const csvParser = require("../../../utilities/csvParser")
824
920
  const {
825
921
  getRowParams,
826
922
  generateRowID,
827
923
  InternalTables,
924
+ getTableParams,
925
+ BudibaseInternalDB,
828
926
  } = require("../../../db/utils")
829
- const { isEqual } = require("lodash/fp")
927
+ const { isEqual } = require("lodash")
830
928
  const { AutoFieldSubTypes, FieldTypes } = require("../../../constants")
831
- const { inputProcessing } = require("../../../utilities/rowProcessor")
929
+ const {
930
+ inputProcessing,
931
+ cleanupAttachments,
932
+ } = require("../../../utilities/rowProcessor")
832
933
  const {
833
934
  USERS_TABLE_SCHEMA,
834
935
  SwitchableTypes,
@@ -837,11 +938,29 @@ const {
837
938
  const {
838
939
  isExternalTable,
839
940
  breakExternalTableId,
941
+ isSQL,
840
942
  } = require("../../../integrations/utils")
841
943
  const { getViews, saveView } = require("../view/utils")
842
944
  const viewTemplate = require("../view/viewBuilder")
945
+ const usageQuota = require("../../../utilities/usageQuota")
946
+ const { cloneDeep } = require("lodash/fp")
947
+ &nbsp;
948
+ exports.clearColumns = <span class="fstat-no" title="function not covered" >as</span>ync (appId, table, columnNames) =&gt; {
949
+ const db = <span class="cstat-no" title="statement not covered" >new CouchDB(appId)</span>
950
+ const rows = <span class="cstat-no" title="statement not covered" >await db.allDocs(</span>
951
+ getRowParams(table._id, null, {
952
+ include_docs: true,
953
+ })
954
+ )
955
+ <span class="cstat-no" title="statement not covered" > return db.bulkDocs(</span>
956
+ rows.rows.map(<span class="fstat-no" title="function not covered" >({</span> doc }) =&gt; {
957
+ <span class="cstat-no" title="statement not covered" > columnNames.forEach(<span class="fstat-no" title="function not covered" >co</span>lName =&gt; <span class="cstat-no" title="statement not covered" >delete doc[colName])</span></span>
958
+ <span class="cstat-no" title="statement not covered" > return doc</span>
959
+ })
960
+ )
961
+ }
843
962
  &nbsp;
844
- exports.checkForColumnUpdates = async (db, oldTable, updatedTable) =&gt; {
963
+ exports.checkForColumnUpdates = async (appId, db, oldTable, updatedTable) =&gt; {
845
964
  let updatedRows = []
846
965
  const rename = updatedTable._rename
847
966
  let deletedColumns = []
@@ -858,16 +977,20 @@ exports.checkForColumnUpdates = async (db, oldTable, updatedTable) =&gt; {
858
977
  include_docs: true,
859
978
  })
860
979
  )
861
- updatedRows = rows.rows.map(({ doc }) =&gt; {
980
+ const rawRows = rows.rows.map(({ doc }) =&gt; doc)
981
+ updatedRows = rawRows.map(row =&gt; {
982
+ row = cloneDeep(row)
862
983
  if (rename) {
863
- doc[rename.updated] = doc[rename.old]
864
- delete doc[rename.old]
984
+ row[rename.updated] = row[rename.old]
985
+ delete row[rename.old]
865
986
  } else <span class="cstat-no" title="statement not covered" ><span class="missing-if-branch" title="else path not taken" >E</span>if (deletedColumns.length !== 0) {</span>
866
- <span class="cstat-no" title="statement not covered" > deletedColumns.forEach(<span class="fstat-no" title="function not covered" >co</span>lName =&gt; <span class="cstat-no" title="statement not covered" >delete doc[colName])</span></span>
987
+ <span class="cstat-no" title="statement not covered" > deletedColumns.forEach(<span class="fstat-no" title="function not covered" >co</span>lName =&gt; <span class="cstat-no" title="statement not covered" >delete row[colName])</span></span>
867
988
  }
868
- return doc
989
+ return row
869
990
  })
870
991
  &nbsp;
992
+ // cleanup any attachments from object storage for deleted attachment columns
993
+ await cleanupAttachments(appId, updatedTable, { oldTable, rows: rawRows })
871
994
  // Update views
872
995
  await exports.checkForViewUpdates(db, updatedTable, rename, deletedColumns)
873
996
  delete updatedTable._rename
@@ -936,7 +1059,11 @@ exports.handleDataImport = async (appId, user, table, dataImport) =&gt; {
936
1059
  finalData.push(row)
937
1060
  }
938
1061
  &nbsp;
1062
+ await usageQuota.update(usageQuota.Properties.ROW, finalData.length, {
1063
+ dryRun: true,
1064
+ })
939
1065
  await db.bulkDocs(finalData)
1066
+ await usageQuota.update(usageQuota.Properties.ROW, finalData.length)
940
1067
  let response = await db.put(table)
941
1068
  table._rev = response._rev
942
1069
  return table
@@ -1024,6 +1151,7 @@ class TableSaveFunctions {
1024
1151
  // when confirmed valid
1025
1152
  async mid(table) {
1026
1153
  let response = await exports.checkForColumnUpdates(
1154
+ this.appId,
1027
1155
  this.db,
1028
1156
  this.oldTable,
1029
1157
  table
@@ -1049,6 +1177,20 @@ class TableSaveFunctions {
1049
1177
  }
1050
1178
  }
1051
1179
  &nbsp;
1180
+ exports.getAllInternalTables = async appId =&gt; {
1181
+ const db = new CouchDB(appId)
1182
+ const internalTables = await db.allDocs(
1183
+ getTableParams(null, {
1184
+ include_docs: true,
1185
+ })
1186
+ )
1187
+ return internalTables.rows.map(tableDoc =&gt; ({
1188
+ ...tableDoc.doc,
1189
+ type: "internal",
1190
+ sourceId: BudibaseInternalDB._id,
1191
+ }))
1192
+ }
1193
+ &nbsp;
1052
1194
  exports.getAllExternalTables = <span class="fstat-no" title="function not covered" >as</span>ync (appId, datasourceId) =&gt; {
1053
1195
  const db = <span class="cstat-no" title="statement not covered" >new CouchDB(appId)</span>
1054
1196
  const datasource = <span class="cstat-no" title="statement not covered" >await db.get(datasourceId)</span>
@@ -1067,7 +1209,9 @@ exports.getTable = async (appId, tableId) =&gt; {
1067
1209
  const db = new CouchDB(appId)
1068
1210
  <span class="missing-if-branch" title="if path not taken" >I</span>if (isExternalTable(tableId)) {
1069
1211
  let { datasourceId, tableName } = <span class="cstat-no" title="statement not covered" >breakExternalTableId(tableId)</span>
1070
- <span class="cstat-no" title="statement not covered" > return exports.getExternalTable(appId, datasourceId, tableName)</span>
1212
+ const datasource = <span class="cstat-no" title="statement not covered" >await db.get(datasourceId)</span>
1213
+ const table = <span class="cstat-no" title="statement not covered" >await exports.getExternalTable(appId, datasourceId, tableName)</span>
1214
+ <span class="cstat-no" title="statement not covered" > return { ...table, sql: isSQL(datasource) }</span>
1071
1215
  } else {
1072
1216
  return db.get(tableId)
1073
1217
  }
@@ -1207,7 +1351,7 @@ exports.TableSaveFunctions = TableSaveFunctions
1207
1351
  <div class='footer quiet pad2 space-top1 center small'>
1208
1352
  Code coverage generated by
1209
1353
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1210
- at Mon Jan 31 2022 13:42:59 GMT+0000 (Coordinated Universal Time)
1354
+ at Mon Jan 31 2022 17:55:41 GMT+0000 (Coordinated Universal Time)
1211
1355
  </div>
1212
1356
  </div>
1213
1357
  <script src="../../../prettify.js"></script>
@@ -181,7 +181,7 @@ exports.downloadTemplate = async function (ctx) {
181
181
  <div class='footer quiet pad2 space-top1 center small'>
182
182
  Code coverage generated by
183
183
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
184
- at Mon Jan 31 2022 13:42:59 GMT+0000 (Coordinated Universal Time)
184
+ at Mon Jan 31 2022 17:55:41 GMT+0000 (Coordinated Universal Time)
185
185
  </div>
186
186
  </div>
187
187
  <script src="../../prettify.js"></script>