@budibase/server 1.0.49-alpha.9 → 1.0.49

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 (379) hide show
  1. package/__mocks__/arangojs.ts +1 -1
  2. package/__mocks__/aws-sdk.ts +4 -4
  3. package/__mocks__/mongodb.ts +5 -4
  4. package/__mocks__/mssql.ts +3 -3
  5. package/__mocks__/node-fetch.ts +1 -2
  6. package/__mocks__/pg.ts +5 -3
  7. package/builder/assets/{index.ad5370ae.js → index.2c37968e.js} +246 -249
  8. package/builder/assets/index.39e01193.css +1 -0
  9. package/builder/assets/{vendor.d526bfe8.js → vendor.f9faf6ab.js} +12 -12
  10. package/builder/index.html +3 -3
  11. package/coverage/clover.xml +2827 -3117
  12. package/coverage/coverage-final.json +101 -106
  13. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/application.js.html +152 -257
  16. package/coverage/lcov-report/api/controllers/auth.js.html +13 -22
  17. package/coverage/lcov-report/api/controllers/automation.js.html +69 -39
  18. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/cloud.js.html +11 -8
  20. package/coverage/lcov-report/api/controllers/component.js.html +16 -13
  21. package/coverage/lcov-report/api/controllers/datasource.js.html +51 -81
  22. package/coverage/lcov-report/api/controllers/dev.js.html +6 -6
  23. package/coverage/lcov-report/{utilities/usageQuota/usageQuoteReset.js.html → api/controllers/hosting.js.html} +48 -36
  24. package/coverage/lcov-report/api/controllers/index.html +76 -76
  25. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/layout.js.html +9 -9
  27. package/coverage/lcov-report/api/controllers/metadata.js.html +21 -6
  28. package/coverage/lcov-report/api/controllers/permission.js.html +19 -19
  29. package/coverage/lcov-report/api/controllers/query/index.html +10 -10
  30. package/coverage/lcov-report/api/controllers/query/index.js.html +35 -38
  31. package/coverage/lcov-report/api/controllers/query/validation.js.html +6 -6
  32. package/coverage/lcov-report/api/controllers/role.js.html +16 -16
  33. package/coverage/lcov-report/api/controllers/routing.js.html +10 -7
  34. package/coverage/lcov-report/api/controllers/row/external.js.html +141 -48
  35. package/coverage/lcov-report/api/controllers/row/index.html +40 -55
  36. package/coverage/lcov-report/api/controllers/row/index.js.html +26 -26
  37. package/coverage/lcov-report/api/controllers/row/internal.js.html +226 -118
  38. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +34 -52
  39. package/coverage/lcov-report/api/controllers/row/utils.js.html +62 -47
  40. package/coverage/lcov-report/api/controllers/screen.js.html +21 -15
  41. package/coverage/lcov-report/api/controllers/script.js.html +4 -4
  42. package/coverage/lcov-report/api/controllers/table/external.js.html +34 -25
  43. package/coverage/lcov-report/api/controllers/table/index.html +43 -58
  44. package/coverage/lcov-report/api/controllers/table/index.js.html +82 -58
  45. package/coverage/lcov-report/api/controllers/table/internal.js.html +66 -81
  46. package/coverage/lcov-report/api/controllers/table/utils.js.html +110 -218
  47. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  48. package/coverage/lcov-report/api/controllers/user.js.html +50 -47
  49. package/coverage/lcov-report/api/controllers/view/exporters.js.html +4 -4
  50. package/coverage/lcov-report/api/controllers/view/index.html +16 -16
  51. package/coverage/lcov-report/api/controllers/view/index.js.html +33 -27
  52. package/coverage/lcov-report/api/controllers/view/utils.js.html +20 -35
  53. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +7 -7
  54. package/coverage/lcov-report/api/controllers/webhook.js.html +28 -34
  55. package/coverage/lcov-report/api/index.html +1 -1
  56. package/coverage/lcov-report/api/index.js.html +8 -8
  57. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/{migrations.js.html → hosting.js.html} +14 -17
  69. package/coverage/lcov-report/api/routes/index.html +18 -18
  70. package/coverage/lcov-report/api/routes/index.js.html +3 -3
  71. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  79. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  80. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  81. package/coverage/lcov-report/api/routes/static.js.html +2 -17
  82. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  83. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  84. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  85. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  86. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  87. package/coverage/lcov-report/automations/actions.js.html +24 -24
  88. package/coverage/lcov-report/automations/automationUtils.js.html +10 -7
  89. package/coverage/lcov-report/automations/bullboard.js.html +16 -16
  90. package/coverage/lcov-report/automations/index.html +18 -18
  91. package/coverage/lcov-report/automations/index.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/bash.js.html +6 -6
  93. package/coverage/lcov-report/automations/steps/createRow.js.html +22 -13
  94. package/coverage/lcov-report/automations/steps/delay.js.html +4 -4
  95. package/coverage/lcov-report/automations/steps/deleteRow.js.html +20 -11
  96. package/coverage/lcov-report/automations/steps/discord.js.html +7 -7
  97. package/coverage/lcov-report/automations/steps/executeQuery.js.html +6 -6
  98. package/coverage/lcov-report/automations/steps/executeScript.js.html +6 -6
  99. package/coverage/lcov-report/automations/steps/filter.js.html +7 -7
  100. package/coverage/lcov-report/automations/steps/index.html +13 -13
  101. package/coverage/lcov-report/automations/steps/integromat.js.html +5 -5
  102. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +8 -8
  103. package/coverage/lcov-report/automations/steps/queryRows.js.html +10 -10
  104. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +5 -5
  105. package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -3
  106. package/coverage/lcov-report/automations/steps/slack.js.html +5 -5
  107. package/coverage/lcov-report/automations/steps/updateRow.js.html +7 -7
  108. package/coverage/lcov-report/automations/steps/utils.js.html +3 -3
  109. package/coverage/lcov-report/automations/steps/zapier.js.html +5 -5
  110. package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
  111. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
  112. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  113. package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
  114. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
  115. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
  116. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
  117. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
  118. package/coverage/lcov-report/automations/triggers.js.html +55 -61
  119. package/coverage/lcov-report/automations/utils.js.html +42 -54
  120. package/coverage/lcov-report/constants/index.html +5 -5
  121. package/coverage/lcov-report/constants/index.js.html +26 -53
  122. package/coverage/lcov-report/constants/layouts.js.html +5 -5
  123. package/coverage/lcov-report/constants/screens.js.html +4 -4
  124. package/coverage/lcov-report/db/client.js.html +18 -18
  125. package/coverage/lcov-report/db/inMemoryView.js.html +7 -7
  126. package/coverage/lcov-report/db/index.html +15 -15
  127. package/coverage/lcov-report/db/index.js.html +3 -3
  128. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +37 -25
  129. package/coverage/lcov-report/db/linkedRows/index.html +27 -27
  130. package/coverage/lcov-report/db/linkedRows/index.js.html +96 -51
  131. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +42 -42
  132. package/coverage/lcov-report/db/newid.js.html +4 -4
  133. package/coverage/lcov-report/db/utils.js.html +87 -87
  134. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  135. package/coverage/lcov-report/events/index.html +1 -1
  136. package/coverage/lcov-report/events/index.js.html +5 -5
  137. package/coverage/lcov-report/events/utils.js.html +3 -3
  138. package/coverage/lcov-report/index.html +120 -135
  139. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  140. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  141. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  142. package/coverage/lcov-report/middleware/authorized.js.html +65 -173
  143. package/coverage/lcov-report/middleware/builder.js.html +10 -10
  144. package/coverage/lcov-report/middleware/currentapp.js.html +83 -95
  145. package/coverage/lcov-report/middleware/index.html +38 -38
  146. package/coverage/lcov-report/middleware/joi-validator.js.html +3 -3
  147. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  148. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  149. package/coverage/lcov-report/middleware/usageQuota.js.html +53 -281
  150. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  151. package/coverage/lcov-report/threads/automation.js.html +24 -30
  152. package/coverage/lcov-report/threads/index.html +26 -26
  153. package/coverage/lcov-report/threads/index.js.html +10 -10
  154. package/coverage/lcov-report/threads/query.js.html +24 -39
  155. package/coverage/lcov-report/threads/utils.js.html +14 -14
  156. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  157. package/coverage/lcov-report/utilities/budibaseDir.js.html +7 -7
  158. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  159. package/coverage/lcov-report/utilities/csvParser.js.html +6 -6
  160. package/coverage/lcov-report/utilities/global.js.html +49 -58
  161. package/coverage/lcov-report/utilities/index.html +37 -37
  162. package/coverage/lcov-report/utilities/index.js.html +73 -43
  163. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +8 -8
  164. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  165. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  166. package/coverage/lcov-report/utilities/routing/index.js.html +7 -7
  167. package/coverage/lcov-report/utilities/rowProcessor/index.html +27 -27
  168. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +103 -97
  169. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +27 -75
  170. package/coverage/lcov-report/utilities/scriptRunner.js.html +5 -5
  171. package/coverage/lcov-report/utilities/security.js.html +8 -8
  172. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  173. package/coverage/lcov-report/utilities/users.js.html +9 -9
  174. package/coverage/lcov-report/utilities/workerRequests.js.html +112 -43
  175. package/coverage/lcov.info +4431 -5013
  176. package/dist/api/controllers/application.js +60 -90
  177. package/dist/api/controllers/auth.js +5 -8
  178. package/dist/api/controllers/automation.js +19 -14
  179. package/dist/api/controllers/cloud.js +3 -2
  180. package/dist/api/controllers/component.js +4 -3
  181. package/dist/api/controllers/datasource.js +10 -20
  182. package/dist/api/controllers/deploy/Deployment.js +6 -3
  183. package/dist/api/controllers/deploy/index.js +13 -12
  184. package/dist/api/controllers/dev.js +5 -5
  185. package/dist/api/controllers/hosting.js +30 -0
  186. package/dist/api/controllers/layout.js +3 -3
  187. package/dist/api/controllers/metadata.js +4 -4
  188. package/dist/api/controllers/permission.js +4 -4
  189. package/dist/api/controllers/query/import/index.js +6 -4
  190. package/dist/api/controllers/query/index.js +10 -11
  191. package/dist/api/controllers/role.js +5 -5
  192. package/dist/api/controllers/routing.js +6 -5
  193. package/dist/api/controllers/row/ExternalRequest.js +67 -90
  194. package/dist/api/controllers/row/external.js +22 -14
  195. package/dist/api/controllers/row/internal.js +93 -55
  196. package/dist/api/controllers/row/internalSearch.js +17 -23
  197. package/dist/api/controllers/row/utils.js +14 -13
  198. package/dist/api/controllers/screen.js +7 -5
  199. package/dist/api/controllers/static/index.js +12 -61
  200. package/dist/api/controllers/table/external.js +10 -7
  201. package/dist/api/controllers/table/index.js +13 -16
  202. package/dist/api/controllers/table/internal.js +16 -22
  203. package/dist/api/controllers/table/utils.js +35 -62
  204. package/dist/api/controllers/user.js +20 -18
  205. package/dist/api/controllers/view/index.js +10 -8
  206. package/dist/api/controllers/view/utils.js +4 -9
  207. package/dist/api/controllers/webhook.js +8 -10
  208. package/dist/api/routes/hosting.js +11 -0
  209. package/dist/api/routes/index.js +2 -2
  210. package/dist/api/routes/static.js +1 -2
  211. package/dist/api/routes/tests/utilities/TestFunctions.js +17 -37
  212. package/dist/app.js +5 -35
  213. package/dist/automations/automationUtils.js +3 -2
  214. package/dist/automations/steps/createRow.js +5 -3
  215. package/dist/automations/steps/deleteRow.js +4 -1
  216. package/dist/automations/steps/updateRow.js +1 -1
  217. package/dist/automations/triggers.js +25 -27
  218. package/dist/automations/utils.js +5 -10
  219. package/dist/constants/index.js +0 -7
  220. package/dist/db/linkedRows/LinkController.js +7 -3
  221. package/dist/db/linkedRows/index.js +27 -16
  222. package/dist/db/linkedRows/linkUtils.js +6 -6
  223. package/dist/db/views/staticViews.js +10 -9
  224. package/dist/definitions/datasource.js +0 -1
  225. package/dist/environment.js +1 -4
  226. package/dist/integrations/base/sql.js +14 -56
  227. package/dist/integrations/index.js +0 -3
  228. package/dist/integrations/utils.js +9 -60
  229. package/dist/middleware/authorized.js +30 -57
  230. package/dist/middleware/builder.js +2 -2
  231. package/dist/middleware/currentapp.js +37 -41
  232. package/dist/middleware/usageQuota.js +15 -82
  233. package/dist/package.json +5 -8
  234. package/dist/tests/utilities/TestConfiguration.js +50 -80
  235. package/dist/threads/automation.js +11 -13
  236. package/dist/threads/query.js +11 -15
  237. package/dist/tsconfig.tsbuildinfo +1 -1
  238. package/dist/utilities/fileSystem/index.js +3 -4
  239. package/dist/utilities/global.js +12 -15
  240. package/dist/utilities/index.js +17 -7
  241. package/dist/utilities/routing/index.js +5 -5
  242. package/dist/utilities/rowProcessor/index.js +17 -23
  243. package/dist/utilities/rowProcessor/utils.js +4 -14
  244. package/dist/utilities/{usageQuota/index.js → usageQuota.js} +31 -45
  245. package/dist/utilities/users.js +3 -3
  246. package/dist/utilities/workerRequests.js +24 -4
  247. package/nodemon.json +1 -1
  248. package/package.json +6 -9
  249. package/scripts/integrations/postgres/init.sql +6 -11
  250. package/scripts/likeCypress.ts +1 -1
  251. package/src/api/controllers/application.js +50 -85
  252. package/src/api/controllers/auth.js +5 -8
  253. package/src/api/controllers/automation.js +23 -13
  254. package/src/api/controllers/cloud.js +3 -2
  255. package/src/api/controllers/component.js +4 -3
  256. package/src/api/controllers/datasource.js +11 -21
  257. package/src/api/controllers/deploy/Deployment.js +7 -3
  258. package/src/api/controllers/deploy/index.js +13 -20
  259. package/src/api/controllers/dev.js +5 -5
  260. package/src/api/controllers/hosting.js +22 -0
  261. package/src/api/controllers/layout.js +3 -3
  262. package/src/api/controllers/metadata.js +9 -4
  263. package/src/api/controllers/permission.js +4 -4
  264. package/src/api/controllers/query/import/index.ts +6 -4
  265. package/src/api/controllers/query/import/tests/index.spec.js +1 -2
  266. package/src/api/controllers/query/index.js +10 -11
  267. package/src/api/controllers/role.js +5 -5
  268. package/src/api/controllers/routing.js +6 -5
  269. package/src/api/controllers/row/ExternalRequest.ts +43 -67
  270. package/src/api/controllers/row/external.js +58 -27
  271. package/src/api/controllers/row/internal.js +90 -54
  272. package/src/api/controllers/row/internalSearch.js +17 -23
  273. package/src/api/controllers/row/utils.js +18 -13
  274. package/src/api/controllers/screen.js +7 -5
  275. package/src/api/controllers/static/index.js +12 -65
  276. package/src/api/controllers/table/external.js +10 -7
  277. package/src/api/controllers/table/index.js +28 -20
  278. package/src/api/controllers/table/internal.js +19 -24
  279. package/src/api/controllers/table/utils.js +42 -78
  280. package/src/api/controllers/user.js +20 -19
  281. package/src/api/controllers/view/index.js +10 -8
  282. package/src/api/controllers/view/utils.js +4 -9
  283. package/src/api/controllers/webhook.js +8 -10
  284. package/src/api/routes/hosting.js +13 -0
  285. package/src/api/routes/index.js +2 -2
  286. package/src/api/routes/static.js +0 -5
  287. package/src/api/routes/tests/application.spec.js +2 -2
  288. package/src/api/routes/tests/auth.spec.js +2 -1
  289. package/src/api/routes/tests/automation.spec.js +0 -1
  290. package/src/api/routes/tests/hosting.spec.js +36 -0
  291. package/src/api/routes/tests/misc.spec.js +1 -0
  292. package/src/api/routes/tests/routing.spec.js +12 -21
  293. package/src/api/routes/tests/row.spec.js +4 -7
  294. package/src/api/routes/tests/utilities/TestFunctions.js +17 -39
  295. package/src/app.ts +5 -18
  296. package/src/automations/automationUtils.js +3 -2
  297. package/src/automations/steps/createRow.js +5 -2
  298. package/src/automations/steps/deleteRow.js +4 -1
  299. package/src/automations/steps/updateRow.js +1 -1
  300. package/src/automations/triggers.js +31 -33
  301. package/src/automations/utils.js +5 -9
  302. package/src/constants/index.js +0 -9
  303. package/src/db/linkedRows/LinkController.js +7 -3
  304. package/src/db/linkedRows/index.js +31 -16
  305. package/src/db/linkedRows/linkUtils.js +6 -6
  306. package/src/db/tests/linkController.spec.js +1 -0
  307. package/src/db/tests/linkTests.spec.js +6 -5
  308. package/src/db/views/staticViews.js +10 -8
  309. package/src/definitions/common.ts +0 -3
  310. package/src/definitions/datasource.ts +0 -3
  311. package/src/environment.js +1 -4
  312. package/src/integrations/base/sql.ts +21 -69
  313. package/src/integrations/index.ts +0 -3
  314. package/src/integrations/tests/sql.spec.js +0 -16
  315. package/src/integrations/utils.ts +12 -75
  316. package/src/middleware/authorized.js +30 -66
  317. package/src/middleware/builder.js +2 -2
  318. package/src/middleware/currentapp.js +46 -50
  319. package/src/middleware/tests/authorized.spec.js +6 -13
  320. package/src/middleware/tests/currentapp.spec.js +0 -6
  321. package/src/middleware/tests/usageQuota.spec.js +24 -18
  322. package/src/middleware/usageQuota.js +17 -93
  323. package/src/tests/utilities/TestConfiguration.js +55 -82
  324. package/src/threads/automation.js +15 -17
  325. package/src/threads/query.js +12 -17
  326. package/src/utilities/fileSystem/index.js +3 -4
  327. package/src/utilities/global.js +12 -15
  328. package/src/utilities/index.js +17 -7
  329. package/src/utilities/routing/index.js +5 -5
  330. package/src/utilities/rowProcessor/index.js +27 -25
  331. package/src/utilities/rowProcessor/utils.js +7 -23
  332. package/src/utilities/usageQuota.js +73 -0
  333. package/src/utilities/users.js +3 -3
  334. package/src/utilities/workerRequests.js +27 -4
  335. package/tsconfig.json +1 -2
  336. package/builder/assets/index.83c0944f.css +0 -1
  337. package/coverage/lcov-report/api/controllers/migrations.js.html +0 -119
  338. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +0 -548
  339. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +0 -599
  340. package/coverage/lcov-report/utilities/usageQuota/index.html +0 -141
  341. package/coverage/lcov-report/utilities/usageQuota/index.js.html +0 -359
  342. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +0 -305
  343. package/dist/api/controllers/migrations.js +0 -21
  344. package/dist/api/controllers/row/staticFormula.js +0 -147
  345. package/dist/api/controllers/table/bulkFormula.js +0 -159
  346. package/dist/api/routes/migrations.js +0 -9
  347. package/dist/integrations/googlesheets.js +0 -340
  348. package/dist/migrations/functions/appUrls.js +0 -46
  349. package/dist/migrations/functions/quotas1.js +0 -50
  350. package/dist/migrations/functions/usageQuotas/index.js +0 -20
  351. package/dist/migrations/functions/usageQuotas/syncApps.js +0 -29
  352. package/dist/migrations/functions/usageQuotas/syncRows.js +0 -33
  353. package/dist/migrations/functions/userEmailViewCasing.js +0 -24
  354. package/dist/migrations/index.js +0 -62
  355. package/dist/utilities/usageQuota/rows.js +0 -78
  356. package/dist/utilities/usageQuota/usageQuoteReset.js +0 -16
  357. package/src/api/controllers/migrations.js +0 -13
  358. package/src/api/controllers/row/staticFormula.js +0 -156
  359. package/src/api/controllers/table/bulkFormula.js +0 -173
  360. package/src/api/routes/migrations.js +0 -14
  361. package/src/api/routes/tests/static.spec.js +0 -98
  362. package/src/integrations/googlesheets.ts +0 -353
  363. package/src/migrations/functions/appUrls.ts +0 -34
  364. package/src/migrations/functions/quotas1.ts +0 -20
  365. package/src/migrations/functions/tests/appUrls.spec.js +0 -29
  366. package/src/migrations/functions/tests/quotas1.spec.js +0 -27
  367. package/src/migrations/functions/tests/userEmailViewCasing.spec.js +0 -25
  368. package/src/migrations/functions/usageQuotas/index.ts +0 -8
  369. package/src/migrations/functions/usageQuotas/syncApps.ts +0 -18
  370. package/src/migrations/functions/usageQuotas/syncRows.ts +0 -22
  371. package/src/migrations/functions/usageQuotas/tests/syncApps.spec.js +0 -37
  372. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.js +0 -43
  373. package/src/migrations/functions/userEmailViewCasing.ts +0 -13
  374. package/src/migrations/index.ts +0 -56
  375. package/src/module.d.ts +0 -3
  376. package/src/utilities/tests/usageQuota/usageQuota.spec.js +0 -72
  377. package/src/utilities/usageQuota/index.js +0 -93
  378. package/src/utilities/usageQuota/rows.js +0 -75
  379. package/src/utilities/usageQuota/usageQuoteReset.js +0 -18
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">96.02% </span>
26
+ <span class="strong">96.05% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>145/151</span>
28
+ <span class='fraction'>146/152</span>
29
29
  </div>
