@budibase/server 1.0.49-alpha.0 → 1.0.49-alpha.12

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 (357) hide show
  1. package/__mocks__/arangojs.ts +1 -1
  2. package/__mocks__/aws-sdk.ts +4 -4
  3. package/__mocks__/mongodb.ts +4 -5
  4. package/__mocks__/mssql.ts +3 -3
  5. package/__mocks__/node-fetch.ts +2 -1
  6. package/__mocks__/pg.ts +3 -5
  7. package/builder/assets/{index.8184eed9.js → index.0bdf1cad.js} +195 -194
  8. package/builder/assets/{index.dd9e386f.css → index.83c0944f.css} +1 -1
  9. package/builder/assets/{vendor.3bd2f661.js → vendor.d526bfe8.js} +1 -1
  10. package/builder/index.html +3 -3
  11. package/coverage/clover.xml +2927 -2819
  12. package/coverage/coverage-final.json +104 -103
  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 +157 -136
  16. package/coverage/lcov-report/api/controllers/auth.js.html +11 -14
  17. package/coverage/lcov-report/api/controllers/automation.js.html +39 -69
  18. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/cloud.js.html +8 -11
  20. package/coverage/lcov-report/api/controllers/component.js.html +10 -13
  21. package/coverage/lcov-report/api/controllers/datasource.js.html +31 -37
  22. package/coverage/lcov-report/api/controllers/dev.js.html +6 -6
  23. package/coverage/lcov-report/api/controllers/index.html +69 -54
  24. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/layout.js.html +9 -9
  26. package/coverage/lcov-report/api/controllers/metadata.js.html +6 -21
  27. package/coverage/lcov-report/{migrations/usageQuotas/syncApps.js.html → api/controllers/migrations.js.html} +30 -45
  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 +38 -35
  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 +7 -10
  34. package/coverage/lcov-report/api/controllers/row/external.js.html +48 -141
  35. package/coverage/lcov-report/api/controllers/row/index.html +52 -37
  36. package/coverage/lcov-report/api/controllers/row/index.js.html +13 -13
  37. package/coverage/lcov-report/api/controllers/row/internal.js.html +108 -216
  38. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +52 -34
  39. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +548 -0
  40. package/coverage/lcov-report/api/controllers/row/utils.js.html +27 -24
  41. package/coverage/lcov-report/api/controllers/screen.js.html +15 -21
  42. package/coverage/lcov-report/api/controllers/script.js.html +4 -4
  43. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +599 -0
  44. package/coverage/lcov-report/api/controllers/table/external.js.html +25 -34
  45. package/coverage/lcov-report/api/controllers/table/index.html +57 -42
  46. package/coverage/lcov-report/api/controllers/table/index.js.html +28 -70
  47. package/coverage/lcov-report/api/controllers/table/internal.js.html +56 -47
  48. package/coverage/lcov-report/api/controllers/table/utils.js.html +169 -85
  49. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  50. package/coverage/lcov-report/api/controllers/user.js.html +43 -52
  51. package/coverage/lcov-report/api/controllers/view/exporters.js.html +4 -4
  52. package/coverage/lcov-report/api/controllers/view/index.html +16 -16
  53. package/coverage/lcov-report/api/controllers/view/index.js.html +27 -33
  54. package/coverage/lcov-report/api/controllers/view/utils.js.html +35 -20
  55. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +7 -7
  56. package/coverage/lcov-report/api/controllers/webhook.js.html +34 -28
  57. package/coverage/lcov-report/api/index.html +1 -1
  58. package/coverage/lcov-report/api/index.js.html +3 -3
  59. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/index.html +22 -7
  71. package/coverage/lcov-report/api/routes/index.js.html +10 -4
  72. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  75. package/coverage/lcov-report/{migrations/usageQuotas/index.js.html → api/routes/migrations.js.html} +25 -55
  76. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  79. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  80. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  81. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  82. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  83. package/coverage/lcov-report/api/routes/static.js.html +1 -1
  84. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  85. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  86. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  87. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  88. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  89. package/coverage/lcov-report/automations/actions.js.html +24 -24
  90. package/coverage/lcov-report/automations/automationUtils.js.html +7 -10
  91. package/coverage/lcov-report/automations/bullboard.js.html +16 -16
  92. package/coverage/lcov-report/automations/index.html +18 -18
  93. package/coverage/lcov-report/automations/index.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/bash.js.html +6 -6
  95. package/coverage/lcov-report/automations/steps/createRow.js.html +7 -10
  96. package/coverage/lcov-report/automations/steps/delay.js.html +4 -4
  97. package/coverage/lcov-report/automations/steps/deleteRow.js.html +7 -7
  98. package/coverage/lcov-report/automations/steps/discord.js.html +7 -7
  99. package/coverage/lcov-report/automations/steps/executeQuery.js.html +6 -6
  100. package/coverage/lcov-report/automations/steps/executeScript.js.html +6 -6
  101. package/coverage/lcov-report/automations/steps/filter.js.html +7 -7
  102. package/coverage/lcov-report/automations/steps/index.html +1 -1
  103. package/coverage/lcov-report/automations/steps/integromat.js.html +5 -5
  104. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +8 -8
  105. package/coverage/lcov-report/automations/steps/queryRows.js.html +10 -10
  106. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +5 -5
  107. package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -3
  108. package/coverage/lcov-report/automations/steps/slack.js.html +5 -5
  109. package/coverage/lcov-report/automations/steps/updateRow.js.html +7 -7
  110. package/coverage/lcov-report/automations/steps/utils.js.html +3 -3
  111. package/coverage/lcov-report/automations/steps/zapier.js.html +5 -5
  112. package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
  113. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
  114. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  115. package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
  116. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
  117. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
  118. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
  119. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
  120. package/coverage/lcov-report/automations/triggers.js.html +61 -55
  121. package/coverage/lcov-report/automations/utils.js.html +54 -42
  122. package/coverage/lcov-report/constants/index.html +5 -5
  123. package/coverage/lcov-report/constants/index.js.html +42 -27
  124. package/coverage/lcov-report/constants/layouts.js.html +5 -5
  125. package/coverage/lcov-report/constants/screens.js.html +4 -4
  126. package/coverage/lcov-report/db/client.js.html +18 -18
  127. package/coverage/lcov-report/db/inMemoryView.js.html +7 -7
  128. package/coverage/lcov-report/db/index.html +1 -1
  129. package/coverage/lcov-report/db/index.js.html +3 -3
  130. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +15 -27
  131. package/coverage/lcov-report/db/linkedRows/index.html +27 -27
  132. package/coverage/lcov-report/db/linkedRows/index.js.html +40 -85
  133. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +40 -40
  134. package/coverage/lcov-report/db/newid.js.html +4 -4
  135. package/coverage/lcov-report/db/utils.js.html +75 -75
  136. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  137. package/coverage/lcov-report/events/index.html +1 -1
  138. package/coverage/lcov-report/events/index.js.html +5 -5
  139. package/coverage/lcov-report/events/utils.js.html +3 -3
  140. package/coverage/lcov-report/index.html +107 -122
  141. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  142. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  143. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  144. package/coverage/lcov-report/middleware/authorized.js.html +21 -15
  145. package/coverage/lcov-report/middleware/builder.js.html +3 -3
  146. package/coverage/lcov-report/middleware/currentapp.js.html +72 -60
  147. package/coverage/lcov-report/middleware/index.html +28 -28
  148. package/coverage/lcov-report/middleware/joi-validator.js.html +3 -3
  149. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  150. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  151. package/coverage/lcov-report/middleware/usageQuota.js.html +29 -35
  152. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  153. package/coverage/lcov-report/threads/automation.js.html +30 -24
  154. package/coverage/lcov-report/threads/index.html +25 -25
  155. package/coverage/lcov-report/threads/index.js.html +10 -10
  156. package/coverage/lcov-report/threads/query.js.html +26 -47
  157. package/coverage/lcov-report/threads/utils.js.html +14 -14
  158. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  159. package/coverage/lcov-report/utilities/budibaseDir.js.html +7 -7
  160. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  161. package/coverage/lcov-report/utilities/csvParser.js.html +6 -6
  162. package/coverage/lcov-report/utilities/global.js.html +57 -48
  163. package/coverage/lcov-report/utilities/index.html +27 -27
  164. package/coverage/lcov-report/utilities/index.js.html +42 -72
  165. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +8 -8
  166. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  167. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  168. package/coverage/lcov-report/utilities/routing/index.js.html +7 -7
  169. package/coverage/lcov-report/utilities/rowProcessor/index.html +27 -27
  170. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +65 -71
  171. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +75 -27
  172. package/coverage/lcov-report/utilities/scriptRunner.js.html +5 -5
  173. package/coverage/lcov-report/utilities/security.js.html +8 -8
  174. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  175. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  176. package/coverage/lcov-report/utilities/usageQuota/index.js.html +13 -10
  177. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +5 -2
  178. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  179. package/coverage/lcov-report/utilities/users.js.html +9 -9
  180. package/coverage/lcov-report/utilities/workerRequests.js.html +16 -16
  181. package/coverage/lcov.info +4620 -4358
  182. package/dist/api/controllers/application.js +49 -48
  183. package/dist/api/controllers/auth.js +4 -5
  184. package/dist/api/controllers/automation.js +14 -19
  185. package/dist/api/controllers/cloud.js +2 -3
  186. package/dist/api/controllers/component.js +3 -4
  187. package/dist/api/controllers/datasource.js +9 -10
  188. package/dist/api/controllers/deploy/Deployment.js +3 -6
  189. package/dist/api/controllers/deploy/index.js +12 -13
  190. package/dist/api/controllers/dev.js +5 -5
  191. package/dist/api/controllers/layout.js +3 -3
  192. package/dist/api/controllers/metadata.js +4 -4
  193. package/dist/api/controllers/migrations.js +21 -0
  194. package/dist/api/controllers/permission.js +4 -4
  195. package/dist/api/controllers/query/import/index.js +4 -6
  196. package/dist/api/controllers/query/index.js +11 -10
  197. package/dist/api/controllers/role.js +5 -5
  198. package/dist/api/controllers/routing.js +5 -6
  199. package/dist/api/controllers/row/ExternalRequest.js +90 -67
  200. package/dist/api/controllers/row/external.js +14 -22
  201. package/dist/api/controllers/row/internal.js +55 -93
  202. package/dist/api/controllers/row/internalSearch.js +23 -17
  203. package/dist/api/controllers/row/staticFormula.js +147 -0
  204. package/dist/api/controllers/row/utils.js +7 -6
  205. package/dist/api/controllers/screen.js +5 -7
  206. package/dist/api/controllers/static/index.js +4 -4
  207. package/dist/api/controllers/table/bulkFormula.js +159 -0
  208. package/dist/api/controllers/table/external.js +7 -10
  209. package/dist/api/controllers/table/index.js +7 -10
  210. package/dist/api/controllers/table/internal.js +20 -16
  211. package/dist/api/controllers/table/utils.js +54 -34
  212. package/dist/api/controllers/user.js +16 -20
  213. package/dist/api/controllers/view/index.js +8 -10
  214. package/dist/api/controllers/view/utils.js +9 -4
  215. package/dist/api/controllers/webhook.js +10 -8
  216. package/dist/api/routes/index.js +2 -0
  217. package/dist/api/routes/migrations.js +9 -0
  218. package/dist/api/routes/tests/utilities/TestFunctions.js +37 -17
  219. package/dist/app.js +35 -5
  220. package/dist/automations/automationUtils.js +2 -3
  221. package/dist/automations/steps/createRow.js +1 -1
  222. package/dist/automations/steps/updateRow.js +1 -1
  223. package/dist/automations/triggers.js +27 -25
  224. package/dist/automations/utils.js +10 -5
  225. package/dist/constants/index.js +4 -0
  226. package/dist/db/linkedRows/LinkController.js +3 -7
  227. package/dist/db/linkedRows/index.js +16 -27
  228. package/dist/db/linkedRows/linkUtils.js +6 -6
  229. package/dist/db/views/staticViews.js +9 -10
  230. package/dist/environment.js +3 -1
  231. package/dist/integrations/base/sql.js +43 -8
  232. package/dist/integrations/utils.js +3 -0
  233. package/dist/middleware/authorized.js +5 -3
  234. package/dist/middleware/builder.js +2 -2
  235. package/dist/middleware/currentapp.js +41 -37
  236. package/dist/middleware/usageQuota.js +2 -4
  237. package/dist/migrations/functions/appUrls.js +46 -0
  238. package/dist/migrations/functions/quotas1.js +50 -0
  239. package/dist/migrations/{usageQuotas → functions/usageQuotas}/index.js +6 -10
  240. package/dist/migrations/{usageQuotas → functions/usageQuotas}/syncApps.js +12 -9
  241. package/dist/migrations/{usageQuotas → functions/usageQuotas}/syncRows.js +16 -12
  242. package/dist/migrations/functions/userEmailViewCasing.js +24 -0
  243. package/dist/migrations/index.js +62 -0
  244. package/dist/package.json +4 -4
  245. package/dist/tests/utilities/TestConfiguration.js +70 -44
  246. package/dist/threads/automation.js +13 -11
  247. package/dist/threads/query.js +13 -19
  248. package/dist/tsconfig.tsbuildinfo +1 -1
  249. package/dist/utilities/fileSystem/index.js +4 -3
  250. package/dist/utilities/global.js +15 -12
  251. package/dist/utilities/index.js +7 -17
  252. package/dist/utilities/routing/index.js +5 -5
  253. package/dist/utilities/rowProcessor/index.js +23 -17
  254. package/dist/utilities/rowProcessor/utils.js +14 -4
  255. package/dist/utilities/usageQuota/index.js +1 -0
  256. package/dist/utilities/usageQuota/rows.js +1 -0
  257. package/dist/utilities/users.js +3 -3
  258. package/dist/utilities/workerRequests.js +4 -4
  259. package/package.json +5 -5
  260. package/scripts/integrations/postgres/init.sql +11 -6
  261. package/scripts/likeCypress.ts +1 -1
  262. package/src/api/controllers/application.js +38 -31
  263. package/src/api/controllers/auth.js +4 -5
  264. package/src/api/controllers/automation.js +13 -23
  265. package/src/api/controllers/cloud.js +2 -3
  266. package/src/api/controllers/component.js +3 -4
  267. package/src/api/controllers/datasource.js +9 -11
  268. package/src/api/controllers/deploy/Deployment.js +3 -7
  269. package/src/api/controllers/deploy/index.js +20 -13
  270. package/src/api/controllers/dev.js +5 -5
  271. package/src/api/controllers/layout.js +3 -3
  272. package/src/api/controllers/metadata.js +4 -9
  273. package/src/api/controllers/migrations.js +13 -0
  274. package/src/api/controllers/permission.js +4 -4
  275. package/src/api/controllers/query/import/index.ts +4 -6
  276. package/src/api/controllers/query/import/tests/index.spec.js +2 -1
  277. package/src/api/controllers/query/index.js +11 -10
  278. package/src/api/controllers/role.js +5 -5
  279. package/src/api/controllers/routing.js +5 -6
  280. package/src/api/controllers/row/ExternalRequest.ts +67 -43
  281. package/src/api/controllers/row/external.js +27 -58
  282. package/src/api/controllers/row/internal.js +54 -90
  283. package/src/api/controllers/row/internalSearch.js +23 -17
  284. package/src/api/controllers/row/staticFormula.js +156 -0
  285. package/src/api/controllers/row/utils.js +7 -6
  286. package/src/api/controllers/screen.js +5 -7
  287. package/src/api/controllers/static/index.js +4 -4
  288. package/src/api/controllers/table/bulkFormula.js +173 -0
  289. package/src/api/controllers/table/external.js +7 -10
  290. package/src/api/controllers/table/index.js +7 -21
  291. package/src/api/controllers/table/internal.js +22 -19
  292. package/src/api/controllers/table/utils.js +70 -42
  293. package/src/api/controllers/user.js +17 -20
  294. package/src/api/controllers/view/index.js +8 -10
  295. package/src/api/controllers/view/utils.js +9 -4
  296. package/src/api/controllers/webhook.js +10 -8
  297. package/src/api/routes/index.js +2 -0
  298. package/src/api/routes/migrations.js +14 -0
  299. package/src/api/routes/tests/automation.spec.js +1 -0
  300. package/src/api/routes/tests/misc.spec.js +0 -1
  301. package/src/api/routes/tests/routing.spec.js +21 -12
  302. package/src/api/routes/tests/row.spec.js +7 -4
  303. package/src/api/routes/tests/utilities/TestFunctions.js +39 -17
  304. package/src/app.ts +18 -5
  305. package/src/automations/automationUtils.js +2 -3
  306. package/src/automations/steps/createRow.js +0 -1
  307. package/src/automations/steps/updateRow.js +1 -1
  308. package/src/automations/triggers.js +33 -31
  309. package/src/automations/utils.js +9 -5
  310. package/src/constants/index.js +5 -0
  311. package/src/db/linkedRows/LinkController.js +3 -7
  312. package/src/db/linkedRows/index.js +16 -31
  313. package/src/db/linkedRows/linkUtils.js +6 -6
  314. package/src/db/tests/linkController.spec.js +0 -1
  315. package/src/db/tests/linkTests.spec.js +5 -6
  316. package/src/db/views/staticViews.js +8 -10
  317. package/src/definitions/common.ts +3 -0
  318. package/src/environment.js +3 -1
  319. package/src/integrations/base/sql.ts +55 -14
  320. package/src/integrations/utils.ts +4 -1
  321. package/src/middleware/authorized.js +5 -3
  322. package/src/middleware/builder.js +2 -2
  323. package/src/middleware/currentapp.js +50 -46
  324. package/src/middleware/tests/authorized.spec.js +7 -2
  325. package/src/middleware/tests/currentapp.spec.js +6 -0
  326. package/src/middleware/usageQuota.js +2 -4
  327. package/src/migrations/functions/appUrls.ts +34 -0
  328. package/src/migrations/functions/quotas1.ts +20 -0
  329. package/src/migrations/functions/tests/appUrls.spec.js +29 -0
  330. package/src/migrations/{tests/usageQuotas/index.spec.js → functions/tests/quotas1.spec.js} +5 -5
  331. package/src/migrations/functions/tests/userEmailViewCasing.spec.js +25 -0
  332. package/src/migrations/functions/usageQuotas/index.ts +8 -0
  333. package/src/migrations/{usageQuotas/syncApps.js → functions/usageQuotas/syncApps.ts} +6 -6
  334. package/src/migrations/functions/usageQuotas/syncRows.ts +22 -0
  335. package/src/migrations/{tests/usageQuotas → functions/usageQuotas/tests}/syncApps.spec.js +4 -4
  336. package/src/migrations/{tests/usageQuotas → functions/usageQuotas/tests}/syncRows.spec.js +4 -4
  337. package/src/migrations/functions/userEmailViewCasing.ts +13 -0
  338. package/src/migrations/index.ts +56 -0
  339. package/src/module.d.ts +3 -0
  340. package/src/tests/utilities/TestConfiguration.js +73 -50
  341. package/src/threads/automation.js +17 -15
  342. package/src/threads/query.js +14 -21
  343. package/src/utilities/fileSystem/index.js +4 -3
  344. package/src/utilities/global.js +15 -12
  345. package/src/utilities/index.js +7 -17
  346. package/src/utilities/routing/index.js +5 -5
  347. package/src/utilities/rowProcessor/index.js +25 -27
  348. package/src/utilities/rowProcessor/utils.js +23 -7
  349. package/src/utilities/usageQuota/index.js +1 -0
  350. package/src/utilities/usageQuota/rows.js +1 -0
  351. package/src/utilities/users.js +3 -3
  352. package/src/utilities/workerRequests.js +4 -4
  353. package/tsconfig.json +2 -1
  354. package/coverage/lcov-report/migrations/usageQuotas/index.html +0 -141
  355. package/coverage/lcov-report/migrations/usageQuotas/syncRows.js.html +0 -143
  356. package/src/migrations/usageQuotas/index.js +0 -24
  357. package/src/migrations/usageQuotas/syncRows.js +0 -21
