@budibase/server 1.0.49-alpha.2 → 1.0.49-alpha.6

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 (320) 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.82e12602.js → index.1b905242.js} +1 -1
  8. package/builder/index.html +1 -1
  9. package/coverage/clover.xml +1917 -1929
  10. package/coverage/coverage-final.json +54 -54
  11. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/application.js.html +58 -37
  14. package/coverage/lcov-report/api/controllers/auth.js.html +11 -14
  15. package/coverage/lcov-report/api/controllers/automation.js.html +21 -51
  16. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/cloud.js.html +8 -11
  18. package/coverage/lcov-report/api/controllers/component.js.html +10 -13
  19. package/coverage/lcov-report/api/controllers/datasource.js.html +17 -23
  20. package/coverage/lcov-report/api/controllers/dev.js.html +6 -6
  21. package/coverage/lcov-report/api/controllers/index.html +52 -52
  22. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/layout.js.html +4 -4
  24. package/coverage/lcov-report/api/controllers/metadata.js.html +6 -21
  25. package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/permission.js.html +6 -6
  27. package/coverage/lcov-report/api/controllers/query/index.html +10 -10
  28. package/coverage/lcov-report/api/controllers/query/index.js.html +21 -18
  29. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/role.js.html +9 -9
  31. package/coverage/lcov-report/api/controllers/routing.js.html +7 -10
  32. package/coverage/lcov-report/api/controllers/row/external.js.html +6 -12
  33. package/coverage/lcov-report/api/controllers/row/index.html +22 -22
  34. package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/row/internal.js.html +37 -82
  36. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +19 -25
  37. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +14 -17
  38. package/coverage/lcov-report/api/controllers/row/utils.js.html +15 -12
  39. package/coverage/lcov-report/api/controllers/screen.js.html +10 -16
  40. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +20 -50
  42. package/coverage/lcov-report/api/controllers/table/external.js.html +15 -24
  43. package/coverage/lcov-report/api/controllers/table/index.html +37 -37
  44. package/coverage/lcov-report/api/controllers/table/index.js.html +7 -7
  45. package/coverage/lcov-report/api/controllers/table/internal.js.html +36 -45
  46. package/coverage/lcov-report/api/controllers/table/utils.js.html +40 -76
  47. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  48. package/coverage/lcov-report/api/controllers/user.js.html +26 -35
  49. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  50. package/coverage/lcov-report/api/controllers/view/index.html +16 -16
  51. package/coverage/lcov-report/api/controllers/view/index.js.html +15 -21
  52. package/coverage/lcov-report/api/controllers/view/utils.js.html +25 -10
  53. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  54. package/coverage/lcov-report/api/controllers/webhook.js.html +21 -15
  55. package/coverage/lcov-report/api/index.html +1 -1
  56. package/coverage/lcov-report/api/index.js.html +1 -1
  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/index.html +1 -1
  69. package/coverage/lcov-report/api/routes/index.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/migrations.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 +1 -1
  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 +1 -1
  88. package/coverage/lcov-report/automations/automationUtils.js.html +4 -7
  89. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  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 +1 -1
  93. package/coverage/lcov-report/automations/steps/createRow.js.html +2 -5
  94. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  99. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  100. package/coverage/lcov-report/automations/steps/index.html +1 -1
  101. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  102. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  103. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  104. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  105. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  106. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  107. package/coverage/lcov-report/automations/steps/updateRow.js.html +2 -2
  108. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  109. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  110. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  111. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  112. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  113. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  114. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  115. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  116. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  117. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  118. package/coverage/lcov-report/automations/triggers.js.html +46 -40
  119. package/coverage/lcov-report/automations/utils.js.html +24 -12
  120. package/coverage/lcov-report/constants/index.html +1 -1
  121. package/coverage/lcov-report/constants/index.js.html +1 -1
  122. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  123. package/coverage/lcov-report/constants/screens.js.html +1 -1
  124. package/coverage/lcov-report/db/client.js.html +18 -18
  125. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  126. package/coverage/lcov-report/db/index.html +1 -1
  127. package/coverage/lcov-report/db/index.js.html +3 -3
  128. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +11 -23
  129. package/coverage/lcov-report/db/linkedRows/index.html +27 -27
  130. package/coverage/lcov-report/db/linkedRows/index.js.html +24 -66
  131. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +28 -28
  132. package/coverage/lcov-report/db/newid.js.html +1 -1
  133. package/coverage/lcov-report/db/utils.js.html +5 -5
  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 +1 -1
  137. package/coverage/lcov-report/events/utils.js.html +1 -1
  138. package/coverage/lcov-report/index.html +88 -88
  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 +21 -15
  143. package/coverage/lcov-report/middleware/builder.js.html +3 -3
  144. package/coverage/lcov-report/middleware/currentapp.js.html +72 -60
  145. package/coverage/lcov-report/middleware/index.html +28 -28
  146. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  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 +29 -29
  150. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  151. package/coverage/lcov-report/threads/automation.js.html +30 -24
  152. package/coverage/lcov-report/threads/index.html +16 -16
  153. package/coverage/lcov-report/threads/index.js.html +1 -1
  154. package/coverage/lcov-report/threads/query.js.html +17 -17
  155. package/coverage/lcov-report/threads/utils.js.html +1 -1
  156. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  157. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  158. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  159. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  160. package/coverage/lcov-report/utilities/global.js.html +44 -35
  161. package/coverage/lcov-report/utilities/index.html +27 -27
  162. package/coverage/lcov-report/utilities/index.js.html +40 -70
  163. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
  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 +11 -11
  168. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +16 -58
  169. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  170. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  171. package/coverage/lcov-report/utilities/security.js.html +1 -1
  172. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  173. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  174. package/coverage/lcov-report/utilities/usageQuota/index.js.html +5 -2
  175. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +5 -2
  176. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  177. package/coverage/lcov-report/utilities/users.js.html +5 -5
  178. package/coverage/lcov-report/utilities/workerRequests.js.html +5 -5
  179. package/coverage/lcov.info +3189 -3198
  180. package/dist/api/controllers/application.js +31 -28
  181. package/dist/api/controllers/auth.js +4 -5
  182. package/dist/api/controllers/automation.js +14 -19
  183. package/dist/api/controllers/cloud.js +2 -3
  184. package/dist/api/controllers/component.js +3 -4
  185. package/dist/api/controllers/datasource.js +9 -10
  186. package/dist/api/controllers/deploy/Deployment.js +3 -6
  187. package/dist/api/controllers/deploy/index.js +12 -13
  188. package/dist/api/controllers/dev.js +5 -5
  189. package/dist/api/controllers/layout.js +3 -3
  190. package/dist/api/controllers/metadata.js +4 -4
  191. package/dist/api/controllers/permission.js +4 -4
  192. package/dist/api/controllers/query/import/index.js +4 -6
  193. package/dist/api/controllers/query/index.js +11 -10
  194. package/dist/api/controllers/role.js +5 -5
  195. package/dist/api/controllers/routing.js +5 -6
  196. package/dist/api/controllers/row/ExternalRequest.js +76 -63
  197. package/dist/api/controllers/row/external.js +4 -4
  198. package/dist/api/controllers/row/internal.js +29 -44
  199. package/dist/api/controllers/row/internalSearch.js +11 -13
  200. package/dist/api/controllers/row/staticFormula.js +11 -11
  201. package/dist/api/controllers/row/utils.js +7 -6
  202. package/dist/api/controllers/screen.js +5 -7
  203. package/dist/api/controllers/static/index.js +4 -4
  204. package/dist/api/controllers/table/bulkFormula.js +14 -15
  205. package/dist/api/controllers/table/external.js +7 -10
  206. package/dist/api/controllers/table/index.js +5 -5
  207. package/dist/api/controllers/table/internal.js +16 -19
  208. package/dist/api/controllers/table/utils.js +29 -31
  209. package/dist/api/controllers/user.js +16 -20
  210. package/dist/api/controllers/view/index.js +8 -10
  211. package/dist/api/controllers/view/utils.js +9 -4
  212. package/dist/api/controllers/webhook.js +10 -8
  213. package/dist/api/routes/tests/utilities/TestFunctions.js +37 -17
  214. package/dist/automations/automationUtils.js +2 -3
  215. package/dist/automations/steps/createRow.js +1 -1
  216. package/dist/automations/steps/updateRow.js +1 -1
  217. package/dist/automations/triggers.js +27 -25
  218. package/dist/automations/utils.js +10 -5
  219. package/dist/db/linkedRows/LinkController.js +3 -7
  220. package/dist/db/linkedRows/index.js +16 -26
  221. package/dist/db/linkedRows/linkUtils.js +6 -6
  222. package/dist/db/views/staticViews.js +9 -10
  223. package/dist/environment.js +2 -1
  224. package/dist/integrations/utils.js +3 -0
  225. package/dist/middleware/authorized.js +5 -3
  226. package/dist/middleware/builder.js +2 -2
  227. package/dist/middleware/currentapp.js +41 -37
  228. package/dist/middleware/usageQuota.js +2 -2
  229. package/dist/migrations/functions/appUrls.js +11 -2
  230. package/dist/migrations/functions/usageQuotas/syncApps.js +7 -9
  231. package/dist/migrations/functions/usageQuotas/syncRows.js +7 -9
  232. package/dist/package.json +4 -4
  233. package/dist/tests/utilities/TestConfiguration.js +67 -44
  234. package/dist/threads/automation.js +13 -11
  235. package/dist/threads/query.js +11 -11
  236. package/dist/tsconfig.tsbuildinfo +1 -1
  237. package/dist/utilities/fileSystem/index.js +4 -3
  238. package/dist/utilities/global.js +15 -12
  239. package/dist/utilities/index.js +7 -17
  240. package/dist/utilities/routing/index.js +5 -5
  241. package/dist/utilities/rowProcessor/index.js +9 -10
  242. package/dist/utilities/usageQuota/index.js +1 -0
  243. package/dist/utilities/usageQuota/rows.js +1 -0
  244. package/dist/utilities/users.js +3 -3
  245. package/dist/utilities/workerRequests.js +4 -4
  246. package/package.json +5 -5
  247. package/scripts/likeCypress.ts +1 -1
  248. package/src/api/controllers/application.js +35 -28
  249. package/src/api/controllers/auth.js +4 -5
  250. package/src/api/controllers/automation.js +13 -23
  251. package/src/api/controllers/cloud.js +2 -3
  252. package/src/api/controllers/component.js +3 -4
  253. package/src/api/controllers/datasource.js +9 -11
  254. package/src/api/controllers/deploy/Deployment.js +3 -7
  255. package/src/api/controllers/deploy/index.js +20 -13
  256. package/src/api/controllers/dev.js +5 -5
  257. package/src/api/controllers/layout.js +3 -3
  258. package/src/api/controllers/metadata.js +4 -9
  259. package/src/api/controllers/permission.js +4 -4
  260. package/src/api/controllers/query/import/index.ts +4 -6
  261. package/src/api/controllers/query/import/tests/index.spec.js +2 -1
  262. package/src/api/controllers/query/index.js +11 -10
  263. package/src/api/controllers/role.js +5 -5
  264. package/src/api/controllers/routing.js +5 -6
  265. package/src/api/controllers/row/ExternalRequest.ts +53 -42
  266. package/src/api/controllers/row/external.js +4 -6
  267. package/src/api/controllers/row/internal.js +29 -44
  268. package/src/api/controllers/row/internalSearch.js +11 -13
  269. package/src/api/controllers/row/staticFormula.js +10 -11
  270. package/src/api/controllers/row/utils.js +7 -6
  271. package/src/api/controllers/screen.js +5 -7
  272. package/src/api/controllers/static/index.js +4 -4
  273. package/src/api/controllers/table/bulkFormula.js +13 -23
  274. package/src/api/controllers/table/external.js +7 -10
  275. package/src/api/controllers/table/index.js +5 -5
  276. package/src/api/controllers/table/internal.js +18 -21
  277. package/src/api/controllers/table/utils.js +29 -41
  278. package/src/api/controllers/user.js +17 -20
  279. package/src/api/controllers/view/index.js +8 -10
  280. package/src/api/controllers/view/utils.js +9 -4
  281. package/src/api/controllers/webhook.js +10 -8
  282. package/src/api/routes/tests/automation.spec.js +1 -0
  283. package/src/api/routes/tests/misc.spec.js +0 -1
  284. package/src/api/routes/tests/routing.spec.js +21 -12
  285. package/src/api/routes/tests/row.spec.js +7 -4
  286. package/src/api/routes/tests/utilities/TestFunctions.js +39 -17
  287. package/src/automations/automationUtils.js +2 -3
  288. package/src/automations/steps/createRow.js +0 -1
  289. package/src/automations/steps/updateRow.js +1 -1
  290. package/src/automations/triggers.js +33 -31
  291. package/src/automations/utils.js +9 -5
  292. package/src/db/linkedRows/LinkController.js +3 -7
  293. package/src/db/linkedRows/index.js +16 -30
  294. package/src/db/linkedRows/linkUtils.js +6 -6
  295. package/src/db/tests/linkController.spec.js +0 -1
  296. package/src/db/tests/linkTests.spec.js +5 -6
  297. package/src/db/views/staticViews.js +8 -10
  298. package/src/environment.js +2 -1
  299. package/src/integrations/utils.ts +4 -1
  300. package/src/middleware/authorized.js +5 -3
  301. package/src/middleware/builder.js +2 -2
  302. package/src/middleware/currentapp.js +50 -46
  303. package/src/middleware/tests/authorized.spec.js +7 -2
  304. package/src/middleware/tests/currentapp.spec.js +6 -0
  305. package/src/middleware/usageQuota.js +2 -2
  306. package/src/migrations/functions/appUrls.ts +11 -2
  307. package/src/migrations/functions/usageQuotas/syncApps.ts +5 -4
  308. package/src/migrations/functions/usageQuotas/syncRows.ts +5 -4
  309. package/src/tests/utilities/TestConfiguration.js +69 -50
  310. package/src/threads/automation.js +17 -15
  311. package/src/threads/query.js +12 -12
  312. package/src/utilities/fileSystem/index.js +4 -3
  313. package/src/utilities/global.js +15 -12
  314. package/src/utilities/index.js +7 -17
  315. package/src/utilities/routing/index.js +5 -5
  316. package/src/utilities/rowProcessor/index.js +9 -23
  317. package/src/utilities/usageQuota/index.js +1 -0
  318. package/src/utilities/usageQuota/rows.js +1 -0
  319. package/src/utilities/users.js +3 -3
  320. package/src/utilities/workerRequests.js +4 -4