30
30
 
31
31
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">96.66% </span>
47
+ <span class="strong">96.68% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>145/150</span>
49
+ <span class='fraction'>146/151</span>
50
50
  </div>
51
51
 
52
52
 
@@ -521,15 +521,19 @@
521
521
  <a name='L462'></a><a href='#L462'>462</a>
522
522
  <a name='L463'></a><a href='#L463'>463</a>
523
523
  <a name='L464'></a><a href='#L464'>464</a>
524
- <a name='L465'></a><a href='#L465'>465</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">39x</span>
524
+ <a name='L465'></a><a href='#L465'>465</a>
525
+ <a name='L466'></a><a href='#L466'>466</a>
526
+ <a name='L467'></a><a href='#L467'>467</a>
527
+ <a name='L468'></a><a href='#L468'>468</a>
528
+ <a name='L469'></a><a href='#L469'>469</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">34x</span>
529
+ <span class="cline-any cline-yes">34x</span>
525
530
  <span class="cline-any cline-neutral">&nbsp;</span>
526
531
  <span class="cline-any cline-neutral">&nbsp;</span>
527
532
  <span class="cline-any cline-neutral">&nbsp;</span>
528
533
  <span class="cline-any cline-neutral">&nbsp;</span>
529
- <span class="cline-any cline-yes">39x</span>
530
- <span class="cline-any cline-yes">39x</span>
531
- <span class="cline-any cline-yes">39x</span>
532
- <span class="cline-any cline-yes">39x</span>
534
+ <span class="cline-any cline-yes">34x</span>
535
+ <span class="cline-any cline-yes">34x</span>
536
+ <span class="cline-any cline-yes">34x</span>
533
537
  <span class="cline-any cline-neutral">&nbsp;</span>