@@ -23,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">96.07% </span>
26
+ <span class="strong">96.9% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>98/102</span>
28
+ <span class='fraction'>94/97</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">80.95% </span>
33
+ <span class="strong">82.5% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>34/42</span>
35
+ <span class='fraction'>33/40</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.83% </span>
47
+ <span class="strong">96.7% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>92/96</span>
49
+ <span class='fraction'>88/91</span>
50
50
  </div>
51
51
 
52
52
 
@@ -268,22 +268,7 @@
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>
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">37x</span>
271
+ <a name='L212'></a><a href='#L212'>212</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">39x</span>
287
272
  <span class="cline-any cline-neutral">&nbsp;</span>
288
273
  <span class="cline-any cline-neutral">&nbsp;</span>
289
274
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -292,21 +277,21 @@
292
277
  <span class="cline-any cline-neutral">&nbsp;</span>
293
278
  <span class="cline-any cline-neutral">&nbsp;</span>
294
279
  <span class="cline-any cline-neutral">&nbsp;</span>
295
- <span class="cline-any cline-yes">37x</span>
296
- <span class="cline-any cline-yes">37x</span>
297
- <span class="cline-any cline-yes">37x</span>
298
- <span class="cline-any cline-yes">37x</span>
299
- <span class="cline-any cline-yes">37x</span>
300
- <span class="cline-any cline-yes">37x</span>
301
- <span class="cline-any cline-yes">37x</span>
302
- <span class="cline-any cline-yes">37x</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>
303
288
  <span class="cline-any cline-neutral">&nbsp;</span>