@@ -1,4 +1,3 @@
1
- const CouchDB = require("../../../db")
2
1
  const csvParser = require("../../../utilities/csvParser")
3
2
  const {
4
3
  getRowParams,
@@ -26,10 +25,11 @@ const {
26
25
  const { getViews, saveView } = require("../view/utils")
27
26
  const viewTemplate = require("../view/viewBuilder")
28
27
  const usageQuota = require("../../../utilities/usageQuota")
28
+ const { getAppDB } = require("@budibase/backend-core/context")
29
29
  const { cloneDeep } = require("lodash/fp")
30
30
 
31
- exports.clearColumns = async (appId, table, columnNames) => {
32
- const db = new CouchDB(appId)
31
+ exports.clearColumns = async (table, columnNames) => {
32
+ const db = getAppDB()
33
33
  const rows = await db.allDocs(
34
34
  getRowParams(table._id, null, {
35
35
  include_docs: true,
@@ -43,7 +43,8 @@ exports.clearColumns = async (appId, table, columnNames) => {
43
43
  )
44
44
  }
45
45
 
46
- exports.checkForColumnUpdates = async (appId, db, oldTable, updatedTable) => {
46
+ exports.checkForColumnUpdates = async (oldTable, updatedTable) => {
47
+ const db = getAppDB()
47
48
  let updatedRows = []
48
49
  const rename = updatedTable._rename
49
50
  let deletedColumns = []
@@ -73,9 +74,9 @@ exports.checkForColumnUpdates = async (appId, db, oldTable, updatedTable) => {
73
74
  })
74
75
 
75
76
  // cleanup any attachments from object storage for deleted attachment columns
76
- await cleanupAttachments(appId, updatedTable, { oldTable, rows: rawRows })
77
+ await cleanupAttachments(updatedTable, { oldTable, rows: rawRows })
77
78
  // Update views
78
- await exports.checkForViewUpdates(db, updatedTable, rename, deletedColumns)
79
+ await exports.checkForViewUpdates(updatedTable, rename, deletedColumns)
79
80
  delete updatedTable._rename
80
81
  }
81
82
  return { rows: updatedRows, table: updatedTable }
@@ -102,12 +103,12 @@ exports.makeSureTableUpToDate = (table, tableToSave) => {
102
103
  return tableToSave
103
104
  }
104
105
 
105
- exports.handleDataImport = async (appId, user, table, dataImport) => {
106
+ exports.handleDataImport = async (user, table, dataImport) => {
106
107
  if (!dataImport || !dataImport.csvString) {
107
108
  return table
108
109
  }
109
110
 
110
- const db = new CouchDB(appId)
111
+ const db = getAppDB()
111
112
  // Populate the table with rows imported from CSV in a bulk update
112
113
  const data = await csvParser.transform({
113
114
  ...dataImport,
@@ -152,8 +153,8 @@ exports.handleDataImport = async (appId, user, table, dataImport) => {
152
153
  return table
153
154
  }
154
155
 
155
- exports.handleSearchIndexes = async (appId, table) => {
156
- const db = new CouchDB(appId)
156
+ exports.handleSearchIndexes = async table => {
157
+ const db = getAppDB()
157
158
  // create relevant search indexes
158
159
  if (table.indexes && table.indexes.length > 0) {
159
160
  const currentIndexes = await db.getIndexes()
@@ -210,12 +211,9 @@ exports.checkStaticTables = table => {
210
211
  }
211
212
 
212
213
  class TableSaveFunctions {
213
- constructor({ db, ctx, oldTable, dataImport }) {
214
- this.db = db
215
- this.ctx = ctx
216
- if (this.ctx && this.ctx.user) {
217
- this.appId = this.ctx.appId
218
- }
214
+ constructor({ user, oldTable, dataImport }) {
215
+ this.db = getAppDB()
216
+ this.user = user
219
217
  this.oldTable = oldTable
220
218
  this.dataImport = dataImport
221
219
  // any rows that need updated
@@ -233,25 +231,15 @@ class TableSaveFunctions {
233
231
 
234
232
  // when confirmed valid
235
233
  async mid(table) {
236
- let response = await exports.checkForColumnUpdates(
237
- this.appId,
238
- this.db,
239
- this.oldTable,
240
- table
241
- )
234
+ let response = await exports.checkForColumnUpdates(this.oldTable, table)
242
235
  this.rows = this.rows.concat(response.rows)
243
236
  return table
244
237
  }
245
238
 
246
239
  // after saving
247
240
  async after(table) {
248
- table = await exports.handleSearchIndexes(this.appId, table)
249
- table = await exports.handleDataImport(
250
- this.appId,
251
- this.ctx.user,
252
- table,
253
- this.dataImport
254
- )
241
+ table = await exports.handleSearchIndexes(table)
242
+ table = await exports.handleDataImport(this.user, table, this.dataImport)
255
243
  return table
256
244
  }
257
245
 
@@ -260,8 +248,8 @@ class TableSaveFunctions {
260
248
  }
261
249
  }
262
250
 
263
- exports.getAllInternalTables = async appId => {
264
- const db = new CouchDB(appId)
251
+ exports.getAllInternalTables = async () => {
252
+ const db = getAppDB()
265
253
  const internalTables = await db.allDocs(
266
254
  getTableParams(null, {
267
255
  include_docs: true,
@@ -274,8 +262,8 @@ exports.getAllInternalTables = async appId => {
274
262
  }))
275
263
  }
276
264
 
277
- exports.getAllExternalTables = async (appId, datasourceId) => {
278
- const db = new CouchDB(appId)
265
+ exports.getAllExternalTables = async datasourceId => {
266
+ const db = getAppDB()
279
267
  const datasource = await db.get(datasourceId)
280
268
  if (!datasource || !datasource.entities) {
281
269
  throw "Datasource is not configured fully."
@@ -283,25 +271,25 @@ exports.getAllExternalTables = async (appId, datasourceId) => {
283
271
  return datasource.entities
284
272
  }
285
273
 
286
- exports.getExternalTable = async (appId, datasourceId, tableName) => {
287
- const entities = await exports.getAllExternalTables(appId, datasourceId)
274
+ exports.getExternalTable = async (datasourceId, tableName) => {
275
+ const entities = await exports.getAllExternalTables(datasourceId)
288
276
  return entities[tableName]
289
277
  }
290
278
 
291
- exports.getTable = async (appId, tableId) => {
292
- const db = new CouchDB(appId)
279
+ exports.getTable = async tableId => {
280
+ const db = getAppDB()
293
281
  if (isExternalTable(tableId)) {
294
282
  let { datasourceId, tableName } = breakExternalTableId(tableId)
295
283
  const datasource = await db.get(datasourceId)
296
- const table = await exports.getExternalTable(appId, datasourceId, tableName)
284
+ const table = await exports.getExternalTable(datasourceId, tableName)
297
285
  return { ...table, sql: isSQL(datasource) }
298
286
  } else {
299
287
  return db.get(tableId)
300
288
  }
301
289
  }
302
290
 
303
- exports.checkForViewUpdates = async (db, table, rename, deletedColumns) => {
304
- const views = await getViews(db)
291
+ exports.checkForViewUpdates = async (table, rename, deletedColumns) => {
292
+ const views = await getViews()
305
293
  const tableViews = views.filter(view => view.meta.tableId === table._id)
306
294
 
307
295
  // Check each table view to see if impacted by this table action
@@ -363,7 +351,7 @@ exports.checkForViewUpdates = async (db, table, rename, deletedColumns) => {
363
351
  // Update view if required
364
352
  if (needsUpdated) {
365
353
  const newViewTemplate = viewTemplate(view.meta)
366
- await saveView(db, null, view.name, newViewTemplate)
354
+ await saveView(null, view.name, newViewTemplate)
367
355
  if (!newViewTemplate.meta.schema) {
368
356
  newViewTemplate.meta.schema = table.schema
369
357
  }
@@ -1,4 +1,3 @@
1
- const CouchDB = require("../../db")
2
1
  const {
3
2
  generateUserMetadataID,
4
3
  getUserMetadataParams,
@@ -11,12 +10,14 @@ const { isEqual } = require("lodash")
11
10
  const { BUILTIN_ROLE_IDS } = require("@budibase/backend-core/roles")
12
11
  const {
13
12
  getDevelopmentAppID,
14
- getDeployedAppIDs,
13
+ getProdAppIDs,
14
+ dbExists,
15
15
  } = require("@budibase/backend-core/db")
16
- const { doesDatabaseExist } = require("../../utilities")
17
16
  const { UserStatus } = require("@budibase/backend-core/constants")
17
+ const { getAppDB } = require("@budibase/backend-core/context")
18
18
 
19
- async function rawMetadata(db) {
19
+ async function rawMetadata() {
20
+ const db = getAppDB()
20
21
  return (
21
22
  await db.allDocs(
22
23
  getUserMetadataParams(null, {
@@ -54,13 +55,10 @@ function combineMetadataAndUser(user, metadata) {
54
55
  return null
55
56
  }
56
57
 
57
- exports.syncGlobalUsers = async appId => {
58
+ exports.syncGlobalUsers = async () => {
58
59
  // sync user metadata
59
- const db = new CouchDB(appId)
60
- const [users, metadata] = await Promise.all([
61
- getGlobalUsers(appId),
62
- rawMetadata(db),
63
- ])
60
+ const db = getAppDB()
61
+ const [users, metadata] = await Promise.all([getGlobalUsers(), rawMetadata()])
64
62
  const toWrite = []
65
63
  for (let user of users) {
66
64
  const combined = await combineMetadataAndUser(user, metadata)
@@ -94,7 +92,7 @@ exports.syncUser = async function (ctx) {
94
92
  let prodAppIds
95
93
  // if they are a builder then get all production app IDs
96
94
  if ((user.builder && user.builder.global) || deleting) {
97
- prodAppIds = await getDeployedAppIDs(CouchDB)
95
+ prodAppIds = await getProdAppIDs()
98
96
  } else {
99
97
  prodAppIds = Object.entries(roles)
100
98
  .filter(entry => entry[1] !== BUILTIN_ROLE_IDS.PUBLIC)
@@ -104,10 +102,10 @@ exports.syncUser = async function (ctx) {
104
102
  const roleId = roles[prodAppId]
105
103
  const devAppId = getDevelopmentAppID(prodAppId)
106
104
  for (let appId of [prodAppId, devAppId]) {
107
- if (!(await doesDatabaseExist(appId))) {
105
+ if (!(await dbExists(appId))) {
108
106
  continue
109
107
  }
110
- const db = new CouchDB(appId)
108
+ const db = getAppDB()
111
109
  const metadataId = generateUserMetadataID(userId)
112
110
  let metadata
113
111
  try {
@@ -143,8 +141,8 @@ exports.syncUser = async function (ctx) {
143
141
  }
144
142
 
145
143
  exports.fetchMetadata = async function (ctx) {
146
- const database = new CouchDB(ctx.appId)
147
- const global = await getGlobalUsers(ctx.appId)
144
+ const database = getAppDB()
145
+ const global = await getGlobalUsers()
148
146
  const metadata = await rawMetadata(database)
149
147
  const users = []
150
148
  for (let user of global) {
@@ -173,8 +171,7 @@ exports.updateSelfMetadata = async function (ctx) {
173
171
  }
174
172
 
175
173
  exports.updateMetadata = async function (ctx) {
176
- const appId = ctx.appId
177
- const db = new CouchDB(appId)
174
+ const db = getAppDB()
178
175
  const user = ctx.request.body
179
176
  // this isn't applicable to the user
180
177
  delete user.roles
@@ -186,7 +183,7 @@ exports.updateMetadata = async function (ctx) {
186
183
  }
187
184
 
188
185
  exports.destroyMetadata = async function (ctx) {
189
- const db = new CouchDB(ctx.appId)
186
+ const db = getAppDB()
190
187
  try {
191
188
  const dbUser = await db.get(ctx.params.id)
192
189
  await db.remove(dbUser._id, dbUser._rev)
@@ -209,7 +206,7 @@ exports.setFlag = async function (ctx) {
209
206
  ctx.throw(400, "Must supply a 'flag' field in request body.")
210
207
  }
211
208
  const flagDocId = generateUserFlagID(userId)
212
- const db = new CouchDB(ctx.appId)
209
+ const db = getAppDB()
213
210
  let doc
214
211
  try {
215
212
  doc = await db.get(flagDocId)
@@ -224,7 +221,7 @@ exports.setFlag = async function (ctx) {
224
221
  exports.getFlags = async function (ctx) {
225
222
  const userId = ctx.user._id
226
223
  const docId = generateUserFlagID(userId)
227
- const db = new CouchDB(ctx.appId)
224
+ const db = getAppDB()
228
225
  let doc
229
226
  try {
230
227
  doc = await db.get(docId)
@@ -1,4 +1,3 @@
1
- const CouchDB = require("../../../db")
2
1
  const viewTemplate = require("./viewBuilder")
3
2
  const { apiFileReturn } = require("../../../utilities/fileSystem")
4
3
  const exporters = require("./exporters")
@@ -6,14 +5,14 @@ const { saveView, getView, getViews, deleteView } = require("./utils")
6
5
  const { fetchView } = require("../row")
7
6
  const { getTable } = require("../table/utils")
8
7
  const { FieldTypes } = require("../../../constants")
8
+ const { getAppDB } = require("@budibase/backend-core/context")
9
9
 
10
10
  exports.fetch = async ctx => {
11
- const db = new CouchDB(ctx.appId)
12
- ctx.body = await getViews(db)
11
+ ctx.body = await getViews()
13
12
  }
14
13
 
15
14
  exports.save = async ctx => {
16
- const db = new CouchDB(ctx.appId)
15
+ const db = getAppDB()
17
16
  const { originalName, ...viewToSave } = ctx.request.body
18
17
  const view = viewTemplate(viewToSave)
19
18
 
@@ -21,7 +20,7 @@ exports.save = async ctx => {
21
20
  ctx.throw(400, "Cannot create view without a name")
22
21
  }
23
22
 
24
- await saveView(db, originalName, viewToSave.name, view)
23
+ await saveView(originalName, viewToSave.name, view)
25
24
 
26
25
  // add views to table document
27
26
  const table = await db.get(ctx.request.body.tableId)
@@ -42,9 +41,9 @@ exports.save = async ctx => {
42
41
  }
43
42
 
44
43
  exports.destroy = async ctx => {
45
- const db = new CouchDB(ctx.appId)
44
+ const db = getAppDB()
46
45
  const viewName = decodeURI(ctx.params.viewName)
47
- const view = await deleteView(db, viewName)
46
+ const view = await deleteView(viewName)
48
47
  const table = await db.get(view.meta.tableId)
49
48
  delete table.views[viewName]
50
49
  await db.put(table)
@@ -53,9 +52,8 @@ exports.destroy = async ctx => {
53
52
  }
54
53
 
55
54
  exports.exportView = async ctx => {
56
- const db = new CouchDB(ctx.appId)
57
55
  const viewName = decodeURI(ctx.query.view)
58
- const view = await getView(db, viewName)
56
+ const view = await getView(viewName)
59
57
 
60
58
  const format = ctx.query.format
61
59
  if (!format || !Object.values(exporters.ExportFormats).includes(format)) {
@@ -83,7 +81,7 @@ exports.exportView = async ctx => {
83
81
  let schema = view && view.meta && view.meta.schema
84
82
  if (!schema) {
85
83
  const tableId = ctx.params.tableId || view.meta.tableId
86
- const table = await getTable(ctx.appId, tableId)
84
+ const table = await getTable(tableId)
87
85
  schema = table.schema
88
86
  }
89
87
 
@@ -6,8 +6,10 @@ const {
6
6
  SEPARATOR,
7
7
  } = require("../../../db/utils")
8
8
  const env = require("../../../environment")
9
+ const { getAppDB } = require("@budibase/backend-core/context")
9
10
 
10
- exports.getView = async (db, viewName) => {
11
+ exports.getView = async viewName => {
12
+ const db = getAppDB()
11
13
  if (env.SELF_HOSTED) {
12
14
  const designDoc = await db.get("_design/database")
13
15
  return designDoc.views[viewName]
@@ -22,7 +24,8 @@ exports.getView = async (db, viewName) => {
22
24
  }
23
25
  }
24
26
 
25
- exports.getViews = async db => {
27
+ exports.getViews = async () => {
28
+ const db = getAppDB()
26
29
  const response = []
27
30
  if (env.SELF_HOSTED) {
28
31
  const designDoc = await db.get("_design/database")
@@ -54,7 +57,8 @@ exports.getViews = async db => {
54
57
  return response
55
58
  }
56
59
 
57
- exports.saveView = async (db, originalName, viewName, viewTemplate) => {
60
+ exports.saveView = async (originalName, viewName, viewTemplate) => {
61
+ const db = getAppDB()
58
62
  if (env.SELF_HOSTED) {
59
63
  const designDoc = await db.get("_design/database")
60
64
  designDoc.views = {
@@ -91,7 +95,8 @@ exports.saveView = async (db, originalName, viewName, viewTemplate) => {
91
95
  }
92
96
  }
93
97
 
94
- exports.deleteView = async (db, viewName) => {
98
+ exports.deleteView = async viewName => {
99
+ const db = getAppDB()
95
100
  if (env.SELF_HOSTED) {
96
101
  const designDoc = await db.get("_design/database")
97
102
  const view = designDoc.views[viewName]
@@ -1,9 +1,9 @@
1
- const CouchDB = require("../../db")
2
1
  const { generateWebhookID, getWebhookParams } = require("../../db/utils")
3
2
  const toJsonSchema = require("to-json-schema")
4
3
  const validate = require("jsonschema").validate
5
4
  const triggers = require("../../automations/triggers")
6
- const { getDeployedAppID } = require("@budibase/backend-core/db")
5
+ const { getProdAppID } = require("@budibase/backend-core/db")
6
+ const { getAppDB, updateAppId } = require("@budibase/backend-core/context")
7
7
 
8
8
  const AUTOMATION_DESCRIPTION = "Generated from Webhook Schema"
9
9
 
@@ -23,7 +23,7 @@ exports.WebhookType = {
23
23
  }
24
24
 
25
25
  exports.fetch = async ctx => {
26
- const db = new CouchDB(ctx.appId)
26
+ const db = getAppDB()
27
27
  const response = await db.allDocs(
28
28
  getWebhookParams(null, {
29
29
  include_docs: true,
@@ -33,7 +33,7 @@ exports.fetch = async ctx => {
33
33
  }
34
34
 
35
35
  exports.save = async ctx => {
36
- const db = new CouchDB(ctx.appId)
36
+ const db = getAppDB()
37
37
  const webhook = ctx.request.body
38
38
  webhook.appId = ctx.appId
39
39
 
@@ -52,12 +52,13 @@ exports.save = async ctx => {
52
52
  }
53
53
 
54
54
  exports.destroy = async ctx => {
55
- const db = new CouchDB(ctx.appId)
55
+ const db = getAppDB()
56
56
  ctx.body = await db.remove(ctx.params.id, ctx.params.rev)
57
57
  }
58
58
 
59
59
  exports.buildSchema = async ctx => {
60
- const db = new CouchDB(ctx.params.instance)
60
+ updateAppId(ctx.params.instance)
61
+ const db = getAppDB()
61
62
  const webhook = await db.get(ctx.params.id)
62
63
  webhook.bodySchema = toJsonSchema(ctx.request.body)
63
64
  // update the automation outputs
@@ -81,9 +82,10 @@ exports.buildSchema = async ctx => {
81
82
  }
82
83
 
83
84
  exports.trigger = async ctx => {
84
- const prodAppId = getDeployedAppID(ctx.params.instance)
85
+ const prodAppId = getProdAppID(ctx.params.instance)
86
+ updateAppId(prodAppId)
85
87
  try {
86
- const db = new CouchDB(prodAppId)
88
+ const db = getAppDB()
87
89
  const webhook = await db.get(ctx.params.id)
88
90
  // validate against the schema
89
91
  if (webhook.bodySchema) {
@@ -145,6 +145,7 @@ describe("/automations", () => {
145
145
  let table = await config.createTable()
146
146
  automation.definition.trigger.inputs.tableId = table._id
147
147
  automation.definition.steps[0].inputs.row.tableId = table._id
148
+ automation.appId = config.appId
148
149
  automation = await config.createAutomation(automation)
149
150
  await setup.delay(500)
150
151
  const res = await testAutomation(config, automation)
@@ -82,7 +82,6 @@ describe("run misc tests", () => {
82
82
  dataImport.schema[col] = { type: "string" }
83
83
  }
84
84
  await tableUtils.handleDataImport(
85
- config.getAppId(),
86
85
  { userId: "test" },
87
86
  table,
88
87
  dataImport
@@ -1,10 +1,15 @@
1
1
  const setup = require("./utilities")
2
2
  const { basicScreen } = setup.structures
3
- const { checkBuilderEndpoint } = require("./utilities/TestFunctions")
3
+ const { checkBuilderEndpoint, runInProd } = require("./utilities/TestFunctions")
4
4
  const { BUILTIN_ROLE_IDS } = require("@budibase/backend-core/roles")
5
+ const { doInAppContext } = require("@budibase/backend-core/context")
5
6
 
6
7
  const route = "/test"
7
8
 
9
+ // there are checks which are disabled in test env,
10
+ // these checks need to be enabled for this test
11
+
12
+
8
13
  describe("/routing", () => {
9
14
  let request = setup.getRequest()
10
15
  let config = setup.getConfig()
@@ -26,20 +31,24 @@ describe("/routing", () => {
26
31
 
27
32
  describe("fetch", () => {
28
33
  it("prevents a public user from accessing development app", async () => {
29
- await request
30
- .get(`/api/routing/client`)
31
- .set(config.publicHeaders({ prodApp: false }))
32
- .expect(302)
34
+ await runInProd(() => {
35
+ return request
36
+ .get(`/api/routing/client`)
37
+ .set(config.publicHeaders({ prodApp: false }))
38
+ .expect(302)
39
+ })
33
40
  })
34
41
 
35
42
  it("prevents a non builder from accessing development app", async () => {
36
- await request
37
- .get(`/api/routing/client`)
38
- .set(await config.roleHeaders({
39
- roleId: BUILTIN_ROLE_IDS.BASIC,
40
- prodApp: false
41
- }))
42
- .expect(302)
43
+ await runInProd(async () => {
44
+ return request
45
+ .get(`/api/routing/client`)
46
+ .set(await config.roleHeaders({
47
+ roleId: BUILTIN_ROLE_IDS.BASIC,
48
+ prodApp: false
49
+ }))
50
+ .expect(302)
51
+ })
43
52
  })
44
53
  it("returns the correct routing for basic user", async () => {
45
54
  const res = await request
@@ -1,6 +1,7 @@
1
1
  const { outputProcessing } = require("../../../utilities/rowProcessor")
2
2
  const setup = require("./utilities")
3
3
  const { basicRow } = setup.structures
4
+ const { doInAppContext } = require("@budibase/backend-core/context")
4
5
 
5
6
  // mock the fetch for the search system
6
7
  jest.mock("node-fetch")
@@ -387,10 +388,12 @@ describe("/rows", () => {
387
388
  })
388
389
  // the environment needs configured for this
389
390
  await setup.switchToSelfHosted(async () => {
390
- const enriched = await outputProcessing({ appId: config.getAppId() }, table, [row])
391
- expect(enriched[0].attachment[0].url).toBe(
392
- `/prod-budi-app-assets/${config.getAppId()}/attachments/test/thing.csv`
393
- )
391
+ doInAppContext(config.getAppId(), async () => {
392
+ const enriched = await outputProcessing(table, [row])
393
+ expect(enriched[0].attachment[0].url).toBe(
394
+ `/prod-budi-app-assets/${config.getAppId()}/attachments/test/thing.csv`
395
+ )
396
+ })
394
397
  })
395
398
  })
396
399
  })
@@ -1,9 +1,10 @@
1
1
  const rowController = require("../../../controllers/row")
2
2
  const appController = require("../../../controllers/application")
3
- const CouchDB = require("../../../../db")
4
3
  const { AppStatus } = require("../../../../db/utils")
5
4
  const { BUILTIN_ROLE_IDS } = require("@budibase/backend-core/roles")
6
5
  const { TENANT_ID } = require("../../../../tests/utilities/structures")
6
+ const { getAppDB, doInAppContext } = require("@budibase/backend-core/context")
7
+ const env = require("../../../../environment")
7
8
 
8
9
  function Request(appId, params) {
9
10
  this.appId = appId
@@ -11,9 +12,15 @@ function Request(appId, params) {
11
12
  this.request = {}
12
13
  }
13
14
 
15
+ function runRequest(appId, controlFunc, request) {
16
+ return doInAppContext(appId, async () => {
17
+ return controlFunc(request)
18
+ })
19
+ }
20
+
14
21
  exports.getAllTableRows = async config => {
15
22
  const req = new Request(config.appId, { tableId: config.table._id })
16
- await rowController.fetch(req)
23
+ await runRequest(config.appId, rowController.fetch, req)
17
24
  return req.body
18
25
  }
19
26
 
@@ -26,14 +33,17 @@ exports.clearAllApps = async (tenantId = TENANT_ID) => {
26
33
  }
27
34
  for (let app of apps) {
28
35
  const { appId } = app
29
- await appController.delete(new Request(null, { appId }))
36
+ const req = new Request(null, { appId })
37
+ await runRequest(appId, appController.delete, req)
30
38
  }
31
39
  }
32
40
 
33
41
  exports.clearAllAutomations = async config => {
34
42
  const automations = await config.getAllAutomations()
35
43
  for (let auto of automations) {
36
- await config.deleteAutomation(auto)
44
+ await doInAppContext(config.appId, async () => {
45
+ await config.deleteAutomation(auto)
46
+ })
37
47
  }
38
48
  }
39
49
 
@@ -96,20 +106,32 @@ exports.checkPermissionsEndpoint = async ({
96
106
  .expect(403)
97
107
  }
98
108
 
99
- exports.getDB = config => {
100
- return new CouchDB(config.getAppId())
109
+ exports.getDB = () => {
110
+ return getAppDB()
101
111
  }
102
112
 
103
113
  exports.testAutomation = async (config, automation) => {
104
- return await config.request
105
- .post(`/api/automations/${automation._id}/test`)
106
- .send({
107
- row: {
108
- name: "Test",
109
- description: "TEST",
110
- },
111
- })
112
- .set(config.defaultHeaders())
113
- .expect("Content-Type", /json/)
114
- .expect(200)
114
+ return runRequest(automation.appId, async () => {
115
+ return await config.request
116
+ .post(`/api/automations/${automation._id}/test`)
117
+ .send({
118
+ row: {
119
+ name: "Test",
120
+ description: "TEST",
121
+ },
122
+ })
123
+ .set(config.defaultHeaders())
124
+ .expect("Content-Type", /json/)
125
+ .expect(200)
126
+ })
127
+ }
128
+
129
+ exports.runInProd = async func => {
130
+ const nodeEnv = env.NODE_ENV
131
+ const workerId = env.JEST_WORKER_ID
132
+ env._set("NODE_ENV", "PRODUCTION")
133
+ env._set("JEST_WORKER_ID", null)
134
+ await func()
135
+ env._set("NODE_ENV", nodeEnv)
136
+ env._set("JEST_WORKER_ID", workerId)
115
137
  }
@@ -53,13 +53,12 @@ exports.cleanInputValues = (inputs, schema) => {
53
53
  * the automation but is instead part of the Table/Table. This function will get the table schema and use it to instead
54
54
  * perform the cleanInputValues function on the input row.
55
55
  *
56
- * @param {string} appId The instance which the Table/Table is contained under.
57
56
  * @param {string} tableId The ID of the Table/Table which the schema is to be retrieved for.
58
57
  * @param {object} row The input row structure which requires clean-up after having been through template statements.
59
58
  * @returns {Promise<Object>} The cleaned up rows object, will should now have all the required primitive types.
60
59
  */
61
- exports.cleanUpRow = async (appId, tableId, row) => {
62
- let table = await getTable(appId, tableId)
60
+ exports.cleanUpRow = async (tableId, row) => {
61
+ let table = await getTable(tableId)
63
62
  return exports.cleanInputValues(row, { properties: table.schema })
64
63
  }
65
64
 
@@ -78,7 +78,6 @@ exports.run = async function ({ inputs, appId, emitter }) {
78
78
 
79
79
  try {
80
80
  inputs.row = await automationUtils.cleanUpRow(
81
- appId,
82
81
  inputs.row.tableId,
83
82
  inputs.row
84
83
  )
@@ -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(appId, tableId, inputs.row)
90
+ inputs.row = await automationUtils.cleanUpRow(tableId, inputs.row)
91
91
  }
92
92
  await rowController.patch(ctx)
93
93
  return {