@budibase/server 1.0.49-alpha.9 → 1.0.49

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (379) hide show
  1. package/__mocks__/arangojs.ts +1 -1
  2. package/__mocks__/aws-sdk.ts +4 -4
  3. package/__mocks__/mongodb.ts +5 -4
  4. package/__mocks__/mssql.ts +3 -3
  5. package/__mocks__/node-fetch.ts +1 -2
  6. package/__mocks__/pg.ts +5 -3
  7. package/builder/assets/{index.ad5370ae.js → index.2c37968e.js} +246 -249
  8. package/builder/assets/index.39e01193.css +1 -0
  9. package/builder/assets/{vendor.d526bfe8.js → vendor.f9faf6ab.js} +12 -12
  10. package/builder/index.html +3 -3
  11. package/coverage/clover.xml +2827 -3117
  12. package/coverage/coverage-final.json +101 -106
  13. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/application.js.html +152 -257
  16. package/coverage/lcov-report/api/controllers/auth.js.html +13 -22
  17. package/coverage/lcov-report/api/controllers/automation.js.html +69 -39
  18. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/cloud.js.html +11 -8
  20. package/coverage/lcov-report/api/controllers/component.js.html +16 -13
  21. package/coverage/lcov-report/api/controllers/datasource.js.html +51 -81
  22. package/coverage/lcov-report/api/controllers/dev.js.html +6 -6
  23. package/coverage/lcov-report/{utilities/usageQuota/usageQuoteReset.js.html → api/controllers/hosting.js.html} +48 -36
  24. package/coverage/lcov-report/api/controllers/index.html +76 -76
  25. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/layout.js.html +9 -9
  27. package/coverage/lcov-report/api/controllers/metadata.js.html +21 -6
  28. package/coverage/lcov-report/api/controllers/permission.js.html +19 -19
  29. package/coverage/lcov-report/api/controllers/query/index.html +10 -10
  30. package/coverage/lcov-report/api/controllers/query/index.js.html +35 -38
  31. package/coverage/lcov-report/api/controllers/query/validation.js.html +6 -6
  32. package/coverage/lcov-report/api/controllers/role.js.html +16 -16
  33. package/coverage/lcov-report/api/controllers/routing.js.html +10 -7
  34. package/coverage/lcov-report/api/controllers/row/external.js.html +141 -48
  35. package/coverage/lcov-report/api/controllers/row/index.html +40 -55
  36. package/coverage/lcov-report/api/controllers/row/index.js.html +26 -26
  37. package/coverage/lcov-report/api/controllers/row/internal.js.html +226 -118
  38. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +34 -52
  39. package/coverage/lcov-report/api/controllers/row/utils.js.html +62 -47
  40. package/coverage/lcov-report/api/controllers/screen.js.html +21 -15
  41. package/coverage/lcov-report/api/controllers/script.js.html +4 -4
  42. package/coverage/lcov-report/api/controllers/table/external.js.html +34 -25
  43. package/coverage/lcov-report/api/controllers/table/index.html +43 -58
  44. package/coverage/lcov-report/api/controllers/table/index.js.html +82 -58
  45. package/coverage/lcov-report/api/controllers/table/internal.js.html +66 -81
  46. package/coverage/lcov-report/api/controllers/table/utils.js.html +110 -218
  47. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  48. package/coverage/lcov-report/api/controllers/user.js.html +50 -47
  49. package/coverage/lcov-report/api/controllers/view/exporters.js.html +4 -4
  50. package/coverage/lcov-report/api/controllers/view/index.html +16 -16
  51. package/coverage/lcov-report/api/controllers/view/index.js.html +33 -27
  52. package/coverage/lcov-report/api/controllers/view/utils.js.html +20 -35
  53. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +7 -7
  54. package/coverage/lcov-report/api/controllers/webhook.js.html +28 -34
  55. package/coverage/lcov-report/api/index.html +1 -1
  56. package/coverage/lcov-report/api/index.js.html +8 -8
  57. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/{migrations.js.html → hosting.js.html} +14 -17
  69. package/coverage/lcov-report/api/routes/index.html +18 -18
  70. package/coverage/lcov-report/api/routes/index.js.html +3 -3
  71. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  79. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  80. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  81. package/coverage/lcov-report/api/routes/static.js.html +2 -17
  82. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  83. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  84. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  85. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  86. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  87. package/coverage/lcov-report/automations/actions.js.html +24 -24
  88. package/coverage/lcov-report/automations/automationUtils.js.html +10 -7
  89. package/coverage/lcov-report/automations/bullboard.js.html +16 -16
  90. package/coverage/lcov-report/automations/index.html +18 -18
  91. package/coverage/lcov-report/automations/index.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/bash.js.html +6 -6
  93. package/coverage/lcov-report/automations/steps/createRow.js.html +22 -13
  94. package/coverage/lcov-report/automations/steps/delay.js.html +4 -4
  95. package/coverage/lcov-report/automations/steps/deleteRow.js.html +20 -11
  96. package/coverage/lcov-report/automations/steps/discord.js.html +7 -7
  97. package/coverage/lcov-report/automations/steps/executeQuery.js.html +6 -6
  98. package/coverage/lcov-report/automations/steps/executeScript.js.html +6 -6
  99. package/coverage/lcov-report/automations/steps/filter.js.html +7 -7
  100. package/coverage/lcov-report/automations/steps/index.html +13 -13
  101. package/coverage/lcov-report/automations/steps/integromat.js.html +5 -5
  102. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +8 -8
  103. package/coverage/lcov-report/automations/steps/queryRows.js.html +10 -10
  104. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +5 -5
  105. package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -3
  106. package/coverage/lcov-report/automations/steps/slack.js.html +5 -5
  107. package/coverage/lcov-report/automations/steps/updateRow.js.html +7 -7
  108. package/coverage/lcov-report/automations/steps/utils.js.html +3 -3
  109. package/coverage/lcov-report/automations/steps/zapier.js.html +5 -5
  110. package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
  111. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
  112. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  113. package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
  114. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
  115. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
  116. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
  117. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
  118. package/coverage/lcov-report/automations/triggers.js.html +55 -61
  119. package/coverage/lcov-report/automations/utils.js.html +42 -54
  120. package/coverage/lcov-report/constants/index.html +5 -5
  121. package/coverage/lcov-report/constants/index.js.html +26 -53
  122. package/coverage/lcov-report/constants/layouts.js.html +5 -5
  123. package/coverage/lcov-report/constants/screens.js.html +4 -4
  124. package/coverage/lcov-report/db/client.js.html +18 -18
  125. package/coverage/lcov-report/db/inMemoryView.js.html +7 -7
  126. package/coverage/lcov-report/db/index.html +15 -15
  127. package/coverage/lcov-report/db/index.js.html +3 -3
  128. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +37 -25
  129. package/coverage/lcov-report/db/linkedRows/index.html +27 -27
  130. package/coverage/lcov-report/db/linkedRows/index.js.html +96 -51
  131. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +42 -42
  132. package/coverage/lcov-report/db/newid.js.html +4 -4
  133. package/coverage/lcov-report/db/utils.js.html +87 -87
  134. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  135. package/coverage/lcov-report/events/index.html +1 -1
  136. package/coverage/lcov-report/events/index.js.html +5 -5
  137. package/coverage/lcov-report/events/utils.js.html +3 -3
  138. package/coverage/lcov-report/index.html +120 -135
  139. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  140. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  141. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  142. package/coverage/lcov-report/middleware/authorized.js.html +65 -173
  143. package/coverage/lcov-report/middleware/builder.js.html +10 -10
  144. package/coverage/lcov-report/middleware/currentapp.js.html +83 -95
  145. package/coverage/lcov-report/middleware/index.html +38 -38
  146. package/coverage/lcov-report/middleware/joi-validator.js.html +3 -3
  147. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  148. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  149. package/coverage/lcov-report/middleware/usageQuota.js.html +53 -281
  150. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  151. package/coverage/lcov-report/threads/automation.js.html +24 -30
  152. package/coverage/lcov-report/threads/index.html +26 -26
  153. package/coverage/lcov-report/threads/index.js.html +10 -10
  154. package/coverage/lcov-report/threads/query.js.html +24 -39
  155. package/coverage/lcov-report/threads/utils.js.html +14 -14
  156. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  157. package/coverage/lcov-report/utilities/budibaseDir.js.html +7 -7
  158. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  159. package/coverage/lcov-report/utilities/csvParser.js.html +6 -6
  160. package/coverage/lcov-report/utilities/global.js.html +49 -58
  161. package/coverage/lcov-report/utilities/index.html +37 -37
  162. package/coverage/lcov-report/utilities/index.js.html +73 -43
  163. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +8 -8
  164. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  165. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  166. package/coverage/lcov-report/utilities/routing/index.js.html +7 -7
  167. package/coverage/lcov-report/utilities/rowProcessor/index.html +27 -27
  168. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +103 -97
  169. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +27 -75
  170. package/coverage/lcov-report/utilities/scriptRunner.js.html +5 -5
  171. package/coverage/lcov-report/utilities/security.js.html +8 -8
  172. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  173. package/coverage/lcov-report/utilities/users.js.html +9 -9
  174. package/coverage/lcov-report/utilities/workerRequests.js.html +112 -43
  175. package/coverage/lcov.info +4431 -5013
  176. package/dist/api/controllers/application.js +60 -90
  177. package/dist/api/controllers/auth.js +5 -8
  178. package/dist/api/controllers/automation.js +19 -14
  179. package/dist/api/controllers/cloud.js +3 -2
  180. package/dist/api/controllers/component.js +4 -3
  181. package/dist/api/controllers/datasource.js +10 -20
  182. package/dist/api/controllers/deploy/Deployment.js +6 -3
  183. package/dist/api/controllers/deploy/index.js +13 -12
  184. package/dist/api/controllers/dev.js +5 -5
  185. package/dist/api/controllers/hosting.js +30 -0
  186. package/dist/api/controllers/layout.js +3 -3
  187. package/dist/api/controllers/metadata.js +4 -4
  188. package/dist/api/controllers/permission.js +4 -4
  189. package/dist/api/controllers/query/import/index.js +6 -4
  190. package/dist/api/controllers/query/index.js +10 -11
  191. package/dist/api/controllers/role.js +5 -5
  192. package/dist/api/controllers/routing.js +6 -5
  193. package/dist/api/controllers/row/ExternalRequest.js +67 -90
  194. package/dist/api/controllers/row/external.js +22 -14
  195. package/dist/api/controllers/row/internal.js +93 -55
  196. package/dist/api/controllers/row/internalSearch.js +17 -23
  197. package/dist/api/controllers/row/utils.js +14 -13
  198. package/dist/api/controllers/screen.js +7 -5
  199. package/dist/api/controllers/static/index.js +12 -61
  200. package/dist/api/controllers/table/external.js +10 -7
  201. package/dist/api/controllers/table/index.js +13 -16
  202. package/dist/api/controllers/table/internal.js +16 -22
  203. package/dist/api/controllers/table/utils.js +35 -62
  204. package/dist/api/controllers/user.js +20 -18
  205. package/dist/api/controllers/view/index.js +10 -8
  206. package/dist/api/controllers/view/utils.js +4 -9
  207. package/dist/api/controllers/webhook.js +8 -10
  208. package/dist/api/routes/hosting.js +11 -0
  209. package/dist/api/routes/index.js +2 -2
  210. package/dist/api/routes/static.js +1 -2
  211. package/dist/api/routes/tests/utilities/TestFunctions.js +17 -37
  212. package/dist/app.js +5 -35
  213. package/dist/automations/automationUtils.js +3 -2
  214. package/dist/automations/steps/createRow.js +5 -3
  215. package/dist/automations/steps/deleteRow.js +4 -1
  216. package/dist/automations/steps/updateRow.js +1 -1
  217. package/dist/automations/triggers.js +25 -27
  218. package/dist/automations/utils.js +5 -10
  219. package/dist/constants/index.js +0 -7
  220. package/dist/db/linkedRows/LinkController.js +7 -3
  221. package/dist/db/linkedRows/index.js +27 -16
  222. package/dist/db/linkedRows/linkUtils.js +6 -6
  223. package/dist/db/views/staticViews.js +10 -9
  224. package/dist/definitions/datasource.js +0 -1
  225. package/dist/environment.js +1 -4
  226. package/dist/integrations/base/sql.js +14 -56
  227. package/dist/integrations/index.js +0 -3
  228. package/dist/integrations/utils.js +9 -60
  229. package/dist/middleware/authorized.js +30 -57
  230. package/dist/middleware/builder.js +2 -2
  231. package/dist/middleware/currentapp.js +37 -41
  232. package/dist/middleware/usageQuota.js +15 -82
  233. package/dist/package.json +5 -8
  234. package/dist/tests/utilities/TestConfiguration.js +50 -80
  235. package/dist/threads/automation.js +11 -13
  236. package/dist/threads/query.js +11 -15
  237. package/dist/tsconfig.tsbuildinfo +1 -1
  238. package/dist/utilities/fileSystem/index.js +3 -4
  239. package/dist/utilities/global.js +12 -15
  240. package/dist/utilities/index.js +17 -7
  241. package/dist/utilities/routing/index.js +5 -5
  242. package/dist/utilities/rowProcessor/index.js +17 -23
  243. package/dist/utilities/rowProcessor/utils.js +4 -14
  244. package/dist/utilities/{usageQuota/index.js → usageQuota.js} +31 -45
  245. package/dist/utilities/users.js +3 -3
  246. package/dist/utilities/workerRequests.js +24 -4
  247. package/nodemon.json +1 -1
  248. package/package.json +6 -9
  249. package/scripts/integrations/postgres/init.sql +6 -11
  250. package/scripts/likeCypress.ts +1 -1
  251. package/src/api/controllers/application.js +50 -85
  252. package/src/api/controllers/auth.js +5 -8
  253. package/src/api/controllers/automation.js +23 -13
  254. package/src/api/controllers/cloud.js +3 -2
  255. package/src/api/controllers/component.js +4 -3
  256. package/src/api/controllers/datasource.js +11 -21
  257. package/src/api/controllers/deploy/Deployment.js +7 -3
  258. package/src/api/controllers/deploy/index.js +13 -20
  259. package/src/api/controllers/dev.js +5 -5
  260. package/src/api/controllers/hosting.js +22 -0
  261. package/src/api/controllers/layout.js +3 -3
  262. package/src/api/controllers/metadata.js +9 -4
  263. package/src/api/controllers/permission.js +4 -4
  264. package/src/api/controllers/query/import/index.ts +6 -4
  265. package/src/api/controllers/query/import/tests/index.spec.js +1 -2
  266. package/src/api/controllers/query/index.js +10 -11
  267. package/src/api/controllers/role.js +5 -5
  268. package/src/api/controllers/routing.js +6 -5
  269. package/src/api/controllers/row/ExternalRequest.ts +43 -67
  270. package/src/api/controllers/row/external.js +58 -27
  271. package/src/api/controllers/row/internal.js +90 -54
  272. package/src/api/controllers/row/internalSearch.js +17 -23
  273. package/src/api/controllers/row/utils.js +18 -13
  274. package/src/api/controllers/screen.js +7 -5
  275. package/src/api/controllers/static/index.js +12 -65
  276. package/src/api/controllers/table/external.js +10 -7
  277. package/src/api/controllers/table/index.js +28 -20
  278. package/src/api/controllers/table/internal.js +19 -24
  279. package/src/api/controllers/table/utils.js +42 -78
  280. package/src/api/controllers/user.js +20 -19
  281. package/src/api/controllers/view/index.js +10 -8
  282. package/src/api/controllers/view/utils.js +4 -9
  283. package/src/api/controllers/webhook.js +8 -10
  284. package/src/api/routes/hosting.js +13 -0
  285. package/src/api/routes/index.js +2 -2
  286. package/src/api/routes/static.js +0 -5
  287. package/src/api/routes/tests/application.spec.js +2 -2
  288. package/src/api/routes/tests/auth.spec.js +2 -1
  289. package/src/api/routes/tests/automation.spec.js +0 -1
  290. package/src/api/routes/tests/hosting.spec.js +36 -0
  291. package/src/api/routes/tests/misc.spec.js +1 -0
  292. package/src/api/routes/tests/routing.spec.js +12 -21
  293. package/src/api/routes/tests/row.spec.js +4 -7
  294. package/src/api/routes/tests/utilities/TestFunctions.js +17 -39
  295. package/src/app.ts +5 -18
  296. package/src/automations/automationUtils.js +3 -2
  297. package/src/automations/steps/createRow.js +5 -2
  298. package/src/automations/steps/deleteRow.js +4 -1
  299. package/src/automations/steps/updateRow.js +1 -1
  300. package/src/automations/triggers.js +31 -33
  301. package/src/automations/utils.js +5 -9
  302. package/src/constants/index.js +0 -9
  303. package/src/db/linkedRows/LinkController.js +7 -3
  304. package/src/db/linkedRows/index.js +31 -16
  305. package/src/db/linkedRows/linkUtils.js +6 -6
  306. package/src/db/tests/linkController.spec.js +1 -0
  307. package/src/db/tests/linkTests.spec.js +6 -5
  308. package/src/db/views/staticViews.js +10 -8
  309. package/src/definitions/common.ts +0 -3
  310. package/src/definitions/datasource.ts +0 -3
  311. package/src/environment.js +1 -4
  312. package/src/integrations/base/sql.ts +21 -69
  313. package/src/integrations/index.ts +0 -3
  314. package/src/integrations/tests/sql.spec.js +0 -16
  315. package/src/integrations/utils.ts +12 -75
  316. package/src/middleware/authorized.js +30 -66
  317. package/src/middleware/builder.js +2 -2
  318. package/src/middleware/currentapp.js +46 -50
  319. package/src/middleware/tests/authorized.spec.js +6 -13
  320. package/src/middleware/tests/currentapp.spec.js +0 -6
  321. package/src/middleware/tests/usageQuota.spec.js +24 -18
  322. package/src/middleware/usageQuota.js +17 -93
  323. package/src/tests/utilities/TestConfiguration.js +55 -82
  324. package/src/threads/automation.js +15 -17
  325. package/src/threads/query.js +12 -17
  326. package/src/utilities/fileSystem/index.js +3 -4
  327. package/src/utilities/global.js +12 -15
  328. package/src/utilities/index.js +17 -7
  329. package/src/utilities/routing/index.js +5 -5
  330. package/src/utilities/rowProcessor/index.js +27 -25
  331. package/src/utilities/rowProcessor/utils.js +7 -23
  332. package/src/utilities/usageQuota.js +73 -0
  333. package/src/utilities/users.js +3 -3
  334. package/src/utilities/workerRequests.js +27 -4
  335. package/tsconfig.json +1 -2
  336. package/builder/assets/index.83c0944f.css +0 -1
  337. package/coverage/lcov-report/api/controllers/migrations.js.html +0 -119
  338. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +0 -548
  339. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +0 -599
  340. package/coverage/lcov-report/utilities/usageQuota/index.html +0 -141
  341. package/coverage/lcov-report/utilities/usageQuota/index.js.html +0 -359
  342. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +0 -305
  343. package/dist/api/controllers/migrations.js +0 -21
  344. package/dist/api/controllers/row/staticFormula.js +0 -147
  345. package/dist/api/controllers/table/bulkFormula.js +0 -159
  346. package/dist/api/routes/migrations.js +0 -9
  347. package/dist/integrations/googlesheets.js +0 -340
  348. package/dist/migrations/functions/appUrls.js +0 -46
  349. package/dist/migrations/functions/quotas1.js +0 -50
  350. package/dist/migrations/functions/usageQuotas/index.js +0 -20
  351. package/dist/migrations/functions/usageQuotas/syncApps.js +0 -29
  352. package/dist/migrations/functions/usageQuotas/syncRows.js +0 -33
  353. package/dist/migrations/functions/userEmailViewCasing.js +0 -24
  354. package/dist/migrations/index.js +0 -62
  355. package/dist/utilities/usageQuota/rows.js +0 -78
  356. package/dist/utilities/usageQuota/usageQuoteReset.js +0 -16
  357. package/src/api/controllers/migrations.js +0 -13
  358. package/src/api/controllers/row/staticFormula.js +0 -156
  359. package/src/api/controllers/table/bulkFormula.js +0 -173
  360. package/src/api/routes/migrations.js +0 -14
  361. package/src/api/routes/tests/static.spec.js +0 -98
  362. package/src/integrations/googlesheets.ts +0 -353
  363. package/src/migrations/functions/appUrls.ts +0 -34
  364. package/src/migrations/functions/quotas1.ts +0 -20
  365. package/src/migrations/functions/tests/appUrls.spec.js +0 -29
  366. package/src/migrations/functions/tests/quotas1.spec.js +0 -27
  367. package/src/migrations/functions/tests/userEmailViewCasing.spec.js +0 -25
  368. package/src/migrations/functions/usageQuotas/index.ts +0 -8
  369. package/src/migrations/functions/usageQuotas/syncApps.ts +0 -18
  370. package/src/migrations/functions/usageQuotas/syncRows.ts +0 -22
  371. package/src/migrations/functions/usageQuotas/tests/syncApps.spec.js +0 -37
  372. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.js +0 -43
  373. package/src/migrations/functions/userEmailViewCasing.ts +0 -13
  374. package/src/migrations/index.ts +0 -56
  375. package/src/module.d.ts +0 -3
  376. package/src/utilities/tests/usageQuota/usageQuota.spec.js +0 -72
  377. package/src/utilities/usageQuota/index.js +0 -93
  378. package/src/utilities/usageQuota/rows.js +0 -75
  379. package/src/utilities/usageQuota/usageQuoteReset.js +0 -18