304
289
  <span class="cline-any cline-neutral">&nbsp;</span>
305
290
  <span class="cline-any cline-neutral">&nbsp;</span>
306
291
  <span class="cline-any cline-neutral">&nbsp;</span>
307
292
  <span class="cline-any cline-neutral">&nbsp;</span>
308
293
  <span class="cline-any cline-neutral">&nbsp;</span>
309
- <span class="cline-any cline-yes">37x</span>
294
+ <span class="cline-any cline-yes">39x</span>
310
295
  <span class="cline-any cline-neutral">&nbsp;</span>
311
296
  <span class="cline-any cline-neutral">&nbsp;</span>
312
297
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -315,11 +300,11 @@
315
300
  <span class="cline-any cline-neutral">&nbsp;</span>
316
301
  <span class="cline-any cline-neutral">&nbsp;</span>
317
302
  <span class="cline-any cline-neutral">&nbsp;</span>
318
- <span class="cline-any cline-yes">37x</span>
303
+ <span class="cline-any cline-yes">39x</span>
319
304
  <span class="cline-any cline-neutral">&nbsp;</span>
320
- <span class="cline-any cline-yes">37x</span>
321
- <span class="cline-any cline-yes">37x</span>
322
- <span class="cline-any cline-yes">37x</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>
323
308
  <span class="cline-any cline-neutral">&nbsp;</span>