534
538
  <span class="cline-any cline-neutral">&nbsp;</span>
535
539
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -576,11 +580,12 @@
576
580
  <span class="cline-any cline-neutral">&nbsp;</span>
577
581
  <span class="cline-any cline-neutral">&nbsp;</span>
578
582
  <span class="cline-any cline-neutral">&nbsp;</span>
579
- <span class="cline-any cline-yes">192x</span>
580
- <span class="cline-any cline-yes">192x</span>
581
- <span class="cline-any cline-yes">192x</span>
582
- <span class="cline-any cline-yes">192x</span>
583
- <span class="cline-any cline-yes">192x</span>
583
+ <span class="cline-any cline-yes">187x</span>
584
+ <span class="cline-any cline-yes">187x</span>
585
+ <span class="cline-any cline-yes">187x</span>
586
+ <span class="cline-any cline-yes">187x</span>
587
+ <span class="cline-any cline-yes">187x</span>
588
+ <span class="cline-any cline-yes">187x</span>
584
589
  <span class="cline-any cline-neutral">&nbsp;</span>
585
590
  <span class="cline-any cline-neutral">&nbsp;</span>
586
591
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -604,16 +609,16 @@
604
609
  <span class="cline-any cline-neutral">&nbsp;</span>
605
610
  <span class="cline-any cline-neutral">&nbsp;</span>