@@ -1,4 +1,5 @@
1
1
  const rowController = require("../../api/controllers/row")
2
+ const env = require("../../environment")
2
3
  const usage = require("../../utilities/usageQuota")
3
4
  const { buildCtx } = require("./utils")
4
5
  const automationUtils = require("../automationUtils")
@@ -73,7 +74,9 @@ exports.run = async function ({ inputs, appId, emitter }) {
73
74
  })
74
75
 
75
76
  try {
76
- await usage.update(usage.Properties.ROW, -1)
77
+ if (env.isProd()) {
78
+ await usage.update(usage.Properties.ROW, -1)
79
+ }
77
80
  await rowController.destroy(ctx)
78
81
  return {
79
82
  response: ctx.body,
@@ -87,7 +87,7 @@ exports.run = async function ({ inputs, appId, emitter }) {
87
87
 
88
88
  try {
89
89
  if (tableId) {
90
- inputs.row = await automationUtils.cleanUpRow(tableId, inputs.row)
90
+ inputs.row = await automationUtils.cleanUpRow(appId, tableId, inputs.row)
91
91
  }
92
92
  await rowController.patch(ctx)
93
93
  return {
@@ -1,3 +1,4 @@
1
+ const CouchDB = require("../db")
1
2
  const emitter = require("../events/index")
2
3
  const { getAutomationParams } = require("../db/utils")
3
4
  const { coerce } = require("../utilities/rowProcessor")
@@ -8,7 +9,6 @@ const { queue } = require("./bullboard")
8
9
  const { checkTestFlag } = require("../utilities/redis")
9
10
  const utils = require("./utils")
10
11
  const env = require("../environment")
11
- const { doInAppContext, getAppDB } = require("@budibase/backend-core/context")
12
12
 
13
13
  const TRIGGER_DEFINITIONS = definitions
14
14
  const JOB_OPTS = {
@@ -21,41 +21,39 @@ async function queueRelevantRowAutomations(event, eventType) {
21
21
  throw `No appId specified for ${eventType} - check event emitters.`
22
22
  }
23
23
 
24
- doInAppContext(event.appId, async () => {
25
- const db = getAppDB()
26
- let automations = await db.allDocs(
27
- getAutomationParams(null, { include_docs: true })
28
- )
24
+ const db = new CouchDB(event.appId)
25
+ let automations = await db.allDocs(
26
+ getAutomationParams(null, { include_docs: true })
27
+ )
29
28
 
30
- // filter down to the correct event type
31
- automations = automations.rows
32
- .map(automation => automation.doc)
33
- .filter(automation => {
34
- const trigger = automation.definition.trigger
35
- return trigger && trigger.event === eventType
36
- })
29
+ // filter down to the correct event type
30
+ automations = automations.rows
31
+ .map(automation => automation.doc)
32
+ .filter(automation => {
33
+ const trigger = automation.definition.trigger
34
+ return trigger && trigger.event === eventType
35
+ })
37
36
 
38
- for (let automation of automations) {
39
- let automationDef = automation.definition
40
- let automationTrigger = automationDef ? automationDef.trigger : {}
41
- // don't queue events which are for dev apps, only way to test automations is
42
- // running tests on them, in production the test flag will never
43
- // be checked due to lazy evaluation (first always false)
44
- if (
45
- !env.ALLOW_DEV_AUTOMATIONS &&
46
- isDevAppID(event.appId) &&
47
- !(await checkTestFlag(automation._id))
48
- ) {
49
- continue
50
- }
51
- if (
52
- automationTrigger.inputs &&
53
- automationTrigger.inputs.tableId === event.row.tableId
54
- ) {
55
- await queue.add({ automation, event }, JOB_OPTS)
56
- }
37
+ for (let automation of automations) {
38
+ let automationDef = automation.definition
39
+ let automationTrigger = automationDef ? automationDef.trigger : {}
40
+ // don't queue events which are for dev apps, only way to test automations is
41
+ // running tests on them, in production the test flag will never
42
+ // be checked due to lazy evaluation (first always false)
43
+ if (
44
+ !env.ALLOW_DEV_AUTOMATIONS &&
45
+ isDevAppID(event.appId) &&
46
+ !(await checkTestFlag(automation._id))
47
+ ) {
48
+ continue
57
49
  }
58
- })
50
+ if (
51
+ automationTrigger.inputs &&
52
+ automationTrigger.inputs.tableId === event.row.tableId
53
+ ) {
54
+ await queue.add({ automation, event }, JOB_OPTS)
55
+ }
56
+ }
59
57
  }
60
58
 
61
59
  emitter.on("row:save", async function (event) {
@@ -6,9 +6,8 @@ const { queue } = require("./bullboard")
6
6
  const newid = require("../db/newid")
7
7
  const { updateEntityMetadata } = require("../utilities")
8
8
  const { MetadataTypes } = require("../constants")
9
- const { getProdAppID } = require("@budibase/backend-core/db")
9
+ const { getDeployedAppID } = require("@budibase/backend-core/db")
10
10
  const { cloneDeep } = require("lodash/fp")
11
- const { getAppDB, getAppId } = require("@budibase/backend-core/context")
12
11
 
13
12
  const WH_STEP_ID = definitions.WEBHOOK.stepId
14
13
  const CRON_STEP_ID = definitions.CRON.stepId
@@ -28,6 +27,7 @@ exports.processEvent = async job => {
28
27
 
29
28
  exports.updateTestHistory = async (appId, automation, history) => {
30
29
  return updateEntityMetadata(
30
+ appId,
31
31
  MetadataTypes.AUTOMATION_TEST_HISTORY,
32
32
  automation._id,
33
33
  metadata => {
@@ -93,9 +93,6 @@ exports.enableCronTrigger = async (appId, automation) => {
93
93
  )
94
94
  // Assign cron job ID from bull so we can remove it later if the cron trigger is removed
95
95
  trigger.cronJobId = job.id
96
- // can't use getAppDB here as this is likely to be called from dev app,
97
- // but this call could be for dev app or prod app, need to just use what
98
- // was passed in
99
96
  const db = new CouchDB(appId)
100
97
  const response = await db.put(automation)
101
98
  automation._id = response.id
@@ -112,8 +109,7 @@ exports.enableCronTrigger = async (appId, automation) => {
112
109
  * @returns {Promise<object|undefined>} After this is complete the new automation object may have been updated and should be
113
110
  * written to DB (this does not write to DB as it would be wasteful to repeat).
114
111
  */
115
- exports.checkForWebhooks = async ({ oldAuto, newAuto }) => {
116
- const appId = getAppId()
112
+ exports.checkForWebhooks = async ({ appId, oldAuto, newAuto }) => {
117
113
  const oldTrigger = oldAuto ? oldAuto.definition.trigger : null
118
114
  const newTrigger = newAuto ? newAuto.definition.trigger : null
119
115
  const triggerChanged =
@@ -132,7 +128,7 @@ exports.checkForWebhooks = async ({ oldAuto, newAuto }) => {
132
128
  oldTrigger.webhookId
133
129
  ) {
134
130
  try {
135
- let db = getAppDB()
131
+ let db = new CouchDB(appId)
136
132
  // need to get the webhook to get the rev
137
133
  const webhook = await db.get(oldTrigger.webhookId)
138
134
  const ctx = {
@@ -170,7 +166,7 @@ exports.checkForWebhooks = async ({ oldAuto, newAuto }) => {
170
166
  // the app ID has to be development for this endpoint
171
167
  // it can only be used when building the app
172
168
  // but the trigger endpoint will always be used in production
173
- const prodAppId = getProdAppID(appId)
169
+ const prodAppId = getDeployedAppID(appId)
174
170
  newTrigger.inputs = {
175
171
  schemaUrl: `api/webhooks/schema/${appId}/${id}`,
176
172
  triggerUrl: `api/webhooks/trigger/${prodAppId}/${id}`,
@@ -61,11 +61,6 @@ exports.RelationshipTypes = {
61
61
  MANY_TO_MANY: "many-to-many",
62
62
  }
63
63
 
64
- exports.FormulaTypes = {
65
- STATIC: "static",
66
- DYNAMIC: "dynamic",
67
- }
68
-
69
64
  exports.AuthTypes = {
70
65
  APP: "app",
71
66
  BUILDER: "builder",
@@ -83,10 +78,6 @@ exports.DataSourceOperation = {
83
78
  DELETE_TABLE: "DELETE_TABLE",
84
79
  }
85
80
 
86
- exports.DatasourceAuthTypes = {
87
- GOOGLE: "google",
88
- }
89
-
90
81
  exports.SortDirection = {
91
82
  ASCENDING: "ASCENDING",
92
83
  DESCENDING: "DESCENDING",
@@ -1,3 +1,4 @@
1
+ const CouchDB = require("../index")
1
2
  const { IncludeDocs, getLinkDocuments } = require("./linkUtils")
2
3
  const {
3
4
  generateLinkID,
@@ -6,7 +7,6 @@ const {
6
7
  } = require("../utils")
7
8
  const Sentry = require("@sentry/node")
8
9
  const { FieldTypes, RelationshipTypes } = require("../../constants")
9
- const { getAppDB } = require("@budibase/backend-core/context")
10
10
 
11
11
  /**
12
12
  * Creates a new link document structure which can be put to the database. It is important to
@@ -52,8 +52,9 @@ function LinkDocument(
52
52
  }
53
53
 
54
54
  class LinkController {
55
- constructor({ tableId, row, table, oldTable }) {
56
- this._db = getAppDB()
55
+ constructor({ appId, tableId, row, table, oldTable }) {
56
+ this._appId = appId
57
+ this._db = new CouchDB(appId)
57
58
  this._tableId = tableId
58
59
  this._row = row
59
60
  this._table = table
@@ -98,6 +99,7 @@ class LinkController {
98
99
  */
99
100
  getRowLinkDocs(rowId) {
100
101
  return getLinkDocuments({
102
+ appId: this._appId,
101
103
  tableId: this._tableId,
102
104
  rowId,
103
105
  includeDocs: IncludeDocs.INCLUDE,
@@ -109,6 +111,7 @@ class LinkController {
109
111
  */
110
112
  getTableLinkDocs() {
111
113
  return getLinkDocuments({
114
+ appId: this._appId,
112
115
  tableId: this._tableId,
113
116
  includeDocs: IncludeDocs.INCLUDE,
114
117
  })
@@ -227,6 +230,7 @@ class LinkController {
227
230
  if (linkedSchema.relationshipType === RelationshipTypes.ONE_TO_MANY) {
228
231
  let links = (
229
232
  await getLinkDocuments({
233
+ appId: this._appId,
230
234
  tableId: field.tableId,
231
235
  rowId: linkId,
232
236
  includeDocs: IncludeDocs.EXCLUDE,
@@ -9,12 +9,12 @@ const {
9
9
  getLinkedTable,
10
10
  } = require("./linkUtils")
11
11
  const { flatten } = require("lodash")
12
+ const CouchDB = require("../../db")
12
13
  const { FieldTypes } = require("../../constants")
13
14
  const { getMultiIDParams, USER_METDATA_PREFIX } = require("../../db/utils")
14
15
  const { partition } = require("lodash")
15
16
  const { getGlobalUsersFromMetadata } = require("../../utilities/global")
16
17
  const { processFormulas } = require("../../utilities/rowProcessor/utils")
17
- const { getAppDB } = require("@budibase/backend-core/context")
18
18
 
19
19
  /**
20
20
  * This functionality makes sure that when rows with links are created, updated or deleted they are processed
@@ -48,13 +48,14 @@ function clearRelationshipFields(table, rows) {
48
48
  return rows
49
49
  }
50
50
 
51
- async function getLinksForRows(rows) {
51
+ async function getLinksForRows(appId, rows) {
52
52
  const tableIds = [...new Set(rows.map(el => el.tableId))]
53
53
  // start by getting all the link values for performance reasons
54
54
  const responses = flatten(
55
55
  await Promise.all(
56
56
  tableIds.map(tableId =>
57
57
  getLinkDocuments({
58
+ appId,
58
59
  tableId: tableId,
59
60
  includeDocs: IncludeDocs.EXCLUDE,
60
61
  })
@@ -71,9 +72,9 @@ async function getLinksForRows(rows) {
71
72
  )
72
73
  }
73
74
 
74
- async function getFullLinkedDocs(links) {
75
+ async function getFullLinkedDocs(ctx, appId, links) {
75
76
  // create DBs
76
- const db = getAppDB()
77
+ const db = new CouchDB(appId)
77
78
  const linkedRowIds = links.map(link => link.id)
78
79
  const uniqueRowIds = [...new Set(linkedRowIds)]
79
80
  let dbRows = (await db.allDocs(getMultiIDParams(uniqueRowIds))).rows.map(
@@ -87,7 +88,7 @@ async function getFullLinkedDocs(links) {
87
88
  let [users, other] = partition(linked, linkRow =>
88
89
  linkRow._id.startsWith(USER_METDATA_PREFIX)
89
90
  )
90
- users = await getGlobalUsersFromMetadata(users)
91
+ users = await getGlobalUsersFromMetadata(appId, users)
91
92
  return [...other, ...users]
92
93
  }
93
94
 
@@ -95,16 +96,20 @@ async function getFullLinkedDocs(links) {
95
96
  * Update link documents for a row or table - this is to be called by the API controller when a change is occurring.
96
97
  * @param {string} args.eventType states what type of change which is occurring, means this can be expanded upon in the
97
98
  * future quite easily (all updates go through one function).
99
+ * @param {string} args.appId The ID of the instance in which the change is occurring.
98
100
  * @param {string} args.tableId The ID of the of the table which is being changed.
99
- * @param {object|undefined} args.row The row which is changing, e.g. created, updated or deleted.
100
- * @param {object|undefined} args.table If the table has already been retrieved this can be used to reduce database gets.
101
- * @param {object|undefined} args.oldTable If the table is being updated then the old table can be provided for differencing.
101
+ * @param {object|null} args.row The row which is changing, e.g. created, updated or deleted.
102
+ * @param {object|null} args.table If the table has already been retrieved this can be used to reduce database gets.
103
+ * @param {object|null} args.oldTable If the table is being updated then the old table can be provided for differencing.
102
104
  * @returns {Promise<object>} When the update is complete this will respond successfully. Returns the row for
103
105
  * row operations and the table for table operations.
104
106
  */
105
107
  exports.updateLinks = async function (args) {
106
- const { eventType, row, tableId, table, oldTable } = args
108
+ const { eventType, appId, row, tableId, table, oldTable } = args
107
109
  const baseReturnObj = row == null ? table : row
110
+ if (appId == null) {
111
+ throw "Cannot operate without an instance ID."
112
+ }
108
113
  // make sure table ID is set
109
114
  if (tableId == null && table != null) {
110
115
  args.tableId = table._id
@@ -141,23 +146,27 @@ exports.updateLinks = async function (args) {
141
146
  /**
142
147
  * Given a table and a list of rows this will retrieve all of the attached docs and enrich them into the row.
143
148
  * This is required for formula fields, this may only be utilised internally (for now).
149
+ * @param {object} ctx The request which is looking for rows.
144
150
  * @param {object} table The table from which the rows originated.
145
151
  * @param {array<object>} rows The rows which are to be enriched.
146
152
  * @return {Promise<*>} returns the rows with all of the enriched relationships on it.
147
153
  */
148
- exports.attachFullLinkedDocs = async (table, rows) => {
154
+ exports.attachFullLinkedDocs = async (ctx, table, rows) => {
155
+ const appId = ctx.appId
149
156
  const linkedTableIds = getLinkedTableIDs(table)
150
157
  if (linkedTableIds.length === 0) {
151
158
  return rows
152
159
  }
160
+ // create DBs
161
+ const db = new CouchDB(appId)
153
162
  // get all the links
154
- const links = (await getLinksForRows(rows)).filter(link =>
163
+ const links = (await getLinksForRows(appId, rows)).filter(link =>
155
164
  rows.some(row => row._id === link.thisId)
156
165
  )
157
166
  // clear any existing links that could be dupe'd
158
167
  rows = clearRelationshipFields(table, rows)
159
168
  // now get the docs and combine into the rows
160
- let linked = await getFullLinkedDocs(links)
169
+ let linked = await getFullLinkedDocs(ctx, appId, links)
161
170
  const linkedTables = []
162
171
  for (let row of rows) {
163
172
  for (let link of links.filter(link => link.thisId === row._id)) {
@@ -168,7 +177,11 @@ exports.attachFullLinkedDocs = async (table, rows) => {
168
177
  if (linkedRow) {
169
178
  const linkedTableId =
170
179
  linkedRow.tableId || getRelatedTableForField(table, link.fieldName)
171
- const linkedTable = await getLinkedTable(linkedTableId, linkedTables)
180
+ const linkedTable = await getLinkedTable(
181
+ db,
182
+ linkedTableId,
183
+ linkedTables
184
+ )
172
185
  if (linkedTable) {
173
186
  row[link.fieldName].push(processFormulas(linkedTable, linkedRow))
174
187
  }
@@ -180,16 +193,18 @@ exports.attachFullLinkedDocs = async (table, rows) => {
180
193
 
181
194
  /**
182
195
  * This function will take the given enriched rows and squash the links to only contain the primary display field.
196
+ * @param {string} appId The app in which the tables/rows/links exist.
183
197
  * @param {object} table The table from which the rows originated.
184
198
  * @param {array<object>} enriched The pre-enriched rows (full docs) which are to be squashed.
185
199
  * @returns {Promise<Array>} The rows after having their links squashed to only contain the ID and primary display.
186
200
  */
187
- exports.squashLinksToPrimaryDisplay = async (table, enriched) => {
201
+ exports.squashLinksToPrimaryDisplay = async (appId, table, enriched) => {
202
+ const db = new CouchDB(appId)
188
203
  // will populate this as we find them
189
204
  const linkedTables = [table]
190
205
  for (let row of enriched) {
191
206
  // this only fetches the table if its not already in array
192
- const rowTable = await getLinkedTable(row.tableId, linkedTables)
207
+ const rowTable = await getLinkedTable(db, row.tableId, linkedTables)
193
208
  for (let [column, schema] of Object.entries(rowTable.schema)) {
194
209
  if (schema.type !== FieldTypes.LINK || !Array.isArray(row[column])) {
195
210
  continue
@@ -197,7 +212,7 @@ exports.squashLinksToPrimaryDisplay = async (table, enriched) => {
197
212
  const newLinks = []
198
213
  for (let link of row[column]) {
199
214
  const linkTblId = link.tableId || getRelatedTableForField(table, column)
200
- const linkedTable = await getLinkedTable(linkTblId, linkedTables)
215
+ const linkedTable = await getLinkedTable(db, linkTblId, linkedTables)
201
216
  const obj = { _id: link._id }
202
217
  if (link[linkedTable.primaryDisplay]) {
203
218
  obj.primaryDisplay = link[linkedTable.primaryDisplay]
@@ -1,8 +1,8 @@
1
+ const CouchDB = require("../index")
1
2
  const Sentry = require("@sentry/node")
2
3
  const { ViewNames, getQueryIndex } = require("../utils")
3
4
  const { FieldTypes } = require("../../constants")
4
5
  const { createLinkView } = require("../views/staticViews")
5
- const { getAppDB } = require("@budibase/backend-core/context")
6
6
 
7
7
  /**
8
8
  * Only needed so that boolean parameters are being used for includeDocs
@@ -17,6 +17,7 @@ exports.createLinkView = createLinkView
17
17
 
18
18
  /**
19
19
  * Gets the linking documents, not the linked documents themselves.
20
+ * @param {string} args.appId The instance in which we are searching for linked rows.
20
21
  * @param {string} args.tableId The table which we are searching for linked rows against.
21
22
  * @param {string|null} args.fieldName The name of column/field which is being altered, only looking for
22
23
  * linking documents that are related to it. If this is not specified then the table level will be assumed.
@@ -29,8 +30,8 @@ exports.createLinkView = createLinkView
29
30
  * (if any).
30
31
  */
31
32
  exports.getLinkDocuments = async function (args) {
32
- const { tableId, rowId, includeDocs } = args
33
- const db = getAppDB()
33
+ const { appId, tableId, rowId, includeDocs } = args
34
+ const db = new CouchDB(appId)
34
35
  let params
35
36
  if (rowId != null) {
36
37
  params = { key: [tableId, rowId] }
@@ -67,7 +68,7 @@ exports.getLinkDocuments = async function (args) {
67
68
  } catch (err) {
68
69
  // check if the view doesn't exist, it should for all new instances
69
70
  if (err != null && err.name === "not_found") {
70
- await exports.createLinkView()
71
+ await exports.createLinkView(appId)
71
72
  return exports.getLinkDocuments(arguments[0])
72
73
  } else {
73
74
  /* istanbul ignore next */
@@ -88,8 +89,7 @@ exports.getLinkedTableIDs = table => {
88
89
  .map(column => column.tableId)
89
90
  }
90
91
 
91
- exports.getLinkedTable = async (id, tables) => {
92
- const db = getAppDB()
92
+ exports.getLinkedTable = async (db, id, tables) => {
93
93
  let linkedTable = tables.find(table => table._id === id)
94
94
  if (linkedTable) {
95
95
  return linkedTable
@@ -20,6 +20,7 @@ describe("test the link controller", () => {
20
20
 
21
21
  function createLinkController(table, row = null, oldTable = null) {
22
22
  const linkConfig = {
23
+ appId: config.getAppId(),
23
24
  tableId: table._id,
24
25
  table,
25
26
  }
@@ -1,8 +1,8 @@
1
1
  const TestConfig = require("../../tests/utilities/TestConfiguration")
2
- const { basicTable } = require("../../tests/utilities/structures")
2
+ const { basicTable, basicLinkedRow } = require("../../tests/utilities/structures")
3
3
  const linkUtils = require("../linkedRows/linkUtils")
4
+ const links = require("../linkedRows")
4
5
  const CouchDB = require("../index")
5
- const { getAppDB } = require("@budibase/backend-core/context")
6
6
 
7
7
  describe("test link functionality", () => {
8
8
  const config = new TestConfig(false)
@@ -11,18 +11,18 @@ describe("test link functionality", () => {
11
11
  let db, table
12
12
  beforeEach(async () => {
13
13
  await config.init()
14
- db = getAppDB()
14
+ db = new CouchDB(config.getAppId())
15
15
  table = await config.createTable()
16
16
  })
17
17
 
18
18
  it("should be able to retrieve a linked table from a list", async () => {
19
- const retrieved = await linkUtils.getLinkedTable(table._id, [table])
19
+ const retrieved = await linkUtils.getLinkedTable(db, table._id, [table])
20
20
  expect(retrieved._id).toBe(table._id)
21
21
  })
22
22
 
23
23
  it("should be able to retrieve a table from DB and update list", async () => {
24
24
  const tables = []
25
- const retrieved = await linkUtils.getLinkedTable(table._id, tables)
25
+ const retrieved = await linkUtils.getLinkedTable(db, table._id, tables)
26
26
  expect(retrieved._id).toBe(table._id)
27
27
  expect(tables[0]).toBeDefined()
28
28
  })
@@ -51,6 +51,7 @@ describe("test link functionality", () => {
51
51
  const db = new CouchDB("test")
52
52
  await db.put({ _id: "_design/database", views: {} })
53
53
  const output = await linkUtils.getLinkDocuments({
54
+ appId: "test",
54
55
  tableId: "test",
55
56
  rowId: "test",
56
57
  includeDocs: false,
@@ -1,4 +1,4 @@
1
- const { getAppDB } = require("@budibase/backend-core/context")
1
+ const CouchDB = require("../index")
2
2
  const {
3
3
  DocumentTypes,
4
4
  SEPARATOR,
@@ -21,11 +21,12 @@ const SCREEN_PREFIX = DocumentTypes.SCREEN + SEPARATOR
21
21
  /**
22
22
  * Creates the link view for the instance, this will overwrite the existing one, but this should only
23
23
  * be called if it is found that the view does not exist.
24
+ * @param {string} appId The instance to which the view should be added.
24
25
  * @returns {Promise<void>} The view now exists, please note that the next view of this query will actually build it,
25
26
  * so it may be slow.
26
27
  */
27
- exports.createLinkView = async () => {
28
- const db = getAppDB()
28
+ exports.createLinkView = async appId => {
29
+ const db = new CouchDB(appId)
29
30
  const designDoc = await db.get("_design/database")
30
31
  const view = {
31
32
  map: function (doc) {
@@ -56,8 +57,8 @@ exports.createLinkView = async () => {
56
57
  await db.put(designDoc)
57
58
  }
58
59
 
59
- exports.createRoutingView = async () => {
60
- const db = getAppDB()
60
+ exports.createRoutingView = async appId => {
61
+ const db = new CouchDB(appId)
61
62
  const designDoc = await db.get("_design/database")
62
63
  const view = {
63
64
  // if using variables in a map function need to inject them before use
@@ -77,8 +78,8 @@ exports.createRoutingView = async () => {
77
78
  await db.put(designDoc)
78
79
  }
79
80
 
80
- async function searchIndex(indexName, fnString) {
81
- const db = getAppDB()
81
+ async function searchIndex(appId, indexName, fnString) {
82
+ const db = new CouchDB(appId)
82
83
  const designDoc = await db.get("_design/database")
83
84
  designDoc.indexes = {
84
85
  [indexName]: {
@@ -89,8 +90,9 @@ async function searchIndex(indexName, fnString) {
89
90
  await db.put(designDoc)
90
91
  }
91
92
 
92
- exports.createAllSearchIndex = async () => {
93
+ exports.createAllSearchIndex = async appId => {
93
94
  await searchIndex(
95
+ appId,
94
96
  SearchIndexes.ROWS,
95
97
  function (doc) {
96
98
  function idx(input, prev) {
@@ -17,8 +17,6 @@ export interface FieldSchema {
17
17
  autocolumn?: boolean
18
18
  throughFrom?: string
19
19
  throughTo?: string
20
- formula?: string
21
- formulaType?: string
22
20
  main?: boolean
23
21
  meta?: {
24
22
  toTable: string
@@ -48,7 +46,6 @@ export interface Table extends Base {
48
46
  schema: TableSchema
49
47
  primaryDisplay?: string
50
48
  sourceId?: string
51
- relatedFormula?: string[]
52
49
  constrained?: string[]
53
50
  }
54
51
 
@@ -47,7 +47,6 @@ export enum SourceNames {
47
47
  ARANGODB = "ARANGODB",
48
48
  REST = "REST",
49
49
  ORACLE = "ORACLE",
50
- GOOGLE_SHEETS = "GOOGLE_SHEETS",
51
50
  }
52
51
 
53
52
  export enum IncludeRelationships {
@@ -87,8 +86,6 @@ export interface ExtraQueryConfig {
87
86
  export interface Integration {
88
87
  docs: string
89
88
  plus?: boolean
90
- auth?: { type: string }
91
- relationships?: boolean
92
89
  description: string
93
90
  friendlyName: string
94
91
  datasource: {}
@@ -2,8 +2,7 @@ function isTest() {
2
2
  return (
3
3
  process.env.NODE_ENV === "jest" ||
4
4
  process.env.NODE_ENV === "cypress" ||
5
- (process.env.JEST_WORKER_ID != null &&
6
- process.env.JEST_WORKER_ID !== "null")
5
+ process.env.JEST_WORKER_ID != null
7
6
  )
8
7
  }
9
8
 
@@ -39,12 +38,10 @@ module.exports = {
39
38
  MINIO_ACCESS_KEY: process.env.MINIO_ACCESS_KEY,
40
39
  MINIO_SECRET_KEY: process.env.MINIO_SECRET_KEY,
41
40
  USE_QUOTAS: process.env.USE_QUOTAS,
42
- EXCLUDE_QUOTAS_TENANTS: process.env.EXCLUDE_QUOTAS_TENANTS,
43
41
  REDIS_URL: process.env.REDIS_URL,
44
42
  REDIS_PASSWORD: process.env.REDIS_PASSWORD,
45
43
  INTERNAL_API_KEY: process.env.INTERNAL_API_KEY,
46
44
  MULTI_TENANCY: process.env.MULTI_TENANCY,
47
- HTTP_MIGRATIONS: process.env.HTTP_MIGRATIONS,
48
45
  // environment
49
46
  NODE_ENV: process.env.NODE_ENV,
50
47
  JEST_WORKER_ID: process.env.JEST_WORKER_ID,