324
309
  <span class="cline-any cline-neutral">&nbsp;</span>
325
310
  <span class="cline-any cline-yes">30x</span>
@@ -348,7 +333,6 @@
348
333
  <span class="cline-any cline-neutral">&nbsp;</span>
349
334
  <span class="cline-any cline-neutral">&nbsp;</span>
350
335
  <span class="cline-any cline-neutral">&nbsp;</span>
351
- <span class="cline-any cline-neutral">&nbsp;</span>
352
336
  <span class="cline-any cline-yes">30x</span>
353
337
  <span class="cline-any cline-neutral">&nbsp;</span>
354
338
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -388,13 +372,9 @@
388
372
  <span class="cline-any cline-neutral">&nbsp;</span>
389
373
  <span class="cline-any cline-neutral">&nbsp;</span>
390
374
  <span class="cline-any cline-neutral">&nbsp;</span>
391
- <span class="cline-any cline-neutral">&nbsp;</span>
392
- <span class="cline-any cline-yes">37x</span>
393
- <span class="cline-any cline-yes">182x</span>
375
+ <span class="cline-any cline-yes">39x</span>
394
376
  <span class="cline-any cline-yes">182x</span>
395
377
  <span class="cline-any cline-yes">182x</span>
396
- <span class="cline-any cline-no">&nbsp;</span>
397
- <span class="cline-any cline-neutral">&nbsp;</span>
398
378
  <span class="cline-any cline-neutral">&nbsp;</span>