606
611
  <span class="cline-any cline-neutral">&nbsp;</span>
607
- <span class="cline-any cline-yes">185x</span>
612
+ <span class="cline-any cline-yes">180x</span>
608
613
  <span class="cline-any cline-yes">5x</span>
609
614
  <span class="cline-any cline-neutral">&nbsp;</span>
610
- <span class="cline-any cline-yes">185x</span>
611
- <span class="cline-any cline-yes">460x</span>
612
- <span class="cline-any cline-yes">460x</span>
615
+ <span class="cline-any cline-yes">180x</span>
616
+ <span class="cline-any cline-yes">450x</span>
617
+ <span class="cline-any cline-yes">450x</span>
613
618
  <span class="cline-any cline-yes">41x</span>
614
619
  <span class="cline-any cline-neutral">&nbsp;</span>
615
620
  <span class="cline-any cline-neutral">&nbsp;</span>
616
- <span class="cline-any cline-yes">144x</span>
621
+ <span class="cline-any cline-yes">139x</span>
617
622
  <span class="cline-any cline-neutral">&nbsp;</span>
618
623
  <span class="cline-any cline-neutral">&nbsp;</span>
619
624
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -631,6 +636,7 @@
631
636
  <span class="cline-any cline-neutral">&nbsp;</span>
632
637
  <span class="cline-any cline-neutral">&nbsp;</span>
633
638
  <span class="cline-any cline-neutral">&nbsp;</span>
639
+ <span class="cline-any cline-neutral">&nbsp;</span>
634
640
  <span class="cline-any cline-yes">9x</span>
635
641
  <span class="cline-any cline-neutral">&nbsp;</span>
636
642
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -641,6 +647,7 @@
641
647
  <span class="cline-any cline-neutral">&nbsp;</span>
642
648
  <span class="cline-any cline-neutral">&nbsp;</span>
643
649
  <span class="cline-any cline-neutral">&nbsp;</span>
650
+ <span class="cline-any cline-neutral">&nbsp;</span>
644
651
  <span class="cline-any cline-yes">22x</span>
645
652
  <span class="cline-any cline-yes">22x</span>
646
653
  <span class="cline-any cline-yes">82x</span>
@@ -756,6 +763,7 @@
756
763
  <span class="cline-any cline-neutral">&nbsp;</span>
757
764
  <span class="cline-any cline-neutral">&nbsp;</span>
758
765
  <span class="cline-any cline-neutral">&nbsp;</span>
766
+ <span class="cline-any cline-neutral">&nbsp;</span>
759
767
  <span class="cline-any cline-yes">1x</span>
760
768
  <span class="cline-any cline-neutral">&nbsp;</span>
761
769
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -984,8 +992,9 @@
984
992
  <span class="cline-any cline-neutral">&nbsp;</span>
985
993
  <span class="cline-any cline-neutral">&nbsp;</span>
