@budibase/server 1.0.49-alpha.1 → 1.0.49-alpha.13

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 (353) 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.ba78c49d.css → index.83c0944f.css} +1 -1
  8. package/builder/assets/{index.ed1cf508.js → index.f686d3cd.js} +184 -184
  9. package/builder/index.html +2 -2
  10. package/coverage/clover.xml +2656 -2712
  11. package/coverage/coverage-final.json +104 -105
  12. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/application.js.html +157 -136
  15. package/coverage/lcov-report/api/controllers/auth.js.html +11 -14
  16. package/coverage/lcov-report/api/controllers/automation.js.html +39 -69
  17. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/cloud.js.html +8 -11
  19. package/coverage/lcov-report/api/controllers/component.js.html +10 -13
  20. package/coverage/lcov-report/api/controllers/datasource.js.html +31 -37
  21. package/coverage/lcov-report/api/controllers/dev.js.html +6 -6
  22. package/coverage/lcov-report/api/controllers/index.html +69 -54
  23. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/layout.js.html +9 -9
  25. package/coverage/lcov-report/api/controllers/metadata.js.html +6 -21
  26. package/coverage/lcov-report/{migrations/usageQuotas/syncApps.js.html → api/controllers/migrations.js.html} +30 -45
  27. package/coverage/lcov-report/api/controllers/permission.js.html +19 -19
  28. package/coverage/lcov-report/api/controllers/query/index.html +10 -10
  29. package/coverage/lcov-report/api/controllers/query/index.js.html +38 -35
  30. package/coverage/lcov-report/api/controllers/query/validation.js.html +6 -6
  31. package/coverage/lcov-report/api/controllers/role.js.html +16 -16
  32. package/coverage/lcov-report/api/controllers/routing.js.html +7 -10
  33. package/coverage/lcov-report/api/controllers/row/external.js.html +48 -141
  34. package/coverage/lcov-report/api/controllers/row/index.html +28 -28
  35. package/coverage/lcov-report/api/controllers/row/index.js.html +13 -13
  36. package/coverage/lcov-report/api/controllers/row/internal.js.html +60 -105
  37. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +25 -31
  38. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +21 -24
  39. package/coverage/lcov-report/api/controllers/row/utils.js.html +27 -24
  40. package/coverage/lcov-report/api/controllers/screen.js.html +15 -21
  41. package/coverage/lcov-report/api/controllers/script.js.html +4 -4
  42. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +27 -57
  43. package/coverage/lcov-report/api/controllers/table/external.js.html +25 -34
  44. package/coverage/lcov-report/api/controllers/table/index.html +37 -37
  45. package/coverage/lcov-report/api/controllers/table/index.js.html +20 -20
  46. package/coverage/lcov-report/api/controllers/table/internal.js.html +45 -54
  47. package/coverage/lcov-report/api/controllers/table/utils.js.html +67 -103
  48. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  49. package/coverage/lcov-report/api/controllers/user.js.html +43 -52
  50. package/coverage/lcov-report/api/controllers/view/exporters.js.html +4 -4
  51. package/coverage/lcov-report/api/controllers/view/index.html +16 -16
  52. package/coverage/lcov-report/api/controllers/view/index.js.html +27 -33
  53. package/coverage/lcov-report/api/controllers/view/utils.js.html +35 -20
  54. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +7 -7
  55. package/coverage/lcov-report/api/controllers/webhook.js.html +34 -28
  56. package/coverage/lcov-report/api/index.html +1 -1
  57. package/coverage/lcov-report/api/index.js.html +3 -3
  58. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/index.html +22 -7
  70. package/coverage/lcov-report/api/routes/index.js.html +10 -4
  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/{migrations/usageQuotas/index.js.html → api/routes/migrations.js.html} +25 -55
  75. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  79. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  80. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  81. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  82. package/coverage/lcov-report/api/routes/static.js.html +1 -1
  83. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  84. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  85. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  86. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  87. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  88. package/coverage/lcov-report/automations/actions.js.html +24 -24
  89. package/coverage/lcov-report/automations/automationUtils.js.html +7 -10
  90. package/coverage/lcov-report/automations/bullboard.js.html +16 -16
  91. package/coverage/lcov-report/automations/index.html +18 -18
  92. package/coverage/lcov-report/automations/index.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/bash.js.html +6 -6
  94. package/coverage/lcov-report/automations/steps/createRow.js.html +7 -10
  95. package/coverage/lcov-report/automations/steps/delay.js.html +4 -4
  96. package/coverage/lcov-report/automations/steps/deleteRow.js.html +7 -7
  97. package/coverage/lcov-report/automations/steps/discord.js.html +7 -7
  98. package/coverage/lcov-report/automations/steps/executeQuery.js.html +6 -6
  99. package/coverage/lcov-report/automations/steps/executeScript.js.html +6 -6
  100. package/coverage/lcov-report/automations/steps/filter.js.html +7 -7
  101. package/coverage/lcov-report/automations/steps/index.html +1 -1
  102. package/coverage/lcov-report/automations/steps/integromat.js.html +5 -5
  103. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +8 -8
  104. package/coverage/lcov-report/automations/steps/queryRows.js.html +10 -10
  105. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +5 -5
  106. package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -3
  107. package/coverage/lcov-report/automations/steps/slack.js.html +5 -5
  108. package/coverage/lcov-report/automations/steps/updateRow.js.html +7 -7
  109. package/coverage/lcov-report/automations/steps/utils.js.html +3 -3
  110. package/coverage/lcov-report/automations/steps/zapier.js.html +5 -5
  111. package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
  112. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
  113. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  114. package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
  115. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
  116. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
  117. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
  118. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
  119. package/coverage/lcov-report/automations/triggers.js.html +61 -55
  120. package/coverage/lcov-report/automations/utils.js.html +54 -42
  121. package/coverage/lcov-report/constants/index.html +1 -1
  122. package/coverage/lcov-report/constants/index.js.html +26 -26
  123. package/coverage/lcov-report/constants/layouts.js.html +5 -5
  124. package/coverage/lcov-report/constants/screens.js.html +4 -4
  125. package/coverage/lcov-report/db/client.js.html +18 -18
  126. package/coverage/lcov-report/db/inMemoryView.js.html +7 -7
  127. package/coverage/lcov-report/db/index.html +1 -1
  128. package/coverage/lcov-report/db/index.js.html +3 -3
  129. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +15 -27
  130. package/coverage/lcov-report/db/linkedRows/index.html +27 -27
  131. package/coverage/lcov-report/db/linkedRows/index.js.html +40 -82
  132. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +40 -40
  133. package/coverage/lcov-report/db/newid.js.html +4 -4
  134. package/coverage/lcov-report/db/utils.js.html +74 -74
  135. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  136. package/coverage/lcov-report/events/index.html +1 -1
  137. package/coverage/lcov-report/events/index.js.html +5 -5
  138. package/coverage/lcov-report/events/utils.js.html +3 -3
  139. package/coverage/lcov-report/index.html +97 -112
  140. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  141. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  142. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  143. package/coverage/lcov-report/middleware/authorized.js.html +21 -15
  144. package/coverage/lcov-report/middleware/builder.js.html +3 -3
  145. package/coverage/lcov-report/middleware/currentapp.js.html +72 -60
  146. package/coverage/lcov-report/middleware/index.html +28 -28
  147. package/coverage/lcov-report/middleware/joi-validator.js.html +3 -3
  148. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  149. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  150. package/coverage/lcov-report/middleware/usageQuota.js.html +29 -35
  151. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  152. package/coverage/lcov-report/threads/automation.js.html +30 -24
  153. package/coverage/lcov-report/threads/index.html +25 -25
  154. package/coverage/lcov-report/threads/index.js.html +10 -10
  155. package/coverage/lcov-report/threads/query.js.html +26 -47
  156. package/coverage/lcov-report/threads/utils.js.html +14 -14
  157. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  158. package/coverage/lcov-report/utilities/budibaseDir.js.html +7 -7
  159. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  160. package/coverage/lcov-report/utilities/csvParser.js.html +6 -6
  161. package/coverage/lcov-report/utilities/global.js.html +57 -48
  162. package/coverage/lcov-report/utilities/index.html +27 -27
  163. package/coverage/lcov-report/utilities/index.js.html +42 -72
  164. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +8 -8
  165. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  166. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  167. package/coverage/lcov-report/utilities/routing/index.js.html +7 -7
  168. package/coverage/lcov-report/utilities/rowProcessor/index.html +11 -11
  169. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +32 -74
  170. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +4 -4
  171. package/coverage/lcov-report/utilities/scriptRunner.js.html +5 -5
  172. package/coverage/lcov-report/utilities/security.js.html +8 -8
  173. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  174. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  175. package/coverage/lcov-report/utilities/usageQuota/index.js.html +13 -10
  176. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +5 -2
  177. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  178. package/coverage/lcov-report/utilities/users.js.html +9 -9
  179. package/coverage/lcov-report/utilities/workerRequests.js.html +16 -16
  180. package/coverage/lcov.info +4018 -4092
  181. package/dist/api/controllers/application.js +49 -48
  182. package/dist/api/controllers/auth.js +4 -5
  183. package/dist/api/controllers/automation.js +14 -19
  184. package/dist/api/controllers/cloud.js +2 -3
  185. package/dist/api/controllers/component.js +3 -4
  186. package/dist/api/controllers/datasource.js +9 -10
  187. package/dist/api/controllers/deploy/Deployment.js +3 -6
  188. package/dist/api/controllers/deploy/index.js +12 -13
  189. package/dist/api/controllers/dev.js +5 -5
  190. package/dist/api/controllers/layout.js +3 -3
  191. package/dist/api/controllers/metadata.js +4 -4
  192. package/dist/api/controllers/migrations.js +21 -0
  193. package/dist/api/controllers/permission.js +4 -4
  194. package/dist/api/controllers/query/import/index.js +4 -6
  195. package/dist/api/controllers/query/index.js +11 -10
  196. package/dist/api/controllers/role.js +5 -5
  197. package/dist/api/controllers/routing.js +5 -6
  198. package/dist/api/controllers/row/ExternalRequest.js +90 -67
  199. package/dist/api/controllers/row/external.js +14 -22
  200. package/dist/api/controllers/row/internal.js +29 -44
  201. package/dist/api/controllers/row/internalSearch.js +11 -13
  202. package/dist/api/controllers/row/staticFormula.js +11 -11
  203. package/dist/api/controllers/row/utils.js +7 -6
  204. package/dist/api/controllers/screen.js +5 -7
  205. package/dist/api/controllers/static/index.js +4 -4
  206. package/dist/api/controllers/table/bulkFormula.js +14 -15
  207. package/dist/api/controllers/table/external.js +7 -10
  208. package/dist/api/controllers/table/index.js +5 -5
  209. package/dist/api/controllers/table/internal.js +16 -19
  210. package/dist/api/controllers/table/utils.js +29 -31
  211. package/dist/api/controllers/user.js +16 -20
  212. package/dist/api/controllers/view/index.js +8 -10
  213. package/dist/api/controllers/view/utils.js +9 -4
  214. package/dist/api/controllers/webhook.js +10 -8
  215. package/dist/api/routes/index.js +2 -0
  216. package/dist/api/routes/migrations.js +9 -0
  217. package/dist/api/routes/tests/utilities/TestFunctions.js +37 -17
  218. package/dist/app.js +35 -5
  219. package/dist/automations/automationUtils.js +2 -3
  220. package/dist/automations/steps/createRow.js +1 -1
  221. package/dist/automations/steps/updateRow.js +1 -1
  222. package/dist/automations/triggers.js +27 -25
  223. package/dist/automations/utils.js +10 -5
  224. package/dist/db/linkedRows/LinkController.js +3 -7
  225. package/dist/db/linkedRows/index.js +16 -26
  226. package/dist/db/linkedRows/linkUtils.js +6 -6
  227. package/dist/db/views/staticViews.js +9 -10
  228. package/dist/environment.js +3 -1
  229. package/dist/integrations/base/sql.js +49 -15
  230. package/dist/integrations/utils.js +3 -0
  231. package/dist/middleware/authorized.js +5 -3
  232. package/dist/middleware/builder.js +2 -2
  233. package/dist/middleware/currentapp.js +41 -37
  234. package/dist/middleware/usageQuota.js +2 -4
  235. package/dist/migrations/functions/appUrls.js +46 -0
  236. package/dist/migrations/functions/quotas1.js +50 -0
  237. package/dist/migrations/{usageQuotas → functions/usageQuotas}/index.js +6 -10
  238. package/dist/migrations/{usageQuotas → functions/usageQuotas}/syncApps.js +12 -9
  239. package/dist/migrations/{usageQuotas → functions/usageQuotas}/syncRows.js +16 -12
  240. package/dist/migrations/functions/userEmailViewCasing.js +24 -0
  241. package/dist/migrations/index.js +62 -0
  242. package/dist/package.json +4 -4
  243. package/dist/tests/utilities/TestConfiguration.js +70 -44
  244. package/dist/threads/automation.js +13 -11
  245. package/dist/threads/query.js +13 -19
  246. package/dist/tsconfig.tsbuildinfo +1 -1
  247. package/dist/utilities/fileSystem/index.js +4 -3
  248. package/dist/utilities/global.js +15 -12
  249. package/dist/utilities/index.js +7 -17
  250. package/dist/utilities/routing/index.js +5 -5
  251. package/dist/utilities/rowProcessor/index.js +9 -10
  252. package/dist/utilities/usageQuota/index.js +1 -0
  253. package/dist/utilities/usageQuota/rows.js +1 -0
  254. package/dist/utilities/users.js +3 -3
  255. package/dist/utilities/workerRequests.js +4 -4
  256. package/package.json +5 -5
  257. package/scripts/integrations/mssql/data/Dockerfile +1 -1
  258. package/scripts/integrations/mssql/data/setup.sql +17 -4
  259. package/scripts/integrations/postgres/init.sql +11 -6
  260. package/scripts/likeCypress.ts +1 -1
  261. package/src/api/controllers/application.js +38 -31
  262. package/src/api/controllers/auth.js +4 -5
  263. package/src/api/controllers/automation.js +13 -23
  264. package/src/api/controllers/cloud.js +2 -3
  265. package/src/api/controllers/component.js +3 -4
  266. package/src/api/controllers/datasource.js +9 -11
  267. package/src/api/controllers/deploy/Deployment.js +3 -7
  268. package/src/api/controllers/deploy/index.js +20 -13
  269. package/src/api/controllers/dev.js +5 -5
  270. package/src/api/controllers/layout.js +3 -3
  271. package/src/api/controllers/metadata.js +4 -9
  272. package/src/api/controllers/migrations.js +13 -0
  273. package/src/api/controllers/permission.js +4 -4
  274. package/src/api/controllers/query/import/index.ts +4 -6
  275. package/src/api/controllers/query/import/tests/index.spec.js +2 -1
  276. package/src/api/controllers/query/index.js +11 -10
  277. package/src/api/controllers/role.js +5 -5
  278. package/src/api/controllers/routing.js +5 -6
  279. package/src/api/controllers/row/ExternalRequest.ts +67 -43
  280. package/src/api/controllers/row/external.js +27 -58
  281. package/src/api/controllers/row/internal.js +29 -44
  282. package/src/api/controllers/row/internalSearch.js +11 -13
  283. package/src/api/controllers/row/staticFormula.js +10 -11
  284. package/src/api/controllers/row/utils.js +7 -6
  285. package/src/api/controllers/screen.js +5 -7
  286. package/src/api/controllers/static/index.js +4 -4
  287. package/src/api/controllers/table/bulkFormula.js +13 -23
  288. package/src/api/controllers/table/external.js +7 -10
  289. package/src/api/controllers/table/index.js +5 -5
  290. package/src/api/controllers/table/internal.js +18 -21
  291. package/src/api/controllers/table/utils.js +29 -41
  292. package/src/api/controllers/user.js +17 -20
  293. package/src/api/controllers/view/index.js +8 -10
  294. package/src/api/controllers/view/utils.js +9 -4
  295. package/src/api/controllers/webhook.js +10 -8
  296. package/src/api/routes/index.js +2 -0
  297. package/src/api/routes/migrations.js +14 -0
  298. package/src/api/routes/tests/automation.spec.js +1 -0
  299. package/src/api/routes/tests/misc.spec.js +0 -1
  300. package/src/api/routes/tests/routing.spec.js +21 -12
  301. package/src/api/routes/tests/row.spec.js +7 -4
  302. package/src/api/routes/tests/utilities/TestFunctions.js +39 -17
  303. package/src/app.ts +18 -5
  304. package/src/automations/automationUtils.js +2 -3
  305. package/src/automations/steps/createRow.js +0 -1
  306. package/src/automations/steps/updateRow.js +1 -1
  307. package/src/automations/triggers.js +33 -31
  308. package/src/automations/utils.js +9 -5
  309. package/src/db/linkedRows/LinkController.js +3 -7
  310. package/src/db/linkedRows/index.js +16 -30
  311. package/src/db/linkedRows/linkUtils.js +6 -6
  312. package/src/db/tests/linkController.spec.js +0 -1
  313. package/src/db/tests/linkTests.spec.js +5 -6
  314. package/src/db/views/staticViews.js +8 -10
  315. package/src/environment.js +3 -1
  316. package/src/integrations/base/sql.ts +61 -22
  317. package/src/integrations/utils.ts +4 -1
  318. package/src/middleware/authorized.js +5 -3
  319. package/src/middleware/builder.js +2 -2
  320. package/src/middleware/currentapp.js +50 -46
  321. package/src/middleware/tests/authorized.spec.js +7 -2
  322. package/src/middleware/tests/currentapp.spec.js +6 -0
  323. package/src/middleware/usageQuota.js +2 -4
  324. package/src/migrations/functions/appUrls.ts +34 -0
  325. package/src/migrations/functions/quotas1.ts +20 -0
  326. package/src/migrations/functions/tests/appUrls.spec.js +29 -0
  327. package/src/migrations/{tests/usageQuotas/index.spec.js → functions/tests/quotas1.spec.js} +5 -5
  328. package/src/migrations/functions/tests/userEmailViewCasing.spec.js +25 -0
  329. package/src/migrations/functions/usageQuotas/index.ts +8 -0
  330. package/src/migrations/{usageQuotas/syncApps.js → functions/usageQuotas/syncApps.ts} +6 -6
  331. package/src/migrations/functions/usageQuotas/syncRows.ts +22 -0
  332. package/src/migrations/{tests/usageQuotas → functions/usageQuotas/tests}/syncApps.spec.js +4 -4
  333. package/src/migrations/{tests/usageQuotas → functions/usageQuotas/tests}/syncRows.spec.js +4 -4
  334. package/src/migrations/functions/userEmailViewCasing.ts +13 -0
  335. package/src/migrations/index.ts +56 -0
  336. package/src/module.d.ts +3 -0
  337. package/src/tests/utilities/TestConfiguration.js +73 -50
  338. package/src/threads/automation.js +17 -15
  339. package/src/threads/query.js +14 -21
  340. package/src/utilities/fileSystem/index.js +4 -3
  341. package/src/utilities/global.js +15 -12
  342. package/src/utilities/index.js +7 -17
  343. package/src/utilities/routing/index.js +5 -5
  344. package/src/utilities/rowProcessor/index.js +9 -23
  345. package/src/utilities/usageQuota/index.js +1 -0
  346. package/src/utilities/usageQuota/rows.js +1 -0
  347. package/src/utilities/users.js +3 -3
  348. package/src/utilities/workerRequests.js +4 -4
  349. package/tsconfig.json +2 -1
  350. package/coverage/lcov-report/migrations/usageQuotas/index.html +0 -141
  351. package/coverage/lcov-report/migrations/usageQuotas/syncRows.js.html +0 -143
  352. package/src/migrations/usageQuotas/index.js +0 -24
  353. package/src/migrations/usageQuotas/syncRows.js +0 -21