399
379
  <span class="cline-any cline-yes">182x</span>
400
380
  <span class="cline-any cline-yes">103x</span>
@@ -435,17 +415,13 @@
435
415
  <span class="cline-any cline-neutral">&nbsp;</span>
436
416
  <span class="cline-any cline-neutral">&nbsp;</span>
437
417
  <span class="cline-any cline-neutral">&nbsp;</span>
438
- <span class="cline-any cline-neutral">&nbsp;</span>
439
- <span class="cline-any cline-yes">37x</span>
440
- <span class="cline-any cline-yes">103x</span>
418
+ <span class="cline-any cline-yes">39x</span>
441
419
  <span class="cline-any cline-yes">103x</span>
442
420
  <span class="cline-any cline-yes">103x</span>
443
421
  <span class="cline-any cline-yes">73x</span>
444
422
  <span class="cline-any cline-neutral">&nbsp;</span>
445
423
  <span class="cline-any cline-neutral">&nbsp;</span>
446
424
  <span class="cline-any cline-yes">30x</span>
447
- <span class="cline-any cline-neutral">&nbsp;</span>
448
- <span class="cline-any cline-yes">30x</span>
449
425
  <span class="cline-any cline-yes">25x</span>
450
426
  <span class="cline-any cline-neutral">&nbsp;</span>
451
427
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -463,10 +439,6 @@
463
439
  <span class="cline-any cline-neutral">&nbsp;</span>
464
440
  <span class="cline-any cline-yes">18x</span>
465
441
  <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>
470
442
  <span class="cline-any cline-yes">18x</span>
471
443
  <span class="cline-any cline-yes">18x</span>
472
444
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -482,9 +454,7 @@
482
454
  <span class="cline-any cline-neutral">&nbsp;</span>
483
455
  <span class="cline-any cline-neutral">&nbsp;</span>
484
456
  <span class="cline-any cline-neutral">&nbsp;</span>
485
- <span class="cline-any cline-neutral">&nbsp;</span>
486
- <span class="cline-any cline-yes">37x</span>
487
- <span class="cline-any cline-yes">26x</span>
457
+ <span class="cline-any cline-yes">39x</span>
488
458
  <span class="cline-any cline-neutral">&nbsp;</span>
489
459
  <span class="cline-any cline-yes">26x</span>
490
460
  <span class="cline-any cline-yes">26x</span>
@@ -520,12 +490,12 @@ const {
520
490
  getLinkedTable,
521
491
  } = require("./linkUtils")
522
492
  const { flatten } = require("lodash")
523
- const CouchDB = require("../../db")
524
493
  const { FieldTypes } = require("../../constants")
525
494
  const { getMultiIDParams, USER_METDATA_PREFIX } = require("../../db/utils")
526
495
  const { partition } = require("lodash")
527
496
  const { getGlobalUsersFromMetadata } = require("../../utilities/global")
528
497
  const { processFormulas } = require("../../utilities/rowProcessor/utils")
498
+ const { getAppDB } = require("@budibase/backend-core/context")
529
499
  &nbsp;
530
500
  /**
531
501
  * This functionality makes sure that when rows with links are created, updated or deleted they are processed
@@ -559,14 +529,13 @@ function clearRelationshipFields(table, rows) {
559
529
  return rows
560
530
  }
561
531
  &nbsp;
562
- async function getLinksForRows(appId, rows) {
532
+ async function getLinksForRows(rows) {
563
533
  const tableIds = [...new Set(rows.map(el =&gt; el.tableId))]
564
534
  // start by getting all the link values for performance reasons
565
535
  const responses = flatten(
566
536
  await Promise.all(
567
537
  tableIds.map(tableId =&gt;
568
538
  getLinkDocuments({
569
- appId,
570
539
  tableId: tableId,
571
540
  includeDocs: IncludeDocs.EXCLUDE,
572
541
  })
@@ -583,9 +552,9 @@ async function getLinksForRows(appId, rows) {
583
552
  )
584
553
  }
585
554
  &nbsp;
586
- async function getFullLinkedDocs(ctx, appId, links) {
555
+ async function getFullLinkedDocs(links) {
587
556
  // create DBs
588
- const db = new CouchDB(appId)
557
+ const db = getAppDB()
589
558
  const linkedRowIds = links.map(link =&gt; link.id)
590
559
  const uniqueRowIds = [...new Set(linkedRowIds)]
591
560
  let dbRows = (await db.allDocs(getMultiIDParams(uniqueRowIds))).rows.map(
@@ -599,7 +568,7 @@ async function getFullLinkedDocs(ctx, appId, links) {
599
568
  let [users, other] = partition(linked, linkRow =&gt;
600
569
  linkRow._id.startsWith(USER_METDATA_PREFIX)
601
570
  )
602
- users = await getGlobalUsersFromMetadata(appId, users)
571
+ users = await getGlobalUsersFromMetadata(users)
603
572
  return [...other, ...users]
604
573
  }
605
574
  &nbsp;
@@ -607,20 +576,16 @@ async function getFullLinkedDocs(ctx, appId, links) {
607
576
  * Update link documents for a row or table - this is to be called by the API controller when a change is occurring.
608
577
  * @param {string} args.eventType states what type of change which is occurring, means this can be expanded upon in the
609
578
  * 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.
611
579
  * @param {string} args.tableId The ID of the of the table which is being changed.
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.
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.
615
583
  * @returns {Promise&lt;object&gt;} When the update is complete this will respond successfully. Returns the row for
616
584
  * row operations and the table for table operations.
617
585
  */