986
994
  <span class="cline-any cline-neutral">&nbsp;</span>
987
- <span class="cline-any cline-yes">39x</span>
988
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const { IncludeDocs, getLinkDocuments } = require("./linkUtils")
995
+ <span class="cline-any cline-yes">34x</span>
996
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const CouchDB = require("../index")
997
+ const { IncludeDocs, getLinkDocuments } = require("./linkUtils")
989
998
  const {
990
999
  generateLinkID,
991
1000
  InternalTables,
@@ -993,7 +1002,6 @@ const {
993
1002
  } = require("../utils")
994
1003
  const Sentry = require("@sentry/node")
995
1004
  const { FieldTypes, RelationshipTypes } = require("../../constants")
996
- const { getAppDB } = require("@budibase/backend-core/context")
997
1005
  &nbsp;
998
1006
  /**
999
1007
  * Creates a new link document structure which can be put to the database. It is important to
@@ -1039,8 +1047,9 @@ function LinkDocument(
1039
1047
  }
1040
1048
  &nbsp;
1041
1049
  class LinkController {
1042
- constructor({ tableId, row, table, oldTable }) {
1043
- this._db = getAppDB()
1050
+ constructor({ appId, tableId, row, table, oldTable }) {
1051
+ this._appId = appId
1052
+ this._db = new CouchDB(appId)
1044
1053
  this._tableId = tableId
1045
1054
  this._row = row
1046
1055
  this._table = table
@@ -1085,6 +1094,7 @@ class LinkController {
1085
1094
  */
1086
1095
  getRowLinkDocs(rowId) {
1087
1096
  return getLinkDocuments({
1097
+ appId: this._appId,
1088
1098
  tableId: this._tableId,
1089
1099
  rowId,
1090
1100
  includeDocs: IncludeDocs.INCLUDE,
@@ -1096,6 +1106,7 @@ class LinkController {
1096
1106
  */
1097
1107
  getTableLinkDocs() {
1098
1108
  return getLinkDocuments({
1109
+ appId: this._appId,
1099
1110
  tableId: this._tableId,
1100
1111
  includeDocs: IncludeDocs.INCLUDE,
1101
1112
  })
@@ -1214,6 +1225,7 @@ class LinkController {
1214
1225
  if (linkedSchema.relationshipType === RelationshipTypes.ONE_TO_MANY) {
1215
1226
  let links = (
1216
1227
  await getLinkDocuments({
1228
+ appId: this._appId,
1217
1229
  tableId: field.tableId,
1218
1230
  rowId: linkId,
1219
1231
  includeDocs: IncludeDocs.EXCLUDE,
@@ -1456,7 +1468,7 @@ module.exports = LinkController
1456
1468
  <div class='footer quiet pad2 space-top1 center small'>
1457
1469
  Code coverage generated by
1458
1470
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1459
- at Thu Feb 03 2022 20:58:15 GMT+0000 (Coordinated Universal Time)
1471
+ at Fri Feb 04 2022 12:19:28 GMT+0000 (Coordinated Universal Time)
1460
1472
  </div>
1461
1473
  </div>
1462
1474
  <script src="../../prettify.js"></script>
@@ -23,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">95.75% </span>
26
+ <span class="strong">96.46% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>293/306</span>
28
+ <span class='fraction'>300/311</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">84.32% </span>
33
+ <span class="strong">86.02% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>113/134</span>
35
+ <span class='fraction'>117/136</span>
36
36
  </div>
37
37
 
38
38
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">95.93% </span>
47
+ <span class="strong">96.66% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>283/295</span>
49
+ <span class='fraction'>290/300</span>
50
50
  </div>
51
51
 
52
52
 
@@ -74,47 +74,47 @@
74
74
  </thead>
75
75
  <tbody><tr>
76
76
  <td class="file high" data-value="LinkController.js"><a href="LinkController.js.html">LinkController.js</a></td>
77
- <td data-value="96.02" class="pic high">
77
+ <td data-value="96.05" class="pic high">
78
78
  <div class="chart"><div class="cover-fill" style="width: 96%"></div><div class="cover-empty" style="width: 4%"></div></div>
79
79
  </td>
80
- <td data-value="96.02" class="pct high">96.02%</td>
81
- <td data-value="151" class="abs high">145/151</td>
80
+ <td data-value="96.05" class="pct high">96.05%</td>
81
+ <td data-value="152" class="abs high">146/152</td>
82
82
  <td data-value="88.23" class="pct high">88.23%</td>
83
83
  <td data-value="68" class="abs high">60/68</td>
84
84
  <td data-value="88.88" class="pct high">88.88%</td>
85
85
  <td data-value="27" class="abs high">24/27</td>
86
- <td data-value="96.66" class="pct high">96.66%</td>
87
- <td data-value="150" class="abs high">145/150</td>
86
+ <td data-value="96.68" class="pct high">96.68%</td>
87
+ <td data-value="151" class="abs high">146/151</td>
88
88
  </tr>
89
89
 
90
90
  <tr>
91
91
  <td class="file high" data-value="index.js"><a href="index.js.html">index.js</a></td>
92
- <td data-value="96.9" class="pic high">
92
+ <td data-value="96.07" class="pic high">
93
93
  <div class="chart"><div class="cover-fill" style="width: 96%"></div><div class="cover-empty" style="width: 4%"></div></div>
94
94
  </td>
95
- <td data-value="96.9" class="pct high">96.9%</td>
96
- <td data-value="97" class="abs high">94/97</td>
97
- <td data-value="82.5" class="pct high">82.5%</td>
98
- <td data-value="40" class="abs high">33/40</td>
95
+ <td data-value="96.07" class="pct high">96.07%</td>
96
+ <td data-value="102" class="abs high">98/102</td>
97
+ <td data-value="80.95" class="pct high">80.95%</td>
98
+ <td data-value="42" class="abs high">34/42</td>
99
99
  <td data-value="100" class="pct high">100%</td>
100
100
  <td data-value="20" class="abs high">20/20</td>
101
- <td data-value="96.7" class="pct high">96.7%</td>
102
- <td data-value="91" class="abs high">88/91</td>
101
+ <td data-value="95.83" class="pct high">95.83%</td>
102
+ <td data-value="96" class="abs high">92/96</td>
103
103
  </tr>
104
104
 
105
105
  <tr>
106
106
  <td class="file high" data-value="linkUtils.js"><a href="linkUtils.js.html">linkUtils.js</a></td>
107
- <td data-value="93.1" class="pic high">
108
- <div class="chart"><div class="cover-fill" style="width: 93%"></div><div class="cover-empty" style="width: 7%"></div></div>
107
+ <td data-value="98.24" class="pic high">
108
+ <div class="chart"><div class="cover-fill" style="width: 98%"></div><div class="cover-empty" style="width: 2%"></div></div>
109
109
  </td>
110
- <td data-value="93.1" class="pct high">93.1%</td>
111
- <td data-value="58" class="abs high">54/58</td>
112
- <td data-value="76.92" class="pct medium">76.92%</td>
113
- <td data-value="26" class="abs medium">20/26</td>
110
+ <td data-value="98.24" class="pct high">98.24%</td>
111
+ <td data-value="57" class="abs high">56/57</td>
112
+ <td data-value="88.46" class="pct high">88.46%</td>
113
+ <td data-value="26" class="abs high">23/26</td>
114
114
  <td data-value="100" class="pct high">100%</td>
115
115
  <td data-value="13" class="abs high">13/13</td>
116
- <td data-value="92.59" class="pct high">92.59%</td>
117
- <td data-value="54" class="abs high">50/54</td>
116
+ <td data-value="98.11" class="pct high">98.11%</td>
117
+ <td data-value="53" class="abs high">52/53</td>
118
118
  </tr>
119
119
 
120
120
  </tbody>
@@ -125,7 +125,7 @@
125
125
  <div class='footer quiet pad2 space-top1 center small'>
126
126
  Code coverage generated by
127
127
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
128
- at Thu Feb 03 2022 20:58:15 GMT+0000 (Coordinated Universal Time)
128
+ at Fri Feb 04 2022 12:19:28 GMT+0000 (Coordinated Universal Time)
129
129
  </div>
130
130
  </div>
131
131
  <script src="../../prettify.js"></script>
@@ -23,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">96.9% </span>
26
+ <span class="strong">96.07% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>94/97</span>
28
+ <span class='fraction'>98/102</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">82.5% </span>
33
+ <span class="strong">80.95% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>33/40</span>
35
+ <span class='fraction'>34/42</span>
36
36
  </div>
37
37
 
38
38
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">96.7% </span>
47
+ <span class="strong">95.83% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>88/91</span>
49
+ <span class='fraction'>92/96</span>
50
50
  </div>
51
51
 
52
52
 
@@ -268,7 +268,22 @@
268
268
  <a name='L209'></a><a href='#L209'>209</a>
269
269
  <a name='L210'></a><a href='#L210'>210</a>
270
270
  <a name='L211'></a><a href='#L211'>211</a>
271
- <a name='L212'></a><a href='#L212'>212</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">39x</span>
271
+ <a name='L212'></a><a href='#L212'>212</a>
272
+ <a name='L213'></a><a href='#L213'>213</a>
273
+ <a name='L214'></a><a href='#L214'>214</a>
274
+ <a name='L215'></a><a href='#L215'>215</a>
275
+ <a name='L216'></a><a href='#L216'>216</a>
276
+ <a name='L217'></a><a href='#L217'>217</a>
277
+ <a name='L218'></a><a href='#L218'>218</a>
278
+ <a name='L219'></a><a href='#L219'>219</a>
279
+ <a name='L220'></a><a href='#L220'>220</a>
280
+ <a name='L221'></a><a href='#L221'>221</a>
281
+ <a name='L222'></a><a href='#L222'>222</a>
282
+ <a name='L223'></a><a href='#L223'>223</a>
283
+ <a name='L224'></a><a href='#L224'>224</a>
284
+ <a name='L225'></a><a href='#L225'>225</a>
285
+ <a name='L226'></a><a href='#L226'>226</a>
286
+ <a name='L227'></a><a href='#L227'>227</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">34x</span>
272
287
  <span class="cline-any cline-neutral">&nbsp;</span>
273
288
  <span class="cline-any cline-neutral">&nbsp;</span>
274
289
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -277,21 +292,21 @@
277
292
  <span class="cline-any cline-neutral">&nbsp;</span>
278
293
  <span class="cline-any cline-neutral">&nbsp;</span>
279
294
  <span class="cline-any cline-neutral">&nbsp;</span>
280
- <span class="cline-any cline-yes">39x</span>
281
- <span class="cline-any cline-yes">39x</span>
282
- <span class="cline-any cline-yes">39x</span>
283
- <span class="cline-any cline-yes">39x</span>
284
- <span class="cline-any cline-yes">39x</span>
285
- <span class="cline-any cline-yes">39x</span>
286
- <span class="cline-any cline-yes">39x</span>
287
- <span class="cline-any cline-yes">39x</span>
295
+ <span class="cline-any cline-yes">34x</span>
296
+ <span class="cline-any cline-yes">34x</span>
297
+ <span class="cline-any cline-yes">34x</span>
298
+ <span class="cline-any cline-yes">34x</span>
299
+ <span class="cline-any cline-yes">34x</span>
300
+ <span class="cline-any cline-yes">34x</span>
301
+ <span class="cline-any cline-yes">34x</span>
302
+ <span class="cline-any cline-yes">34x</span>
288
303
  <span class="cline-any cline-neutral">&nbsp;</span>
289
304
  <span class="cline-any cline-neutral">&nbsp;</span>
290
305
  <span class="cline-any cline-neutral">&nbsp;</span>
291
306
  <span class="cline-any cline-neutral">&nbsp;</span>
292
307
  <span class="cline-any cline-neutral">&nbsp;</span>
293
308
  <span class="cline-any cline-neutral">&nbsp;</span>
294
- <span class="cline-any cline-yes">39x</span>
309
+ <span class="cline-any cline-yes">34x</span>
295
310
  <span class="cline-any cline-neutral">&nbsp;</span>
296
311
  <span class="cline-any cline-neutral">&nbsp;</span>
297
312
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -300,11 +315,11 @@
300
315
  <span class="cline-any cline-neutral">&nbsp;</span>
301
316
  <span class="cline-any cline-neutral">&nbsp;</span>
302
317
  <span class="cline-any cline-neutral">&nbsp;</span>
303
- <span class="cline-any cline-yes">39x</span>
318
+ <span class="cline-any cline-yes">34x</span>
304
319
  <span class="cline-any cline-neutral">&nbsp;</span>
305
- <span class="cline-any cline-yes">39x</span>
306
- <span class="cline-any cline-yes">39x</span>
307
- <span class="cline-any cline-yes">39x</span>
320
+ <span class="cline-any cline-yes">34x</span>
321
+ <span class="cline-any cline-yes">34x</span>
322
+ <span class="cline-any cline-yes">34x</span>
308
323
  <span class="cline-any cline-neutral">&nbsp;</span>
309
324
  <span class="cline-any cline-neutral">&nbsp;</span>
310
325
  <span class="cline-any cline-yes">30x</span>
@@ -333,6 +348,7 @@
333
348
  <span class="cline-any cline-neutral">&nbsp;</span>
334
349
  <span class="cline-any cline-neutral">&nbsp;</span>
335
350
  <span class="cline-any cline-neutral">&nbsp;</span>
351
+ <span class="cline-any cline-neutral">&nbsp;</span>
336
352
  <span class="cline-any cline-yes">30x</span>
337
353
  <span class="cline-any cline-neutral">&nbsp;</span>
338
354
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -372,21 +388,25 @@
372
388
  <span class="cline-any cline-neutral">&nbsp;</span>
373
389
  <span class="cline-any cline-neutral">&nbsp;</span>
374
390
  <span class="cline-any cline-neutral">&nbsp;</span>
375
- <span class="cline-any cline-yes">39x</span>
376
- <span class="cline-any cline-yes">182x</span>
377
- <span class="cline-any cline-yes">182x</span>
378
391
  <span class="cline-any cline-neutral">&nbsp;</span>
379
- <span class="cline-any cline-yes">182x</span>
380
- <span class="cline-any cline-yes">103x</span>
392
+ <span class="cline-any cline-yes">34x</span>
393
+ <span class="cline-any cline-yes">177x</span>
394
+ <span class="cline-any cline-yes">177x</span>
395
+ <span class="cline-any cline-yes">177x</span>
396
+ <span class="cline-any cline-no">&nbsp;</span>
397
+ <span class="cline-any cline-neutral">&nbsp;</span>
398
+ <span class="cline-any cline-neutral">&nbsp;</span>
399
+ <span class="cline-any cline-yes">177x</span>
400
+ <span class="cline-any cline-yes">101x</span>
381
401
  <span class="cline-any cline-neutral">&nbsp;</span>
382
- <span class="cline-any cline-yes">182x</span>
383
- <span class="cline-any cline-yes">182x</span>
384
- <span class="cline-any cline-yes">182x</span>
402
+ <span class="cline-any cline-yes">177x</span>
403
+ <span class="cline-any cline-yes">177x</span>
404
+ <span class="cline-any cline-yes">177x</span>
385
405
  <span class="cline-any cline-neutral">&nbsp;</span>
386
406
  <span class="cline-any cline-neutral">&nbsp;</span>
387
407
  <span class="cline-any cline-neutral">&nbsp;</span>
388
408
  <span class="cline-any cline-neutral">&nbsp;</span>
389
- <span class="cline-any cline-yes">141x</span>
409
+ <span class="cline-any cline-yes">136x</span>
390
410
  <span class="cline-any cline-neutral">&nbsp;</span>
391
411
  <span class="cline-any cline-neutral">&nbsp;</span>
392
412
  <span class="cline-any cline-no">&nbsp;</span>
@@ -415,11 +435,15 @@
415
435
  <span class="cline-any cline-neutral">&nbsp;</span>
416
436
  <span class="cline-any cline-neutral">&nbsp;</span>
417
437
  <span class="cline-any cline-neutral">&nbsp;</span>
418
- <span class="cline-any cline-yes">39x</span>
419
- <span class="cline-any cline-yes">103x</span>
420
- <span class="cline-any cline-yes">103x</span>
421
- <span class="cline-any cline-yes">73x</span>
422
438
  <span class="cline-any cline-neutral">&nbsp;</span>
439
+ <span class="cline-any cline-yes">34x</span>
440
+ <span class="cline-any cline-yes">100x</span>
441
+ <span class="cline-any cline-yes">100x</span>
442
+ <span class="cline-any cline-yes">100x</span>
443
+ <span class="cline-any cline-yes">70x</span>
444
+ <span class="cline-any cline-neutral">&nbsp;</span>
445
+ <span class="cline-any cline-neutral">&nbsp;</span>
446
+ <span class="cline-any cline-yes">30x</span>
423
447
  <span class="cline-any cline-neutral">&nbsp;</span>
424
448
  <span class="cline-any cline-yes">30x</span>
425
449
  <span class="cline-any cline-yes">25x</span>
@@ -439,6 +463,10 @@
439
463
  <span class="cline-any cline-neutral">&nbsp;</span>
440
464
  <span class="cline-any cline-yes">18x</span>
441
465
  <span class="cline-any cline-yes">18x</span>
466
+ <span class="cline-any cline-neutral">&nbsp;</span>
467
+ <span class="cline-any cline-neutral">&nbsp;</span>
468
+ <span class="cline-any cline-neutral">&nbsp;</span>
469
+ <span class="cline-any cline-neutral">&nbsp;</span>
442
470
  <span class="cline-any cline-yes">18x</span>
443
471
  <span class="cline-any cline-yes">18x</span>
444
472
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -454,7 +482,9 @@
454
482
  <span class="cline-any cline-neutral">&nbsp;</span>
455
483
  <span class="cline-any cline-neutral">&nbsp;</span>
456
484
  <span class="cline-any cline-neutral">&nbsp;</span>
457
- <span class="cline-any cline-yes">39x</span>
485
+ <span class="cline-any cline-neutral">&nbsp;</span>
486
+ <span class="cline-any cline-yes">34x</span>
487
+ <span class="cline-any cline-yes">26x</span>
458
488
  <span class="cline-any cline-neutral">&nbsp;</span>
459
489
  <span class="cline-any cline-yes">26x</span>
460
490
  <span class="cline-any cline-yes">26x</span>
@@ -490,12 +520,12 @@ const {
490
520
  getLinkedTable,
491
521
  } = require("./linkUtils")
492
522
  const { flatten } = require("lodash")
523
+ const CouchDB = require("../../db")
493
524
  const { FieldTypes } = require("../../constants")
494
525
  const { getMultiIDParams, USER_METDATA_PREFIX } = require("../../db/utils")
495
526
  const { partition } = require("lodash")
496
527
  const { getGlobalUsersFromMetadata } = require("../../utilities/global")
497
528
  const { processFormulas } = require("../../utilities/rowProcessor/utils")
498
- const { getAppDB } = require("@budibase/backend-core/context")
499
529
  &nbsp;
500
530
  /**
501
531
  * This functionality makes sure that when rows with links are created, updated or deleted they are processed
@@ -529,13 +559,14 @@ function clearRelationshipFields(table, rows) {
529
559
  return rows
530
560
  }
531
561
  &nbsp;
532
- async function getLinksForRows(rows) {
562
+ async function getLinksForRows(appId, rows) {
533
563
  const tableIds = [...new Set(rows.map(el =&gt; el.tableId))]
534
564
  // start by getting all the link values for performance reasons
535
565
  const responses = flatten(
536
566
  await Promise.all(
537
567
  tableIds.map(tableId =&gt;
538
568
  getLinkDocuments({
569
+ appId,
539
570
  tableId: tableId,
540
571
  includeDocs: IncludeDocs.EXCLUDE,
541
572
  })
@@ -552,9 +583,9 @@ async function getLinksForRows(rows) {
552
583
  )
553
584
  }
554
585
  &nbsp;
555
- async function getFullLinkedDocs(links) {
586
+ async function getFullLinkedDocs(ctx, appId, links) {
556
587
  // create DBs
557
- const db = getAppDB()
588
+ const db = new CouchDB(appId)
558
589
  const linkedRowIds = links.map(link =&gt; link.id)
559
590
  const uniqueRowIds = [...new Set(linkedRowIds)]
560
591
  let dbRows = (await db.allDocs(getMultiIDParams(uniqueRowIds))).rows.map(
@@ -568,7 +599,7 @@ async function getFullLinkedDocs(links) {
568
599
  let [users, other] = partition(linked, linkRow =&gt;
569
600
  linkRow._id.startsWith(USER_METDATA_PREFIX)
570
601
  )
571
- users = await getGlobalUsersFromMetadata(users)
602
+ users = await getGlobalUsersFromMetadata(appId, users)
572
603
  return [...other, ...users]
573
604
  }
574
605
  &nbsp;
@@ -576,16 +607,20 @@ async function getFullLinkedDocs(links) {
576
607
  * Update link documents for a row or table - this is to be called by the API controller when a change is occurring.
577
608
  * @param {string} args.eventType states what type of change which is occurring, means this can be expanded upon in the
578
609
  * future quite easily (all updates go through one function).
610
+ * @param {string} args.appId The ID of the instance in which the change is occurring.
579
611
  * @param {string} args.tableId The ID of the of the table which is being changed.
580
- * @param {object|undefined} args.row The row which is changing, e.g. created, updated or deleted.
581
- * @param {object|undefined} args.table If the table has already been retrieved this can be used to reduce database gets.
582
- * @param {object|undefined} args.oldTable If the table is being updated then the old table can be provided for differencing.
612
+ * @param {object|null} args.row The row which is changing, e.g. created, updated or deleted.
613
+ * @param {object|null} args.table If the table has already been retrieved this can be used to reduce database gets.
614
+ * @param {object|null} args.oldTable If the table is being updated then the old table can be provided for differencing.
583
615
  * @returns {Promise&lt;object&gt;} When the update is complete this will respond successfully. Returns the row for
584
616
  * row operations and the table for table operations.
585
617
  */
586
618
  exports.updateLinks = async function (args) {
587
- const { eventType, row, tableId, table, oldTable } = args
619
+ const { eventType, appId, row, tableId, table, oldTable } = args
588
620
  const baseReturnObj = row == null ? table : row
621
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (appId == null) {
622
+ <span class="cstat-no" title="statement not covered" > throw "Cannot operate without an instance ID."</span>
623
+ }
589
624
  // make sure table ID is set
590
625
  if (tableId == null &amp;&amp; table != null) {
591
626
  args.tableId = table._id
@@ -622,23 +657,27 @@ exports.updateLinks = async function (args) {
622
657
  /**
623
658
  * Given a table and a list of rows this will retrieve all of the attached docs and enrich them into the row.
624
659
  * This is required for formula fields, this may only be utilised internally (for now).
660
+ * @param {object} ctx The request which is looking for rows.
625
661
  * @param {object} table The table from which the rows originated.
626
662
  * @param {array&lt;object&gt;} rows The rows which are to be enriched.
627
663
  * @return {Promise&lt;*&gt;} returns the rows with all of the enriched relationships on it.
628
664
  */
629
- exports.attachFullLinkedDocs = async (table, rows) =&gt; {
665
+ exports.attachFullLinkedDocs = async (ctx, table, rows) =&gt; {
666
+ const appId = ctx.appId
630
667
  const linkedTableIds = getLinkedTableIDs(table)
631
668
  if (linkedTableIds.length === 0) {
632
669
  return rows
633
670
  }
671
+ // create DBs
672
+ const db = new CouchDB(appId)
634
673
  // get all the links
635
- const links = (await getLinksForRows(rows)).filter(link =&gt;
674
+ const links = (await getLinksForRows(appId, rows)).filter(link =&gt;
636
675
  rows.some(row =&gt; row._id === link.thisId)
637
676
  )
638
677
  // clear any existing links that could be dupe'd
639
678
  rows = clearRelationshipFields(table, rows)
640
679
  // now get the docs and combine into the rows
641
- let linked = await getFullLinkedDocs(links)
680
+ let linked = await getFullLinkedDocs(ctx, appId, links)
642
681
  const linkedTables = []
643
682
  for (let row of rows) {
644
683
  for (let link of links.filter(link =&gt; link.thisId === row._id)) {
@@ -649,7 +688,11 @@ exports.attachFullLinkedDocs = async (table, rows) =&gt; {
649
688
  if (linkedRow) {
650
689
  const linkedTableId =
651
690
  linkedRow.tableId || <span class="branch-1 cbranch-no" title="branch not covered" >getRelatedTableForField(table, link.fieldName)</span>
652
- const linkedTable = await getLinkedTable(linkedTableId, linkedTables)
691
+ const linkedTable = await getLinkedTable(
692
+ db,
693
+ linkedTableId,
694
+ linkedTables
695
+ )
653
696
  if (linkedTable) {
654
697
  row[link.fieldName].push(processFormulas(linkedTable, linkedRow))
655
698
  }
@@ -661,16 +704,18 @@ exports.attachFullLinkedDocs = async (table, rows) =&gt; {
661
704
  &nbsp;
662
705
  /**
663
706
  * This function will take the given enriched rows and squash the links to only contain the primary display field.
707
+ * @param {string} appId The app in which the tables/rows/links exist.
664
708
  * @param {object} table The table from which the rows originated.
665
709
  * @param {array&lt;object&gt;} enriched The pre-enriched rows (full docs) which are to be squashed.
666
710
  * @returns {Promise&lt;Array&gt;} The rows after having their links squashed to only contain the ID and primary display.
667
711
  */
668
- exports.squashLinksToPrimaryDisplay = async (table, enriched) =&gt; {
712
+ exports.squashLinksToPrimaryDisplay = async (appId, table, enriched) =&gt; {
713
+ const db = new CouchDB(appId)
669
714
  // will populate this as we find them
670
715
  const linkedTables = [table]
671
716
  for (let row of enriched) {
672
717
  // this only fetches the table if its not already in array
673
- const rowTable = await getLinkedTable(row.tableId, linkedTables)
718
+ const rowTable = await getLinkedTable(db, row.tableId, linkedTables)
674
719
  for (let [column, schema] of Object.entries(rowTable.schema)) {
675
720
  if (schema.type !== FieldTypes.LINK || !Array.isArray(row[column])) {
676
721
  continue
@@ -678,7 +723,7 @@ exports.squashLinksToPrimaryDisplay = async (table, enriched) =&gt; {
678
723
  const newLinks = []
679
724
  for (let link of row[column]) {
680
725
  const linkTblId = link.tableId || <span class="branch-1 cbranch-no" title="branch not covered" >getRelatedTableForField(table, column)</span>
681
- const linkedTable = await getLinkedTable(linkTblId, linkedTables)
726
+ const linkedTable = await getLinkedTable(db, linkTblId, linkedTables)
682
727
  const obj = { _id: link._id }
683
728
  if (link[linkedTable.primaryDisplay]) {
684
729
  obj.primaryDisplay = link[linkedTable.primaryDisplay]
@@ -697,7 +742,7 @@ exports.squashLinksToPrimaryDisplay = async (table, enriched) =&gt; {
697
742
  <div class='footer quiet pad2 space-top1 center small'>
698
743
  Code coverage generated by
699
744
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
700
- at Thu Feb 03 2022 20:58:15 GMT+0000 (Coordinated Universal Time)
745
+ at Fri Feb 04 2022 12:19:28 GMT+0000 (Coordinated Universal Time)
701
746
  </div>
702
747
  </div>
703
748
  <script src="../../prettify.js"></script>