@@ -1,11 +1,10 @@
1
- const CouchDB = require("../../db")
2
1
  const { outputProcessing } = require("../../utilities/rowProcessor")
3
2
  const { InternalTables } = require("../../db/utils")
4
3
  const { getFullUser } = require("../../utilities/users")
5
4
  const { BUILTIN_ROLE_IDS } = require("@budibase/backend-core/roles")
5
+ const { getAppDB, getAppId } = require("@budibase/backend-core/context")
6
6
 
7
7
  exports.fetchSelf = async ctx => {
8
- const appId = ctx.appId
9
8
  let userId = ctx.user.userId || ctx.user._id
10
9
  /* istanbul ignore next */
11
10
  if (!userId) {
@@ -19,8 +18,8 @@ exports.fetchSelf = async ctx => {
19
18
  // forward the csrf token from the session
20
19
  user.csrfToken = ctx.user.csrfToken
21
20
 
22
- if (appId) {
23
- const db = new CouchDB(appId)
21
+ if (getAppId()) {
22
+ const db = getAppDB()
24
23
  // remove the full roles structure
25
24
  delete user.roles
26
25
  try {
@@ -29,7 +28,7 @@ exports.fetchSelf = async ctx => {
29
28
  // make sure there is never a stale csrf token
30
29
  delete metadata.csrfToken
31
30
  // specifically needs to make sure is enriched
32
- ctx.body = await outputProcessing(ctx, userTable, {
31
+ ctx.body = await outputProcessing(userTable, {
33
32
  ...user,
34
33
  ...metadata,
35
34
  })
@@ -1,4 +1,3 @@
1
- const CouchDB = require("../../db")
2
1
  const actions = require("../../automations/actions")
3
2
  const triggers = require("../../automations/triggers")
4
3
  const { getAutomationParams, generateAutomationID } = require("../../db/utils")
@@ -10,6 +9,7 @@ const {
10
9
  const { deleteEntityMetadata } = require("../../utilities")
11
10
  const { MetadataTypes } = require("../../constants")
12
11
  const { setTestFlag, clearTestFlag } = require("../../utilities/redis")
12
+ const { getAppDB } = require("@budibase/backend-core/context")
13
13
 
14
14
  const ACTION_DEFS = removeDeprecated(actions.ACTION_DEFINITIONS)
15
15
  const TRIGGER_DEFS = removeDeprecated(triggers.TRIGGER_DEFINITIONS)
@@ -20,14 +20,9 @@ const TRIGGER_DEFS = removeDeprecated(triggers.TRIGGER_DEFINITIONS)
20
20
  * *
21
21
  *************************/
22
22
 
23
- async function cleanupAutomationMetadata(appId, automationId) {
23
+ async function cleanupAutomationMetadata(automationId) {
24
+ await deleteEntityMetadata(MetadataTypes.AUTOMATION_TEST_INPUT, automationId)
24
25
  await deleteEntityMetadata(
25
- appId,
26
- MetadataTypes.AUTOMATION_TEST_INPUT,
27
- automationId
28
- )
29
- await deleteEntityMetadata(
30
- appId,
31
26
  MetadataTypes.AUTOMATION_TEST_HISTORY,
32
27
  automationId
33
28
  )
@@ -58,7 +53,7 @@ function cleanAutomationInputs(automation) {
58
53
  }
59
54
 
60
55
  exports.create = async function (ctx) {
61
- const db = new CouchDB(ctx.appId)
56
+ const db = getAppDB()
62
57
  let automation = ctx.request.body
63
58
  automation.appId = ctx.appId
64
59
 
@@ -72,7 +67,6 @@ exports.create = async function (ctx) {
72
67
  automation.type = "automation"
73
68
  automation = cleanAutomationInputs(automation)
74
69
  automation = await checkForWebhooks({
75
- appId: ctx.appId,
76
70
  newAuto: automation,
77
71
  })
78
72
  const response = await db.put(automation)
@@ -89,13 +83,12 @@ exports.create = async function (ctx) {
89
83
  }
90
84
 
91
85
  exports.update = async function (ctx) {
92
- const db = new CouchDB(ctx.appId)
86
+ const db = getAppDB()
93
87
  let automation = ctx.request.body
94
88
  automation.appId = ctx.appId
95
89
  const oldAutomation = await db.get(automation._id)
96
90
  automation = cleanAutomationInputs(automation)
97
91
  automation = await checkForWebhooks({
98
- appId: ctx.appId,
99
92
  oldAuto: oldAutomation,
100
93
  newAuto: automation,
101
94
  })
@@ -131,7 +124,7 @@ exports.update = async function (ctx) {
131
124
  }
132
125
 
133
126
  exports.fetch = async function (ctx) {
134
- const db = new CouchDB(ctx.appId)
127
+ const db = getAppDB()
135
128
  const response = await db.allDocs(
136
129
  getAutomationParams(null, {
137
130
  include_docs: true,
@@ -141,20 +134,19 @@ exports.fetch = async function (ctx) {
141
134
  }
142
135
 
143
136
  exports.find = async function (ctx) {
144
- const db = new CouchDB(ctx.appId)
137
+ const db = getAppDB()
145
138
  ctx.body = await db.get(ctx.params.id)
146
139
  }
147
140
 
148
141
  exports.destroy = async function (ctx) {
149
- const db = new CouchDB(ctx.appId)
142
+ const db = getAppDB()
150
143
  const automationId = ctx.params.id
151
144
  const oldAutomation = await db.get(automationId)
152
145
  await checkForWebhooks({
153
- appId: ctx.appId,
154
146
  oldAuto: oldAutomation,
155
147
  })
156
148
  // delete metadata first
157
- await cleanupAutomationMetadata(ctx.appId, automationId)
149
+ await cleanupAutomationMetadata(automationId)
158
150
  ctx.body = await db.remove(automationId, ctx.params.rev)
159
151
  }
160
152
 
@@ -180,12 +172,11 @@ module.exports.getDefinitionList = async function (ctx) {
180
172
  *********************/
181
173
 
182
174
  exports.trigger = async function (ctx) {
183
- const appId = ctx.appId
184
- const db = new CouchDB(appId)
175
+ const db = getAppDB()
185
176
  let automation = await db.get(ctx.params.id)
186
177
  await triggers.externalTrigger(automation, {
187
178
  ...ctx.request.body,
188
- appId,
179
+ appId: ctx.appId,
189
180
  })
190
181
  ctx.body = {
191
182
  message: `Automation ${automation._id} has been triggered.`,
@@ -205,8 +196,7 @@ function prepareTestInput(input) {
205
196
  }
206
197
 
207
198
  exports.test = async function (ctx) {
208
- const appId = ctx.appId
209
- const db = new CouchDB(appId)
199
+ const db = getAppDB()
210
200
  let automation = await db.get(ctx.params.id)
211
201
  await setTestFlag(automation._id)
212
202
  const testInput = prepareTestInput(ctx.request.body)
@@ -214,7 +204,7 @@ exports.test = async function (ctx) {
214
204
  automation,
215
205
  {
216
206
  ...testInput,
217
- appId,
207
+ appId: ctx.appId,
218
208
  },
219
209
  { getResponses: true }
220
210
  )
@@ -1,6 +1,5 @@
1
1
  const env = require("../../environment")
2
2
  const { getAllApps } = require("@budibase/backend-core/db")
3
- const CouchDB = require("../../db")
4
3
  const {
5
4
  exportDB,
6
5
  sendTempFile,
@@ -30,7 +29,7 @@ exports.exportApps = async ctx => {
30
29
  if (env.SELF_HOSTED || !env.MULTI_TENANCY) {
31
30
  ctx.throw(400, "Exporting only allowed in multi-tenant cloud environments.")
32
31
  }
33
- const apps = await getAllApps(CouchDB, { all: true })
32
+ const apps = await getAllApps({ all: true })
34
33
  const globalDBString = await exportDB(getGlobalDBName(), {
35
34
  filter: doc => !doc._id.startsWith(DocumentTypes.USER),
36
35
  })
@@ -63,7 +62,7 @@ async function hasBeenImported() {
63
62
  if (!env.SELF_HOSTED || env.MULTI_TENANCY) {
64
63
  return true
65
64
  }
66
- const apps = await getAllApps(CouchDB, { all: true })
65
+ const apps = await getAllApps({ all: true })
67
66
  return apps.length !== 0
68
67
  }
69
68
 
@@ -1,15 +1,14 @@
1
- const CouchDB = require("../../db")
2
1
  const { DocumentTypes } = require("../../db/utils")
3
2
  const { getComponentLibraryManifest } = require("../../utilities/fileSystem")
3
+ const { getAppDB } = require("@budibase/backend-core/context")
4
4
 
5
5
  exports.fetchAppComponentDefinitions = async function (ctx) {
6
- const appId = ctx.params.appId || ctx.appId
7
- const db = new CouchDB(appId)
6
+ const db = getAppDB()
8
7
  const app = await db.get(DocumentTypes.APP_METADATA)
9
8
 
10
9
  let componentManifests = await Promise.all(
11
10
  app.componentLibraries.map(async library => {
12
- let manifest = await getComponentLibraryManifest(appId, library)
11
+ let manifest = await getComponentLibraryManifest(library)
13
12
 
14
13
  return {
15
14
  manifest,
@@ -1,4 +1,3 @@
1
- const CouchDB = require("../../db")
2
1
  const {
3
2
  generateDatasourceID,
4
3
  getDatasourceParams,
@@ -11,12 +10,11 @@ const { BuildSchemaErrors, InvalidColumns } = require("../../constants")
11
10
  const { integrations } = require("../../integrations")
12
11
  const { getDatasourceAndQuery } = require("./row/utils")
13
12
  const { invalidateDynamicVariables } = require("../../threads/utils")
13
+ const { getAppDB } = require("@budibase/backend-core/context")
14
14
 
15
15
  exports.fetch = async function (ctx) {
16
- const database = new CouchDB(ctx.appId)
17
-
18
16
  // Get internal tables
19
- const db = new CouchDB(ctx.appId)
17
+ const db = getAppDB()
20
18
  const internalTables = await db.allDocs(
21
19
  getTableParams(null, {
22
20
  include_docs: true,
@@ -31,7 +29,7 @@ exports.fetch = async function (ctx) {
31
29
 
32
30
  // Get external datasources
33
31
  const datasources = (
34
- await database.allDocs(
32
+ await db.allDocs(
35
33
  getDatasourceParams(null, {
36
34
  include_docs: true,
37
35
  })
@@ -49,7 +47,7 @@ exports.fetch = async function (ctx) {
49
47
  }
50
48
 
51
49
  exports.buildSchemaFromDb = async function (ctx) {
52
- const db = new CouchDB(ctx.appId)
50
+ const db = getAppDB()
53
51
  const datasource = await db.get(ctx.params.datasourceId)
54
52
 
55
53
  const { tables, error } = await buildSchemaHelper(datasource)
@@ -98,7 +96,7 @@ const invalidateVariables = async (existingDatasource, updatedDatasource) => {
98
96
  }
99
97
 
100
98
  exports.update = async function (ctx) {
101
- const db = new CouchDB(ctx.appId)
99
+ const db = getAppDB()
102
100
  const datasourceId = ctx.params.datasourceId
103
101
  let datasource = await db.get(datasourceId)
104
102
  const auth = datasource.config.auth
@@ -126,7 +124,7 @@ exports.update = async function (ctx) {
126
124
  }
127
125
 
128
126
  exports.save = async function (ctx) {
129
- const db = new CouchDB(ctx.appId)
127
+ const db = getAppDB()
130
128
  const plus = ctx.request.body.datasource.plus
131
129
  const fetchSchema = ctx.request.body.fetchSchema
132
130
 
@@ -162,7 +160,7 @@ exports.save = async function (ctx) {
162
160
  }
163
161
 
164
162
  exports.destroy = async function (ctx) {
165
- const db = new CouchDB(ctx.appId)
163
+ const db = getAppDB()
166
164
 
167
165
  // Delete all queries for the datasource
168
166
  const queries = await db.allDocs(
@@ -184,7 +182,7 @@ exports.destroy = async function (ctx) {
184
182
  }
185
183
 
186
184
  exports.find = async function (ctx) {
187
- const database = new CouchDB(ctx.appId)
185
+ const database = getAppDB()
188
186
  ctx.body = await database.get(ctx.params.datasourceId)
189
187
  }
190
188
 
@@ -192,7 +190,7 @@ exports.find = async function (ctx) {
192
190
  exports.query = async function (ctx) {
193
191
  const queryJson = ctx.request.body
194
192
  try {
195
- ctx.body = await getDatasourceAndQuery(ctx.appId, queryJson)
193
+ ctx.body = await getDatasourceAndQuery(queryJson)
196
194
  } catch (err) {
197
195
  ctx.throw(400, err)
198
196
  }
@@ -1,18 +1,14 @@
1
1
  const newid = require("../../../db/newid")
2
+ const { getAppId } = require("@budibase/backend-core/context")
2
3
 
3
4
  /**
4
5
  * This is used to pass around information about the deployment that is occurring
5
6
  */
6
7
  class Deployment {
7
- constructor(appId, id = null) {
8
- this.appId = appId
8
+ constructor(id = null) {
9
9
  this._id = id || newid()
10
10
  }
11
11
 
12
- getAppId() {
13
- return this.appId
14
- }
15
-
16
12
  setVerification(verification) {
17
13
  if (!verification) {
18
14
  return
@@ -43,7 +39,7 @@ class Deployment {
43
39
  getJSON() {
44
40
  const obj = {
45
41
  _id: this._id,
46
- appId: this.appId,
42
+ appId: getAppId(),
47
43
  status: this.status,
48
44
  }
49
45
  if (this.err) {
@@ -1,12 +1,20 @@
1
- const CouchDB = require("../../../db")
2
1
  const Deployment = require("./Deployment")
3
- const { Replication, getDeployedAppID } = require("@budibase/backend-core/db")
2
+ const {
3
+ Replication,
4
+ getProdAppID,
5
+ getDevelopmentAppID,
6
+ } = require("@budibase/backend-core/db")
4
7
  const { DocumentTypes, getAutomationParams } = require("../../../db/utils")
5
8
  const {
6
9
  disableAllCrons,
7
10
  enableCronTrigger,
8
11
  } = require("../../../automations/utils")
9
12
  const { app: appCache } = require("@budibase/backend-core/cache")
13
+ const {
14
+ getAppId,
15
+ getAppDB,
16
+ getProdAppDB,
17
+ } = require("@budibase/backend-core/context")
10
18
 
11
19
  // the max time we can wait for an invalidation to complete before considering it failed
12
20
  const MAX_PENDING_TIME_MS = 30 * 60000
@@ -34,9 +42,8 @@ async function checkAllDeployments(deployments) {
34
42
  }
35
43
 
36
44
  async function storeDeploymentHistory(deployment) {
37
- const appId = deployment.getAppId()
38
45
  const deploymentJSON = deployment.getJSON()
39
- const db = new CouchDB(appId)
46
+ const db = getAppDB()
40
47
 
41
48
  let deploymentDoc
42
49
  try {
@@ -64,7 +71,7 @@ async function storeDeploymentHistory(deployment) {
64
71
  }
65
72
 
66
73
  async function initDeployedApp(prodAppId) {
67
- const db = new CouchDB(prodAppId)
74
+ const db = getProdAppDB()
68
75
  console.log("Reading automation docs")
69
76
  const automations = (
70
77
  await db.allDocs(
@@ -88,10 +95,12 @@ async function initDeployedApp(prodAppId) {
88
95
 
89
96
  async function deployApp(deployment) {
90
97
  try {
91
- const productionAppId = getDeployedAppID(deployment.appId)
98
+ const appId = getAppId()
99
+ const devAppId = getDevelopmentAppID(appId)
100
+ const productionAppId = getProdAppID(appId)
92
101
 
93
102
  const replication = new Replication({
94
- source: deployment.appId,
103
+ source: devAppId,
95
104
  target: productionAppId,
96
105
  })
97
106
 
@@ -99,7 +108,7 @@ async function deployApp(deployment) {
99
108
 
100
109
  await replication.replicate()
101
110
  console.log("replication complete.. replacing app meta doc")
102
- const db = new CouchDB(productionAppId)
111
+ const db = getProdAppDB()
103
112
  const appDoc = await db.get(DocumentTypes.APP_METADATA)
104
113
  appDoc.appId = productionAppId
105
114
  appDoc.instance._id = productionAppId
@@ -122,8 +131,7 @@ async function deployApp(deployment) {
122
131
 
123
132
  exports.fetchDeployments = async function (ctx) {
124
133
  try {
125
- const appId = ctx.appId
126
- const db = new CouchDB(appId)
134
+ const db = getAppDB()
127
135
  const deploymentDoc = await db.get(DocumentTypes.DEPLOYMENTS)
128
136
  const { updated, deployments } = await checkAllDeployments(
129
137
  deploymentDoc,
@@ -140,8 +148,7 @@ exports.fetchDeployments = async function (ctx) {
140
148
 
141
149
  exports.deploymentProgress = async function (ctx) {
142
150
  try {
143
- const appId = ctx.appId
144
- const db = new CouchDB(appId)
151
+ const db = getAppDB()
145
152
  const deploymentDoc = await db.get(DocumentTypes.DEPLOYMENTS)
146
153
  ctx.body = deploymentDoc[ctx.params.deploymentId]
147
154
  } catch (err) {
@@ -153,7 +160,7 @@ exports.deploymentProgress = async function (ctx) {
153
160
  }
154
161
 
155
162
  exports.deployApp = async function (ctx) {
156
- let deployment = new Deployment(ctx.appId)
163
+ let deployment = new Deployment()
157
164
  console.log("Deployment object created")
158
165
  deployment.setStatus(DeploymentStatus.PENDING)
159
166
  console.log("Deployment object set to pending")
@@ -1,12 +1,12 @@
1
1
  const fetch = require("node-fetch")
2
- const CouchDB = require("../../db")
3
2
  const env = require("../../environment")
4
3
  const { checkSlashesInUrl } = require("../../utilities")
5
4
  const { request } = require("../../utilities/workerRequests")
6
5
  const { clearLock } = require("../../utilities/redis")
7
- const { Replication } = require("@budibase/backend-core/db")
6
+ const { Replication, getProdAppID } = require("@budibase/backend-core/db")
8
7
  const { DocumentTypes } = require("../../db/utils")
9
8
  const { app: appCache } = require("@budibase/backend-core/cache")
9
+ const { getProdAppDB, getAppDB } = require("@budibase/backend-core/context")
10
10
 
11
11
  async function redirect(ctx, method, path = "global") {
12
12
  const { devPath } = ctx.params
@@ -77,11 +77,11 @@ exports.clearLock = async ctx => {
77
77
 
78
78
  exports.revert = async ctx => {
79
79
  const { appId } = ctx.params
80
- const productionAppId = appId.replace("_dev", "")
80
+ const productionAppId = getProdAppID(appId)
81
81
 
82
82
  // App must have been deployed first
83
83
  try {
84
- const db = new CouchDB(productionAppId, { skip_setup: true })
84
+ const db = getProdAppDB({ skip_setup: true })
85
85
  const info = await db.info()
86
86
  if (info.error) throw info.error
87
87
  const deploymentDoc = await db.get(DocumentTypes.DEPLOYMENTS)
@@ -103,7 +103,7 @@ exports.revert = async ctx => {
103
103
 
104
104
  await replication.rollback()
105
105
  // update appID in reverted app to be dev version again
106
- const db = new CouchDB(appId)
106
+ const db = getAppDB()
107
107
  const appDoc = await db.get(DocumentTypes.APP_METADATA)
108
108
  appDoc.appId = appId
109
109
  appDoc.instance._id = appId
@@ -2,11 +2,11 @@ const {
2
2
  EMPTY_LAYOUT,
3
3
  BASE_LAYOUT_PROP_IDS,
4
4
  } = require("../../constants/layouts")
5
- const CouchDB = require("../../db")
6
5
  const { generateLayoutID, getScreenParams } = require("../../db/utils")
6
+ const { getAppDB } = require("@budibase/backend-core/context")
7
7
 
8
8
  exports.save = async function (ctx) {
9
- const db = new CouchDB(ctx.appId)
9
+ const db = getAppDB()
10
10
  let layout = ctx.request.body
11
11
 
12
12
  if (!layout.props) {
@@ -26,7 +26,7 @@ exports.save = async function (ctx) {
26
26
  }
27
27
 
28
28
  exports.destroy = async function (ctx) {
29
- const db = new CouchDB(ctx.appId)
29
+ const db = getAppDB()
30
30
  const layoutId = ctx.params.layoutId,
31
31
  layoutRev = ctx.params.layoutRev
32
32
 
@@ -1,7 +1,7 @@
1
1
  const { MetadataTypes } = require("../../constants")
2
- const CouchDB = require("../../db")
3
2
  const { generateMetadataID } = require("../../db/utils")
4
3
  const { saveEntityMetadata, deleteEntityMetadata } = require("../../utilities")
4
+ const { getAppDB } = require("@budibase/backend-core/context")
5
5
 
6
6
  exports.getTypes = async ctx => {
7
7
  ctx.body = {
@@ -14,17 +14,12 @@ exports.saveMetadata = async ctx => {
14
14
  if (type === MetadataTypes.AUTOMATION_TEST_HISTORY) {
15
15
  ctx.throw(400, "Cannot save automation history type")
16
16
  }
17
- ctx.body = await saveEntityMetadata(
18
- ctx.appId,
19
- type,
20
- entityId,
21
- ctx.request.body
22
- )
17
+ ctx.body = await saveEntityMetadata(type, entityId, ctx.request.body)
23
18
  }
24
19
 
25
20
  exports.deleteMetadata = async ctx => {
26
21
  const { type, entityId } = ctx.params
27
- await deleteEntityMetadata(ctx.appId, type, entityId)
22
+ await deleteEntityMetadata(type, entityId)
28
23
  ctx.body = {
29
24
  message: "Metadata deleted successfully",
30
25
  }
@@ -32,7 +27,7 @@ exports.deleteMetadata = async ctx => {
32
27
 
33
28
  exports.getMetadata = async ctx => {
34
29
  const { type, entityId } = ctx.params
35
- const db = new CouchDB(ctx.appId)
30
+ const db = getAppDB()
36
31
  const id = generateMetadataID(type, entityId)
37
32
  try {
38
33
  ctx.body = await db.get(id)
@@ -0,0 +1,13 @@
1
+ const { migrate, MIGRATIONS } = require("../../migrations")
2
+
3
+ exports.migrate = async ctx => {
4
+ const options = ctx.request.body
5
+ // don't await as can take a while, just return
6
+ migrate(options)
7
+ ctx.status = 200
8
+ }
9
+
10
+ exports.fetchDefinitions = async ctx => {
11
+ ctx.body = MIGRATIONS
12
+ ctx.status = 200
13
+ }
@@ -6,12 +6,12 @@ const {
6
6
  getBuiltinRoles,
7
7
  } = require("@budibase/backend-core/roles")
8
8
  const { getRoleParams } = require("../../db/utils")
9
- const CouchDB = require("../../db")
10
9
  const {
11
10
  CURRENTLY_SUPPORTED_LEVELS,
12
11
  getBasePermissions,
13
12
  } = require("../../utilities/security")
14
13
  const { removeFromArray } = require("../../utilities")
14
+ const { getAppDB } = require("@budibase/backend-core/context")
15
15
 
16
16
  const PermissionUpdateType = {
17
17
  REMOVE: "remove",
@@ -35,7 +35,7 @@ async function updatePermissionOnRole(
35
35
  { roleId, resourceId, level },
36
36
  updateType
37
37
  ) {
38
- const db = new CouchDB(appId)
38
+ const db = getAppDB()
39
39
  const remove = updateType === PermissionUpdateType.REMOVE
40
40
  const isABuiltin = isBuiltin(roleId)
41
41
  const dbRoleId = getDBRoleID(roleId)
@@ -106,7 +106,7 @@ exports.fetchLevels = function (ctx) {
106
106
  }
107
107
 
108
108
  exports.fetch = async function (ctx) {
109
- const db = new CouchDB(ctx.appId)
109
+ const db = getAppDB()
110
110
  const roles = await getAllDBRoles(db)
111
111
  let permissions = {}
112
112
  // create an object with structure role ID -> resource ID -> level
@@ -133,7 +133,7 @@ exports.fetch = async function (ctx) {
133
133
 
134
134
  exports.getResourcePerms = async function (ctx) {
135
135
  const resourceId = ctx.params.resourceId
136
- const db = new CouchDB(ctx.appId)
136
+ const db = getAppDB()
137
137
  const body = await db.allDocs(
138
138
  getRoleParams(null, {
139
139
  include_docs: true,
@@ -1,10 +1,11 @@
1
- import CouchDB from "../../../../db"
2
1
  import { queryValidation } from "../validation"
3
2
  import { generateQueryID } from "../../../../db/utils"
4
3
  import { ImportInfo, ImportSource } from "./sources/base"
5
4
  import { OpenAPI2 } from "./sources/openapi2"
6
5
  import { Query } from "./../../../../definitions/common"
7
6
  import { Curl } from "./sources/curl"
7
+ // @ts-ignore
8
+ import { getAppDB } from "@budibase/backend-core/context"
8
9
  interface ImportResult {
9
10
  errorQueries: Query[]
10
11
  queries: Query[]
@@ -33,10 +34,7 @@ export class RestImporter {
33
34
  return this.source.getInfo()
34
35
  }
35
36
 
36
- importQueries = async (
37
- appId: string,
38
- datasourceId: string
39
- ): Promise<ImportResult> => {
37
+ importQueries = async (datasourceId: string): Promise<ImportResult> => {
40
38
  // constuct the queries
41
39
  let queries = await this.source.getQueries(datasourceId)
42
40
 
@@ -58,7 +56,7 @@ export class RestImporter {
58
56
  })
59
57
 
60
58
  // persist queries
61
- const db = new CouchDB(appId)
59
+ const db = getAppDB()
62
60
  const response = await db.bulkDocs(queries)
63
61
 
64
62
  // create index to seperate queries and errors
@@ -6,6 +6,7 @@ const db = jest.fn(() => {
6
6
  }
7
7
  })
8
8
  jest.mock("../../../../../db", () => db)
9
+ require("@budibase/backend-core").init(require("../../../../../db"))
9
10
 
10
11
  const { RestImporter } = require("../index")
11
12
 
@@ -77,7 +78,7 @@ describe("Rest Importer", () => {
77
78
  const testImportQueries = async (key, data, assertions) => {
78
79
  await init(data)
79
80
  bulkDocs.mockReturnValue([])
80
- const importResult = await restImporter.importQueries("appId", "datasourceId")
81
+ const importResult = await restImporter.importQueries("datasourceId")
81
82
  expect(importResult.errorQueries.length).toBe(0)
82
83
  expect(importResult.queries.length).toBe(assertions[key].count)
83
84
  expect(bulkDocs).toHaveBeenCalledTimes(1)