618
586
  exports.updateLinks = async function (args) {
619
- const { eventType, appId, row, tableId, table, oldTable } = args
587
+ const { eventType, row, tableId, table, oldTable } = args
620
588
  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
- }
624
589
  // make sure table ID is set
625
590
  if (tableId == null &amp;&amp; table != null) {
626
591
  args.tableId = table._id
@@ -657,27 +622,23 @@ exports.updateLinks = async function (args) {
657
622
  /**
658
623
  * Given a table and a list of rows this will retrieve all of the attached docs and enrich them into the row.
659
624
  * 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.
661
625
  * @param {object} table The table from which the rows originated.
662
626
  * @param {array&lt;object&gt;} rows The rows which are to be enriched.
663
627
  * @return {Promise&lt;*&gt;} returns the rows with all of the enriched relationships on it.
664
628
  */
665
- exports.attachFullLinkedDocs = async (ctx, table, rows) =&gt; {
666
- const appId = ctx.appId
629
+ exports.attachFullLinkedDocs = async (table, rows) =&gt; {
667
630
  const linkedTableIds = getLinkedTableIDs(table)
668
631
  if (linkedTableIds.length === 0) {
669
632
  return rows
670
633
  }
671
- // create DBs
672
- const db = new CouchDB(appId)
673
634
  // get all the links
674
- const links = (await getLinksForRows(appId, rows)).filter(link =&gt;
635
+ const links = (await getLinksForRows(rows)).filter(link =&gt;
675
636
  rows.some(row =&gt; row._id === link.thisId)
676
637
  )
677
638
  // clear any existing links that could be dupe'd
678
639
  rows = clearRelationshipFields(table, rows)
679
640
  // now get the docs and combine into the rows
680
- let linked = await getFullLinkedDocs(ctx, appId, links)
641
+ let linked = await getFullLinkedDocs(links)
681
642
  const linkedTables = []
682
643
  for (let row of rows) {
683
644
  for (let link of links.filter(link =&gt; link.thisId === row._id)) {
@@ -688,11 +649,7 @@ exports.attachFullLinkedDocs = async (ctx, table, rows) =&gt; {
688
649
  if (linkedRow) {
689
650
  const linkedTableId =
690
651
  linkedRow.tableId || <span class="branch-1 cbranch-no" title="branch not covered" >getRelatedTableForField(table, link.fieldName)</span>
691
- const linkedTable = await getLinkedTable(
692
- db,
693
- linkedTableId,
694
- linkedTables
695
- )
652
+ const linkedTable = await getLinkedTable(linkedTableId, linkedTables)
696
653
  if (linkedTable) {
697
654
  row[link.fieldName].push(processFormulas(linkedTable, linkedRow))
698
655
  }
@@ -704,18 +661,16 @@ exports.attachFullLinkedDocs = async (ctx, table, rows) =&gt; {
704
661
  &nbsp;
705
662
  /**
706
663
  * 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.
708
664
  * @param {object} table The table from which the rows originated.
709
665
  * @param {array&lt;object&gt;} enriched The pre-enriched rows (full docs) which are to be squashed.
710
666
  * @returns {Promise&lt;Array&gt;} The rows after having their links squashed to only contain the ID and primary display.
711
667
  */
712
- exports.squashLinksToPrimaryDisplay = async (appId, table, enriched) =&gt; {
713
- const db = new CouchDB(appId)
668
+ exports.squashLinksToPrimaryDisplay = async (table, enriched) =&gt; {
714
669
  // will populate this as we find them
715
670
  const linkedTables = [table]
716
671
  for (let row of enriched) {
717
672
  // this only fetches the table if its not already in array
718
- const rowTable = await getLinkedTable(db, row.tableId, linkedTables)
673
+ const rowTable = await getLinkedTable(row.tableId, linkedTables)
719
674
  for (let [column, schema] of Object.entries(rowTable.schema)) {
720
675
  if (schema.type !== FieldTypes.LINK || !Array.isArray(row[column])) {
721
676
  continue
@@ -723,7 +678,7 @@ exports.squashLinksToPrimaryDisplay = async (appId, table, enriched) =&gt; {
723
678
  const newLinks = []
724
679
  for (let link of row[column]) {
725
680
  const linkTblId = link.tableId || <span class="branch-1 cbranch-no" title="branch not covered" >getRelatedTableForField(table, column)</span>
726
- const linkedTable = await getLinkedTable(db, linkTblId, linkedTables)
681
+ const linkedTable = await getLinkedTable(linkTblId, linkedTables)
727
682
  const obj = { _id: link._id }
728
683
  if (link[linkedTable.primaryDisplay]) {
729
684
  obj.primaryDisplay = link[linkedTable.primaryDisplay]
@@ -742,7 +697,7 @@ exports.squashLinksToPrimaryDisplay = async (appId, table, enriched) =&gt; {
742
697
  <div class='footer quiet pad2 space-top1 center small'>
743
698
  Code coverage generated by
744
699
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
745
- at Mon Jan 31 2022 14:38:52 GMT+0000 (Coordinated Universal Time)
700
+ at Fri Feb 04 2022 13:16:14 GMT+0000 (Coordinated Universal Time)
746
701
  </div>
747
702
  </div>
748
703
  <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">98.24% </span>
26
+ <span class="strong">93.1% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>56/57</span>
28
+ <span class='fraction'>54/58</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">88.46% </span>
33
+ <span class="strong">76.92% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>23/26</span>
35
+ <span class='fraction'>20/26</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">98.11% </span>
47
+ <span class="strong">92.59% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>52/53</span>
49
+ <span class='fraction'>50/54</span>
50
50
  </div>
51
51
 
52
52
 
@@ -173,23 +173,22 @@
173
173
  <a name='L114'></a><a href='#L114'>114</a>
174
174
  <a name='L115'></a><a href='#L115'>115</a>
175
175
  <a name='L116'></a><a href='#L116'>116</a>
176
- <a name='L117'></a><a href='#L117'>117</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">37x</span>
177
- <span class="cline-any cline-yes">37x</span>
178
- <span class="cline-any cline-yes">37x</span>
179
- <span class="cline-any cline-yes">37x</span>
180
- <span class="cline-any cline-yes">37x</span>
181
- <span class="cline-any cline-neutral">&nbsp;</span>
176
+ <a name='L117'></a><a href='#L117'>117</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">39x</span>
177
+ <span class="cline-any cline-yes">39x</span>
178
+ <span class="cline-any cline-yes">39x</span>
179
+ <span class="cline-any cline-yes">39x</span>
180
+ <span class="cline-any cline-yes">39x</span>
182
181
  <span class="cline-any cline-neutral">&nbsp;</span>
183
182
  <span class="cline-any cline-neutral">&nbsp;</span>
184
183
  <span class="cline-any cline-neutral">&nbsp;</span>
185
184
  <span class="cline-any cline-neutral">&nbsp;</span>
186
- <span class="cline-any cline-yes">37x</span>
187
185
  <span class="cline-any cline-neutral">&nbsp;</span>
186
+ <span class="cline-any cline-yes">39x</span>
188
187
  <span class="cline-any cline-neutral">&nbsp;</span>
189
188
  <span class="cline-any cline-neutral">&nbsp;</span>
190
189
  <span class="cline-any cline-neutral">&nbsp;</span>
191
- <span class="cline-any cline-yes">37x</span>
192
190
  <span class="cline-any cline-neutral">&nbsp;</span>
191
+ <span class="cline-any cline-yes">39x</span>
193
192
  <span class="cline-any cline-neutral">&nbsp;</span>
194
193
  <span class="cline-any cline-neutral">&nbsp;</span>
195
194
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -204,20 +203,20 @@
204
203
  <span class="cline-any cline-neutral">&nbsp;</span>
205
204
  <span class="cline-any cline-neutral">&nbsp;</span>
206
205
  <span class="cline-any cline-neutral">&nbsp;</span>
207
- <span class="cline-any cline-yes">37x</span>
208
- <span class="cline-any cline-yes">71x</span>
209
- <span class="cline-any cline-yes">71x</span>
206
+ <span class="cline-any cline-yes">39x</span>
207
+ <span class="cline-any cline-yes">70x</span>
208
+ <span class="cline-any cline-yes">70x</span>
210
209
  <span class="cline-any cline-neutral">&nbsp;</span>
211
- <span class="cline-any cline-yes">71x</span>
212
- <span class="cline-any cline-yes">32x</span>
210
+ <span class="cline-any cline-yes">70x</span>
211
+ <span class="cline-any cline-yes">31x</span>
213
212
  <span class="cline-any cline-neutral">&nbsp;</span>
214
213
  <span class="cline-any cline-neutral">&nbsp;</span>
215
214
  <span class="cline-any cline-neutral">&nbsp;</span>
216
215
  <span class="cline-any cline-yes">39x</span>
217
216
  <span class="cline-any cline-neutral">&nbsp;</span>
218
- <span class="cline-any cline-yes">71x</span>
219
- <span class="cline-any cline-yes">71x</span>
220
- <span class="cline-any cline-yes">71x</span>
217
+ <span class="cline-any cline-yes">70x</span>
218
+ <span class="cline-any cline-yes">70x</span>
219
+ <span class="cline-any cline-yes">70x</span>
221
220
  <span class="cline-any cline-neutral">&nbsp;</span>
222
221
  <span class="cline-any cline-yes">70x</span>
223
222
  <span class="cline-any cline-yes">70x</span>
@@ -242,9 +241,9 @@
242
241
  <span class="cline-any cline-neutral">&nbsp;</span>
243
242
  <span class="cline-any cline-neutral">&nbsp;</span>
244
243
  <span class="cline-any cline-neutral">&nbsp;</span>
245
- <span class="cline-any cline-yes">1x</span>
246
- <span class="cline-any cline-yes">1x</span>
247
- <span class="cline-any cline-yes">1x</span>
244
+ <span class="cline-any cline-no">&nbsp;</span>
245
+ <span class="cline-any cline-no">&nbsp;</span>
246
+ <span class="cline-any cline-no">&nbsp;</span>
248
247
  <span class="cline-any cline-neutral">&nbsp;</span>
249
248
  <span class="cline-any cline-neutral">&nbsp;</span>
250
249
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -252,19 +251,20 @@
252
251
  <span class="cline-any cline-neutral">&nbsp;</span>
253
252
  <span class="cline-any cline-neutral">&nbsp;</span>
254
253
  <span class="cline-any cline-neutral">&nbsp;</span>
255
- <span class="cline-any cline-yes">37x</span>
254
+ <span class="cline-any cline-yes">39x</span>
256
255
  <span class="cline-any cline-yes">30x</span>
257
256
  <span class="cline-any cline-yes">33x</span>
258
257
  <span class="cline-any cline-neutral">&nbsp;</span>
259
258
  <span class="cline-any cline-neutral">&nbsp;</span>
260
259
  <span class="cline-any cline-neutral">&nbsp;</span>
261
- <span class="cline-any cline-yes">37x</span>
260
+ <span class="cline-any cline-yes">39x</span>
262
261
  <span class="cline-any cline-yes">103x</span>
263
262
  <span class="cline-any cline-yes">302x</span>
264
263
  <span class="cline-any cline-yes">53x</span>
265
264
  <span class="cline-any cline-neutral">&nbsp;</span>
266
265
  <span class="cline-any cline-neutral">&nbsp;</span>
267
- <span class="cline-any cline-yes">37x</span>
266
+ <span class="cline-any cline-yes">39x</span>
267
+ <span class="cline-any cline-yes">61x</span>
268
268
  <span class="cline-any cline-yes">61x</span>
269
269
  <span class="cline-any cline-yes">61x</span>
270
270
  <span class="cline-any cline-yes">34x</span>
@@ -276,7 +276,7 @@
276
276
  <span class="cline-any cline-yes">27x</span>
277
277
  <span class="cline-any cline-neutral">&nbsp;</span>
278
278
  <span class="cline-any cline-neutral">&nbsp;</span>
279
- <span class="cline-any cline-yes">37x</span>
279
+ <span class="cline-any cline-yes">39x</span>
280
280
  <span class="cline-any cline-neutral">&nbsp;</span>
281
281
  <span class="cline-any cline-yes">2x</span>
282
282
  <span class="cline-any cline-yes">2x</span>
@@ -289,11 +289,11 @@
289
289
  <span class="cline-any cline-neutral">&nbsp;</span>
290
290
  <span class="cline-any cline-no">&nbsp;</span>
291
291
  <span class="cline-any cline-neutral">&nbsp;</span>
292
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const CouchDB = require("../index")
293
- const Sentry = require("@sentry/node")
292
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const Sentry = require("@sentry/node")
294
293
  const { ViewNames, getQueryIndex } = require("../utils")
295
294
  const { FieldTypes } = require("../../constants")
296
295
  const { createLinkView } = require("../views/staticViews")
296
+ const { getAppDB } = require("@budibase/backend-core/context")
297
297
  &nbsp;
298
298
  /**
299
299
  * Only needed so that boolean parameters are being used for includeDocs
@@ -308,7 +308,6 @@ exports.createLinkView = createLinkView
308
308
  &nbsp;
309
309
  /**
310
310
  * Gets the linking documents, not the linked documents themselves.
311
- * @param {string} args.appId The instance in which we are searching for linked rows.
312
311
  * @param {string} args.tableId The table which we are searching for linked rows against.
313
312
  * @param {string|null} args.fieldName The name of column/field which is being altered, only looking for
314
313
  * linking documents that are related to it. If this is not specified then the table level will be assumed.
@@ -321,8 +320,8 @@ exports.createLinkView = createLinkView
321
320
  * (if any).
322
321
  */
323
322
  exports.getLinkDocuments = async function (args) {
324
- const { appId, tableId, rowId, includeDocs } = args
325
- const db = new CouchDB(appId)
323
+ const { tableId, rowId, includeDocs } = args
324
+ const db = getAppDB()
326
325
  let params
327
326
  if (rowId != null) {
328
327
  params = { key: [tableId, rowId] }
@@ -358,10 +357,10 @@ exports.getLinkDocuments = async function (args) {
358
357
  }
359
358
  } catch (err) {
360
359
  // check if the view doesn't exist, it should for all new instances
361
- if (err != null &amp;&amp; err.name === "not_found") {
362
- await exports.createLinkView(appId)
363
- return exports.getLinkDocuments(arguments[0])
364
- } else <span class="missing-if-branch" title="else path not taken" >E</span>{
360
+ <span class="cstat-no" title="statement not covered" > if (err != null &amp;&amp; err.name === "not_found") {</span>
361
+ <span class="cstat-no" title="statement not covered" > await exports.createLinkView()</span>
362
+ <span class="cstat-no" title="statement not covered" > return exports.getLinkDocuments(arguments[0])</span>
363
+ } else {
365
364
  /* istanbul ignore next */
366
365
  Sentry.captureException(err)
367
366
  }
@@ -380,7 +379,8 @@ exports.getLinkedTableIDs = table =&gt; {
380
379
  .map(column =&gt; column.tableId)
381
380
  }
382
381
  &nbsp;
383
- exports.getLinkedTable = async (db, id, tables) =&gt; {
382
+ exports.getLinkedTable = async (id, tables) =&gt; {
383
+ const db = getAppDB()
384
384
  let linkedTable = tables.find(table =&gt; table._id === id)
385
385
  if (linkedTable) {
386
386
  return linkedTable
@@ -412,7 +412,7 @@ exports.getRelatedTableForField = (table, fieldName) =&gt; {
412
412
  <div class='footer quiet pad2 space-top1 center small'>
413
413
  Code coverage generated by
414
414
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
415
- at Mon Jan 31 2022 14:38:52 GMT+0000 (Coordinated Universal Time)
415
+ at Fri Feb 04 2022 13:16:14 GMT+0000 (Coordinated Universal Time)
416
416
  </div>
417
417
  </div>
418
418
  <script src="../../prettify.js"></script>
@@ -62,10 +62,10 @@
62
62
  <a name='L3'></a><a href='#L3'>3</a>
63
63
  <a name='L4'></a><a href='#L4'>4</a>
64
64
  <a name='L5'></a><a href='#L5'>5</a>
65
- <a name='L6'></a><a href='#L6'>6</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">52x</span>
65
+ <a name='L6'></a><a href='#L6'>6</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">54x</span>
66
66
  <span class="cline-any cline-neutral">&nbsp;</span>
67
- <span class="cline-any cline-yes">52x</span>
68
- <span class="cline-any cline-yes">924x</span>
67
+ <span class="cline-any cline-yes">54x</span>
68
+ <span class="cline-any cline-yes">932x</span>
69
69
  <span class="cline-any cline-neutral">&nbsp;</span>
70
70
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const { v4 } = require("uuid")
71
71
  &nbsp;
@@ -79,7 +79,7 @@ module.exports = function () {
79
79
  <div class='footer quiet pad2 space-top1 center small'>
80
80
  Code coverage generated by
81
81
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
82
- at Mon Jan 31 2022 14:38:52 GMT+0000 (Coordinated Universal Time)
82
+ at Fri Feb 04 2022 13:16:14 GMT+0000 (Coordinated Universal Time)
83
83
  </div>
84
84
  </div>
85
85
  <script src="../prettify.js"></script>