@budibase/server 1.0.49-alpha.3 → 1.0.49-alpha.7

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.21e57eb4.js → index.b7cd931c.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/usageQuotas/syncApps.js +6 -9
  230. package/dist/migrations/functions/usageQuotas/syncRows.js +7 -9
  231. package/dist/package.json +4 -4
  232. package/dist/tests/utilities/TestConfiguration.js +67 -44
  233. package/dist/threads/automation.js +13 -11
  234. package/dist/threads/query.js +11 -11
  235. package/dist/tsconfig.tsbuildinfo +1 -1
  236. package/dist/utilities/fileSystem/index.js +4 -3
  237. package/dist/utilities/global.js +15 -12
  238. package/dist/utilities/index.js +7 -17
  239. package/dist/utilities/routing/index.js +5 -5
  240. package/dist/utilities/rowProcessor/index.js +9 -10
  241. package/dist/utilities/usageQuota/index.js +1 -0
  242. package/dist/utilities/usageQuota/rows.js +1 -0
  243. package/dist/utilities/users.js +3 -3
  244. package/dist/utilities/workerRequests.js +4 -4
  245. package/package.json +5 -5
  246. package/scripts/likeCypress.ts +1 -1
  247. package/src/api/controllers/application.js +35 -28
  248. package/src/api/controllers/auth.js +4 -5
  249. package/src/api/controllers/automation.js +13 -23
  250. package/src/api/controllers/cloud.js +2 -3
  251. package/src/api/controllers/component.js +3 -4
  252. package/src/api/controllers/datasource.js +9 -11
  253. package/src/api/controllers/deploy/Deployment.js +3 -7
  254. package/src/api/controllers/deploy/index.js +20 -13
  255. package/src/api/controllers/dev.js +5 -5
  256. package/src/api/controllers/layout.js +3 -3
  257. package/src/api/controllers/metadata.js +4 -9
  258. package/src/api/controllers/permission.js +4 -4
  259. package/src/api/controllers/query/import/index.ts +4 -6
  260. package/src/api/controllers/query/import/tests/index.spec.js +2 -1
  261. package/src/api/controllers/query/index.js +11 -10
  262. package/src/api/controllers/role.js +5 -5
  263. package/src/api/controllers/routing.js +5 -6
  264. package/src/api/controllers/row/ExternalRequest.ts +53 -42
  265. package/src/api/controllers/row/external.js +4 -6
  266. package/src/api/controllers/row/internal.js +29 -44
  267. package/src/api/controllers/row/internalSearch.js +11 -13
  268. package/src/api/controllers/row/staticFormula.js +10 -11
  269. package/src/api/controllers/row/utils.js +7 -6
  270. package/src/api/controllers/screen.js +5 -7
  271. package/src/api/controllers/static/index.js +4 -4
  272. package/src/api/controllers/table/bulkFormula.js +13 -23
  273. package/src/api/controllers/table/external.js +7 -10
  274. package/src/api/controllers/table/index.js +5 -5
  275. package/src/api/controllers/table/internal.js +18 -21
  276. package/src/api/controllers/table/utils.js +29 -41
  277. package/src/api/controllers/user.js +17 -20
  278. package/src/api/controllers/view/index.js +8 -10
  279. package/src/api/controllers/view/utils.js +9 -4
  280. package/src/api/controllers/webhook.js +10 -8
  281. package/src/api/routes/tests/automation.spec.js +1 -0
  282. package/src/api/routes/tests/misc.spec.js +0 -1
  283. package/src/api/routes/tests/routing.spec.js +21 -12
  284. package/src/api/routes/tests/row.spec.js +7 -4
  285. package/src/api/routes/tests/utilities/TestFunctions.js +39 -17
  286. package/src/automations/automationUtils.js +2 -3
  287. package/src/automations/steps/createRow.js +0 -1
  288. package/src/automations/steps/updateRow.js +1 -1
  289. package/src/automations/triggers.js +33 -31
  290. package/src/automations/utils.js +9 -5
  291. package/src/db/linkedRows/LinkController.js +3 -7
  292. package/src/db/linkedRows/index.js +16 -30
  293. package/src/db/linkedRows/linkUtils.js +6 -6
  294. package/src/db/tests/linkController.spec.js +0 -1
  295. package/src/db/tests/linkTests.spec.js +5 -6
  296. package/src/db/views/staticViews.js +8 -10
  297. package/src/environment.js +2 -1
  298. package/src/integrations/utils.ts +4 -1
  299. package/src/middleware/authorized.js +5 -3
  300. package/src/middleware/builder.js +2 -2
  301. package/src/middleware/currentapp.js +50 -46
  302. package/src/middleware/tests/authorized.spec.js +7 -2
  303. package/src/middleware/tests/currentapp.spec.js +6 -0
  304. package/src/middleware/usageQuota.js +2 -2
  305. package/src/migrations/functions/usageQuotas/syncApps.ts +4 -4
  306. package/src/migrations/functions/usageQuotas/syncRows.ts +5 -4
  307. package/src/module.d.ts +3 -0
  308. package/src/tests/utilities/TestConfiguration.js +69 -50
  309. package/src/threads/automation.js +17 -15
  310. package/src/threads/query.js +12 -12
  311. package/src/utilities/fileSystem/index.js +4 -3
  312. package/src/utilities/global.js +15 -12
  313. package/src/utilities/index.js +7 -17
  314. package/src/utilities/routing/index.js +5 -5
  315. package/src/utilities/rowProcessor/index.js +9 -23
  316. package/src/utilities/usageQuota/index.js +1 -0
  317. package/src/utilities/usageQuota/rows.js +1 -0
  318. package/src/utilities/users.js +3 -3
  319. package/src/utilities/workerRequests.js +4 -4
  320. package/tsconfig.json +2 -1
@@ -23,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">64.07% </span>
26
+ <span class="strong">63.9% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>132/206</span>
28
+ <span class='fraction'>131/205</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">41.41% </span>
33
+ <span class="strong">40% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>41/99</span>
35
+ <span class='fraction'>38/95</span>
36
36
  </div>
37
37
 
38
38
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">64.5% </span>
47
+ <span class="strong">64.32% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>129/200</span>
49
+ <span class='fraction'>128/199</span>
50
50
  </div>
51
51
 
52
52
 
@@ -474,20 +474,7 @@
474
474
  <a name='L415'></a><a href='#L415'>415</a>
475
475
  <a name='L416'></a><a href='#L416'>416</a>
476
476
  <a name='L417'></a><a href='#L417'>417</a>
477
- <a name='L418'></a><a href='#L418'>418</a>
478
- <a name='L419'></a><a href='#L419'>419</a>
479
- <a name='L420'></a><a href='#L420'>420</a>
480
- <a name='L421'></a><a href='#L421'>421</a>
481
- <a name='L422'></a><a href='#L422'>422</a>
482
- <a name='L423'></a><a href='#L423'>423</a>
483
- <a name='L424'></a><a href='#L424'>424</a>
484
- <a name='L425'></a><a href='#L425'>425</a>
485
- <a name='L426'></a><a href='#L426'>426</a>
486
- <a name='L427'></a><a href='#L427'>427</a>
487
- <a name='L428'></a><a href='#L428'>428</a>
488
- <a name='L429'></a><a href='#L429'>429</a>
489
- <a name='L430'></a><a href='#L430'>430</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">39x</span>
490
- <span class="cline-any cline-yes">39x</span>
477
+ <a name='L418'></a><a href='#L418'>418</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">39x</span>
491
478
  <span class="cline-any cline-neutral">&nbsp;</span>
492
479
  <span class="cline-any cline-neutral">&nbsp;</span>
493
480
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -515,6 +502,7 @@
515
502
  <span class="cline-any cline-yes">39x</span>
516
503
  <span class="cline-any cline-yes">39x</span>
517
504
  <span class="cline-any cline-yes">39x</span>
505
+ <span class="cline-any cline-yes">39x</span>
518
506
  <span class="cline-any cline-neutral">&nbsp;</span>
519
507
  <span class="cline-any cline-yes">39x</span>
520
508
  <span class="cline-any cline-no">&nbsp;</span>
@@ -536,6 +524,7 @@
536
524
  <span class="cline-any cline-yes">101x</span>
537
525
  <span class="cline-any cline-yes">101x</span>
538
526
  <span class="cline-any cline-yes">101x</span>
527
+ <span class="cline-any cline-yes">101x</span>
539
528
  <span class="cline-any cline-yes">4x</span>
540
529
  <span class="cline-any cline-yes">11x</span>
541
530
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -705,9 +694,6 @@
705
694
  <span class="cline-any cline-yes">101x</span>
706
695
  <span class="cline-any cline-neutral">&nbsp;</span>
707
696
  <span class="cline-any cline-yes">101x</span>
708
- <span class="cline-any cline-yes">101x</span>
709
- <span class="cline-any cline-neutral">&nbsp;</span>
710
- <span class="cline-any cline-yes">101x</span>
711
697
  <span class="cline-any cline-neutral">&nbsp;</span>
712
698
  <span class="cline-any cline-neutral">&nbsp;</span>
713
699
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -722,11 +708,6 @@
722
708
  <span class="cline-any cline-neutral">&nbsp;</span>
723
709
  <span class="cline-any cline-neutral">&nbsp;</span>
724
710
  <span class="cline-any cline-yes">101x</span>
725
- <span class="cline-any cline-neutral">&nbsp;</span>
726
- <span class="cline-any cline-neutral">&nbsp;</span>
727
- <span class="cline-any cline-neutral">&nbsp;</span>
728
- <span class="cline-any cline-neutral">&nbsp;</span>
729
- <span class="cline-any cline-neutral">&nbsp;</span>
730
711
  <span class="cline-any cline-yes">101x</span>
731
712
  <span class="cline-any cline-yes">101x</span>
732
713
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -735,11 +716,6 @@
735
716
  <span class="cline-any cline-neutral">&nbsp;</span>
736
717
  <span class="cline-any cline-yes">101x</span>
737
718
  <span class="cline-any cline-yes">101x</span>
738
- <span class="cline-any cline-neutral">&nbsp;</span>
739
- <span class="cline-any cline-neutral">&nbsp;</span>
740
- <span class="cline-any cline-neutral">&nbsp;</span>
741
- <span class="cline-any cline-neutral">&nbsp;</span>
742
- <span class="cline-any cline-neutral">&nbsp;</span>
743
719
  <span class="cline-any cline-yes">101x</span>
744
720
  <span class="cline-any cline-neutral">&nbsp;</span>
745
721
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -915,8 +891,7 @@
915
891
  <span class="cline-any cline-neutral">&nbsp;</span>
916
892
  <span class="cline-any cline-neutral">&nbsp;</span>
917
893
  <span class="cline-any cline-yes">39x</span>
918
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const CouchDB = require("../../../db")
919
- const csvParser = require("../../../utilities/csvParser")
894
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const csvParser = require("../../../utilities/csvParser")
920
895
  const {
921
896
  getRowParams,
922
897
  generateRowID,
@@ -943,10 +918,11 @@ const {
943
918
  const { getViews, saveView } = require("../view/utils")
944
919
  const viewTemplate = require("../view/viewBuilder")
945
920
  const usageQuota = require("../../../utilities/usageQuota")
921
+ const { getAppDB } = require("@budibase/backend-core/context")
946
922
  const { cloneDeep } = require("lodash/fp")
947
923
  &nbsp;
948
- exports.clearColumns = <span class="fstat-no" title="function not covered" >as</span>ync (appId, table, columnNames) =&gt; {
949
- const db = <span class="cstat-no" title="statement not covered" >new CouchDB(appId)</span>
924
+ exports.clearColumns = <span class="fstat-no" title="function not covered" >as</span>ync (table, columnNames) =&gt; {
925
+ const db = <span class="cstat-no" title="statement not covered" >getAppDB()</span>
950
926
  const rows = <span class="cstat-no" title="statement not covered" >await db.allDocs(</span>
951
927
  getRowParams(table._id, null, {
952
928
  include_docs: true,
@@ -960,7 +936,8 @@ exports.clearColumns = <span class="fstat-no" title="function not covered" >as</
960
936
  )
961
937
  }
962
938
  &nbsp;
963
- exports.checkForColumnUpdates = async (appId, db, oldTable, updatedTable) =&gt; {
939
+ exports.checkForColumnUpdates = async (oldTable, updatedTable) =&gt; {
940
+ const db = getAppDB()
964
941
  let updatedRows = []
965
942
  const rename = updatedTable._rename
966
943
  let deletedColumns = []
@@ -990,9 +967,9 @@ exports.checkForColumnUpdates = async (appId, db, oldTable, updatedTable) =&gt;
990
967
  })
991
968
  &nbsp;
992
969
  // cleanup any attachments from object storage for deleted attachment columns
993
- await cleanupAttachments(appId, updatedTable, { oldTable, rows: rawRows })
970
+ await cleanupAttachments(updatedTable, { oldTable, rows: rawRows })
994
971
  // Update views
995
- await exports.checkForViewUpdates(db, updatedTable, rename, deletedColumns)
972
+ await exports.checkForViewUpdates(updatedTable, rename, deletedColumns)
996
973
  delete updatedTable._rename
997
974
  }
998
975
  return { rows: updatedRows, table: updatedTable }
@@ -1019,12 +996,12 @@ exports.makeSureTableUpToDate = (table, tableToSave) =&gt; {
1019
996
  return tableToSave
1020
997
  }
1021
998
  &nbsp;
1022
- exports.handleDataImport = async (appId, user, table, dataImport) =&gt; {
999
+ exports.handleDataImport = async (user, table, dataImport) =&gt; {
1023
1000
  if (!dataImport || !dataImport.csvString) {
1024
1001
  return table
1025
1002
  }
1026
1003
  &nbsp;
1027
- const db = new CouchDB(appId)
1004
+ const db = getAppDB()
1028
1005
  // Populate the table with rows imported from CSV in a bulk update
1029
1006
  const data = await csvParser.transform({
1030
1007
  ...dataImport,
@@ -1069,8 +1046,8 @@ exports.handleDataImport = async (appId, user, table, dataImport) =&gt; {
1069
1046
  return table
1070
1047
  }
1071
1048
  &nbsp;
1072
- exports.handleSearchIndexes = async (appId, table) =&gt; {
1073
- const db = new CouchDB(appId)
1049
+ exports.handleSearchIndexes = async table =&gt; {
1050
+ const db = getAppDB()
1074
1051
  // create relevant search indexes
1075
1052
  if (table.indexes &amp;&amp; table.indexes.length &gt; 0) {
1076
1053
  const currentIndexes = await db.getIndexes()
@@ -1127,12 +1104,9 @@ exports.checkStaticTables = table =&gt; {
1127
1104
  }
1128
1105
  &nbsp;
1129
1106
  class TableSaveFunctions {
1130
- constructor({ db, ctx, oldTable, dataImport }) {
1131
- this.db = db
1132
- this.ctx = ctx
1133
- if (this.ctx &amp;&amp; this.ctx.user) {
1134
- this.appId = this.ctx.appId
1135
- }
1107
+ constructor({ user, oldTable, dataImport }) {
1108
+ this.db = getAppDB()
1109
+ this.user = user
1136
1110
  this.oldTable = oldTable
1137
1111
  this.dataImport = dataImport
1138
1112
  // any rows that need updated
@@ -1150,25 +1124,15 @@ class TableSaveFunctions {
1150
1124
  &nbsp;
1151
1125
  // when confirmed valid
1152
1126
  async mid(table) {
1153
- let response = await exports.checkForColumnUpdates(
1154
- this.appId,
1155
- this.db,
1156
- this.oldTable,
1157
- table
1158
- )
1127
+ let response = await exports.checkForColumnUpdates(this.oldTable, table)
1159
1128
  this.rows = this.rows.concat(response.rows)
1160
1129
  return table
1161
1130
  }
1162
1131
  &nbsp;
1163
1132
  // after saving
1164
1133
  async after(table) {
1165
- table = await exports.handleSearchIndexes(this.appId, table)
1166
- table = await exports.handleDataImport(
1167
- this.appId,
1168
- this.ctx.user,
1169
- table,
1170
- this.dataImport
1171
- )
1134
+ table = await exports.handleSearchIndexes(table)
1135
+ table = await exports.handleDataImport(this.user, table, this.dataImport)
1172
1136
  return table
1173
1137
  }
1174
1138
  &nbsp;
@@ -1177,8 +1141,8 @@ class TableSaveFunctions {
1177
1141
  }
1178
1142
  }
1179
1143
  &nbsp;
1180
- exports.getAllInternalTables = async appId =&gt; {
1181
- const db = new CouchDB(appId)
1144
+ exports.getAllInternalTables = async () =&gt; {
1145
+ const db = getAppDB()
1182
1146
  const internalTables = await db.allDocs(
1183
1147
  getTableParams(null, {
1184
1148
  include_docs: true,
@@ -1191,8 +1155,8 @@ exports.getAllInternalTables = async appId =&gt; {
1191
1155
  }))
1192
1156
  }
1193
1157
  &nbsp;
1194
- exports.getAllExternalTables = <span class="fstat-no" title="function not covered" >as</span>ync (appId, datasourceId) =&gt; {
1195
- const db = <span class="cstat-no" title="statement not covered" >new CouchDB(appId)</span>
1158
+ exports.getAllExternalTables = <span class="fstat-no" title="function not covered" >as</span>ync datasourceId =&gt; {
1159
+ const db = <span class="cstat-no" title="statement not covered" >getAppDB()</span>
1196
1160
  const datasource = <span class="cstat-no" title="statement not covered" >await db.get(datasourceId)</span>
1197
1161
  <span class="cstat-no" title="statement not covered" > if (!datasource || !datasource.entities) {</span>
1198
1162
  <span class="cstat-no" title="statement not covered" > throw "Datasource is not configured fully."</span>
@@ -1200,25 +1164,25 @@ exports.getAllExternalTables = <span class="fstat-no" title="function not covere
1200
1164
  <span class="cstat-no" title="statement not covered" > return datasource.entities</span>
1201
1165
  }
1202
1166
  &nbsp;
1203
- exports.getExternalTable = <span class="fstat-no" title="function not covered" >as</span>ync (appId, datasourceId, tableName) =&gt; {
1204
- const entities = <span class="cstat-no" title="statement not covered" >await exports.getAllExternalTables(appId, datasourceId)</span>
1167
+ exports.getExternalTable = <span class="fstat-no" title="function not covered" >as</span>ync (datasourceId, tableName) =&gt; {
1168
+ const entities = <span class="cstat-no" title="statement not covered" >await exports.getAllExternalTables(datasourceId)</span>
1205
1169
  <span class="cstat-no" title="statement not covered" > return entities[tableName]</span>
1206
1170
  }
1207
1171
  &nbsp;
1208
- exports.getTable = async (appId, tableId) =&gt; {
1209
- const db = new CouchDB(appId)
1172
+ exports.getTable = async tableId =&gt; {
1173
+ const db = getAppDB()
1210
1174
  <span class="missing-if-branch" title="if path not taken" >I</span>if (isExternalTable(tableId)) {
1211
1175
  let { datasourceId, tableName } = <span class="cstat-no" title="statement not covered" >breakExternalTableId(tableId)</span>
1212
1176
  const datasource = <span class="cstat-no" title="statement not covered" >await db.get(datasourceId)</span>
1213
- const table = <span class="cstat-no" title="statement not covered" >await exports.getExternalTable(appId, datasourceId, tableName)</span>
1177
+ const table = <span class="cstat-no" title="statement not covered" >await exports.getExternalTable(datasourceId, tableName)</span>
1214
1178
  <span class="cstat-no" title="statement not covered" > return { ...table, sql: isSQL(datasource) }</span>
1215
1179
  } else {
1216
1180
  return db.get(tableId)
1217
1181
  }
1218
1182
  }
1219
1183
  &nbsp;
1220
- exports.checkForViewUpdates = async (db, table, rename, deletedColumns) =&gt; {
1221
- const views = await getViews(db)
1184
+ exports.checkForViewUpdates = async (table, rename, deletedColumns) =&gt; {
1185
+ const views = await getViews()
1222
1186
  const tableViews = views.filter(<span class="fstat-no" title="function not covered" >vi</span>ew =&gt; <span class="cstat-no" title="statement not covered" >view.meta.tableId === table._id)</span>
1223
1187
  &nbsp;
1224
1188
  // Check each table view to see if impacted by this table action
@@ -1280,7 +1244,7 @@ exports.checkForViewUpdates = async (db, table, rename, deletedColumns) =&gt; {
1280
1244
  // Update view if required
1281
1245
  <span class="cstat-no" title="statement not covered" > if (needsUpdated) {</span>
1282
1246
  const newViewTemplate = <span class="cstat-no" title="statement not covered" >viewTemplate(view.meta)</span>
1283
- <span class="cstat-no" title="statement not covered" > await saveView(db, null, view.name, newViewTemplate)</span>
1247
+ <span class="cstat-no" title="statement not covered" > await saveView(null, view.name, newViewTemplate)</span>
1284
1248
  <span class="cstat-no" title="statement not covered" > if (!newViewTemplate.meta.schema) {</span>
1285
1249
  <span class="cstat-no" title="statement not covered" > newViewTemplate.meta.schema = table.schema</span>
1286
1250
  }
@@ -1351,7 +1315,7 @@ exports.TableSaveFunctions = TableSaveFunctions
1351
1315
  <div class='footer quiet pad2 space-top1 center small'>
1352
1316
  Code coverage generated by
1353
1317
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1354
- at Mon Jan 31 2022 17:55:41 GMT+0000 (Coordinated Universal Time)
1318
+ at Tue Feb 01 2022 20:38:35 GMT+0000 (Coordinated Universal Time)
1355
1319
  </div>
1356
1320
  </div>
1357
1321
  <script src="../../../prettify.js"></script>
@@ -181,7 +181,7 @@ exports.downloadTemplate = async function (ctx) {
181
181
  <div class='footer quiet pad2 space-top1 center small'>
182
182
  Code coverage generated by
183
183
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
184
- at Mon Jan 31 2022 17:55:41 GMT+0000 (Coordinated Universal Time)
184
+ at Tue Feb 01 2022 20:38:35 GMT+0000 (Coordinated Universal Time)
185
185
  </div>
186
186
  </div>
187
187
  <script src="../../prettify.js"></script>
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">32.23% </span>
26
+ <span class="strong">31.66% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>39/121</span>
28
+ <span class='fraction'>38/120</span>
29
29
  </div>
30
30
 
31
31
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">32.5% </span>
47
+ <span class="strong">31.93% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>39/120</span>
49
+ <span class='fraction'>38/119</span>
50
50
  </div>
51
51
 
52
52
 
@@ -289,11 +289,7 @@
289
289
  <a name='L230'></a><a href='#L230'>230</a>
290
290
  <a name='L231'></a><a href='#L231'>231</a>
291
291
  <a name='L232'></a><a href='#L232'>232</a>
292
- <a name='L233'></a><a href='#L233'>233</a>
293
- <a name='L234'></a><a href='#L234'>234</a>
294
- <a name='L235'></a><a href='#L235'>235</a>
295
- <a name='L236'></a><a href='#L236'>236</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">39x</span>
296
- <span class="cline-any cline-neutral">&nbsp;</span>
292
+ <a name='L233'></a><a href='#L233'>233</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
297
293
  <span class="cline-any cline-neutral">&nbsp;</span>
298
294
  <span class="cline-any cline-neutral">&nbsp;</span>
299
295
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -306,12 +302,14 @@
306
302
  <span class="cline-any cline-neutral">&nbsp;</span>
307
303
  <span class="cline-any cline-neutral">&nbsp;</span>
308
304
  <span class="cline-any cline-neutral">&nbsp;</span>
305
+ <span class="cline-any cline-neutral">&nbsp;</span>
309
306
  <span class="cline-any cline-yes">39x</span>
310
307
  <span class="cline-any cline-yes">39x</span>
311
308
  <span class="cline-any cline-yes">39x</span>
312
309
  <span class="cline-any cline-neutral">&nbsp;</span>
313
310
  <span class="cline-any cline-neutral">&nbsp;</span>
314
311
  <span class="cline-any cline-yes">2x</span>
312
+ <span class="cline-any cline-yes">2x</span>
315
313
  <span class="cline-any cline-neutral">&nbsp;</span>
316
314
  <span class="cline-any cline-neutral">&nbsp;</span>
317
315
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -352,9 +350,6 @@
352
350
  <span class="cline-any cline-neutral">&nbsp;</span>
353
351
  <span class="cline-any cline-no">&nbsp;</span>
354
352
  <span class="cline-any cline-no">&nbsp;</span>
355
- <span class="cline-any cline-neutral">&nbsp;</span>
356
- <span class="cline-any cline-neutral">&nbsp;</span>
357
- <span class="cline-any cline-neutral">&nbsp;</span>
358
353
  <span class="cline-any cline-no">&nbsp;</span>
359
354
  <span class="cline-any cline-no">&nbsp;</span>
360
355
  <span class="cline-any cline-no">&nbsp;</span>
@@ -469,7 +464,6 @@
469
464
  <span class="cline-any cline-yes">39x</span>
470
465
  <span class="cline-any cline-yes">1x</span>
471
466
  <span class="cline-any cline-yes">1x</span>
472
- <span class="cline-any cline-yes">1x</span>
473
467
  <span class="cline-any cline-neutral">&nbsp;</span>
474
468
  <span class="cline-any cline-yes">1x</span>
475
469
  <span class="cline-any cline-yes">1x</span>
@@ -527,8 +521,7 @@
527
521
  <span class="cline-any cline-neutral">&nbsp;</span>
528
522
  <span class="cline-any cline-no">&nbsp;</span>
529
523
  <span class="cline-any cline-neutral">&nbsp;</span>
530
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const CouchDB = require("../../db")
531
- const {
524
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const {
532
525
  generateUserMetadataID,
533
526
  getUserMetadataParams,
534
527
  generateUserFlagID,
@@ -540,12 +533,14 @@ const { isEqual } = require("lodash")
540
533
  const { BUILTIN_ROLE_IDS } = require("@budibase/backend-core/roles")
541
534
  const {
542
535
  getDevelopmentAppID,
543
- getDeployedAppIDs,
536
+ getProdAppIDs,
537
+ dbExists,
544
538
  } = require("@budibase/backend-core/db")
545
- const { doesDatabaseExist } = require("../../utilities")
546
539
  const { UserStatus } = require("@budibase/backend-core/constants")
540
+ const { getAppDB } = require("@budibase/backend-core/context")
547
541
  &nbsp;
548
- async function rawMetadata(db) {
542
+ async function rawMetadata() {
543
+ const db = getAppDB()
549
544
  return (
550
545
  await db.allDocs(
551
546
  getUserMetadataParams(null, {
@@ -583,13 +578,10 @@ function <span class="fstat-no" title="function not covered" >combineMetadataAnd
583
578
  <span class="cstat-no" title="statement not covered" > return null</span>
584
579
  }
585
580
  &nbsp;
586
- exports.syncGlobalUsers = <span class="fstat-no" title="function not covered" >as</span>ync appId =&gt; {
581
+ exports.syncGlobalUsers = <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {
587
582
  // sync user metadata
588
- const db = <span class="cstat-no" title="statement not covered" >new CouchDB(appId)</span>
589
- const [users, metadata] = <span class="cstat-no" title="statement not covered" >await Promise.all([</span>
590
- getGlobalUsers(appId),
591
- rawMetadata(db),
592
- ])
583
+ const db = <span class="cstat-no" title="statement not covered" >getAppDB()</span>
584
+ const [users, metadata] = <span class="cstat-no" title="statement not covered" >await Promise.all([getGlobalUsers(), rawMetadata()])</span>
593
585
  const toWrite = <span class="cstat-no" title="statement not covered" >[]</span>
594
586
  <span class="cstat-no" title="statement not covered" > for (let user of users) {</span>
595
587
  const combined = <span class="cstat-no" title="statement not covered" >await combineMetadataAndUser(user, metadata)</span>
@@ -623,7 +615,7 @@ exports.syncUser = <span class="fstat-no" title="function not covered" >as</span
623
615
  let prodAppIds
624
616
  // if they are a builder then get all production app IDs
625
617
  <span class="cstat-no" title="statement not covered" > if ((user.builder &amp;&amp; user.builder.global) || deleting) {</span>
626
- <span class="cstat-no" title="statement not covered" > prodAppIds = await getDeployedAppIDs(CouchDB)</span>
618
+ <span class="cstat-no" title="statement not covered" > prodAppIds = await getProdAppIDs()</span>
627
619
  } else {
628
620
  <span class="cstat-no" title="statement not covered" > prodAppIds = Object.entries(roles)</span>
629
621
  .filter(<span class="fstat-no" title="function not covered" >en</span>try =&gt; <span class="cstat-no" title="statement not covered" >entry[1] !== BUILTIN_ROLE_IDS.PUBLIC)</span>
@@ -633,10 +625,10 @@ exports.syncUser = <span class="fstat-no" title="function not covered" >as</span
633
625
  const roleId = <span class="cstat-no" title="statement not covered" >roles[prodAppId]</span>
634
626
  const devAppId = <span class="cstat-no" title="statement not covered" >getDevelopmentAppID(prodAppId)</span>
635
627
  <span class="cstat-no" title="statement not covered" > for (let appId of [prodAppId, devAppId]) {</span>
636
- <span class="cstat-no" title="statement not covered" > if (!(await doesDatabaseExist(appId))) {</span>
628
+ <span class="cstat-no" title="statement not covered" > if (!(await dbExists(appId))) {</span>
637
629
  <span class="cstat-no" title="statement not covered" > continue</span>
638
630
  }
639
- const db = <span class="cstat-no" title="statement not covered" >new CouchDB(appId)</span>
631
+ const db = <span class="cstat-no" title="statement not covered" >getAppDB()</span>
640
632
  const metadataId = <span class="cstat-no" title="statement not covered" >generateUserMetadataID(userId)</span>
641
633
  let metadata
642
634
  <span class="cstat-no" title="statement not covered" > try {</span>
@@ -672,8 +664,8 @@ exports.syncUser = <span class="fstat-no" title="function not covered" >as</span
672
664
  }
673
665
  &nbsp;
674
666
  exports.fetchMetadata = async function (ctx) {
675
- const database = new CouchDB(ctx.appId)
676
- const global = await getGlobalUsers(ctx.appId)
667
+ const database = getAppDB()
668
+ const global = await getGlobalUsers()
677
669
  const metadata = await rawMetadata(database)
678
670
  const users = []
679
671
  for (let user of global) {
@@ -702,8 +694,7 @@ exports.updateSelfMetadata = <span class="fstat-no" title="function not covered"
702
694
  }
703
695
  &nbsp;
704
696
  exports.updateMetadata = async function (ctx) {
705
- const appId = ctx.appId
706
- const db = new CouchDB(appId)
697
+ const db = getAppDB()
707
698
  const user = ctx.request.body
708
699
  // this isn't applicable to the user
709
700
  delete user.roles
@@ -715,7 +706,7 @@ exports.updateMetadata = async function (ctx) {
715
706
  }
716
707
  &nbsp;
717
708
  exports.destroyMetadata = async function (ctx) {
718
- const db = new CouchDB(ctx.appId)
709
+ const db = getAppDB()
719
710
  try {
720
711
  const dbUser = await db.get(ctx.params.id)
721
712
  <span class="cstat-no" title="statement not covered" > await db.remove(dbUser._id, dbUser._rev)</span>
@@ -738,7 +729,7 @@ exports.setFlag = <span class="fstat-no" title="function not covered" >as</span>
738
729
  <span class="cstat-no" title="statement not covered" > ctx.throw(400, "Must supply a 'flag' field in request body.")</span>
739
730
  }
740
731
  const flagDocId = <span class="cstat-no" title="statement not covered" >generateUserFlagID(userId)</span>
741
- const db = <span class="cstat-no" title="statement not covered" >new CouchDB(ctx.appId)</span>
732
+ const db = <span class="cstat-no" title="statement not covered" >getAppDB()</span>
742
733
  let doc
743
734
  <span class="cstat-no" title="statement not covered" > try {</span>
744
735
  <span class="cstat-no" title="statement not covered" > doc = await db.get(flagDocId)</span>
@@ -753,7 +744,7 @@ exports.setFlag = <span class="fstat-no" title="function not covered" >as</span>
753
744
  exports.getFlags = <span class="fstat-no" title="function not covered" >as</span>ync function (ctx) {
754
745
  const userId = <span class="cstat-no" title="statement not covered" >ctx.user._id</span>
755
746
  const docId = <span class="cstat-no" title="statement not covered" >generateUserFlagID(userId)</span>
756
- const db = <span class="cstat-no" title="statement not covered" >new CouchDB(ctx.appId)</span>
747
+ const db = <span class="cstat-no" title="statement not covered" >getAppDB()</span>
757
748
  let doc
758
749
  <span class="cstat-no" title="statement not covered" > try {</span>
759
750
  <span class="cstat-no" title="statement not covered" > doc = await db.get(docId)</span>
@@ -769,7 +760,7 @@ exports.getFlags = <span class="fstat-no" title="function not covered" >as</span
769
760
  <div class='footer quiet pad2 space-top1 center small'>
770
761
  Code coverage generated by
771
762
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
772
- at Mon Jan 31 2022 17:55:41 GMT+0000 (Coordinated Universal Time)
763
+ at Tue Feb 01 2022 20:38:35 GMT+0000 (Coordinated Universal Time)
773
764
  </div>
774
765
  </div>
775
766
  <script src="../../prettify.js"></script>
@@ -133,7 +133,7 @@ exports.ExportFormats = {
133
133
  <div class='footer quiet pad2 space-top1 center small'>
134
134
  Code coverage generated by
135
135
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
136
- at Mon Jan 31 2022 17:55:41 GMT+0000 (Coordinated Universal Time)
136
+ at Tue Feb 01 2022 20:38:35 GMT+0000 (Coordinated Universal Time)
137
137
  </div>
138
138
  </div>
139
139
  <script src="../../../prettify.js"></script>
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">73.43% </span>
26
+ <span class="strong">73.84% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>141/192</span>
28
+ <span class='fraction'>144/195</span>
29
29
  </div>
30
30
 
31
31
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">73.68% </span>
47
+ <span class="strong">74.09% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>140/190</span>
49
+ <span class='fraction'>143/193</span>
50
50
  </div>
51
51
 
52
52
 
@@ -89,32 +89,32 @@
89
89
 
90
90
  <tr>
91
91
  <td class="file high" data-value="index.js"><a href="index.js.html">index.js</a></td>
92
- <td data-value="88.73" class="pic high">
92
+ <td data-value="88.4" class="pic high">
93
93
  <div class="chart"><div class="cover-fill" style="width: 88%"></div><div class="cover-empty" style="width: 12%"></div></div>
94
94
  </td>
95
- <td data-value="88.73" class="pct high">88.73%</td>
96
- <td data-value="71" class="abs high">63/71</td>
95
+ <td data-value="88.4" class="pct high">88.4%</td>
96
+ <td data-value="69" class="abs high">61/69</td>
97
97
  <td data-value="72" class="pct medium">72%</td>
98
98
  <td data-value="25" class="abs medium">18/25</td>
99
99
  <td data-value="62.5" class="pct medium">62.5%</td>
100
100
  <td data-value="8" class="abs medium">5/8</td>
101
- <td data-value="90" class="pct high">90%</td>
102
- <td data-value="70" class="abs high">63/70</td>
101
+ <td data-value="89.7" class="pct high">89.7%</td>
102
+ <td data-value="68" class="abs high">61/68</td>
103
103
  </tr>
104
104
 
105
105
  <tr>
106
106
  <td class="file medium" data-value="utils.js"><a href="utils.js.html">utils.js</a></td>
107
- <td data-value="50" class="pic medium">
108
- <div class="chart"><div class="cover-fill" style="width: 50%"></div><div class="cover-empty" style="width: 50%"></div></div>
107
+ <td data-value="53.08" class="pic medium">
108
+ <div class="chart"><div class="cover-fill" style="width: 53%"></div><div class="cover-empty" style="width: 47%"></div></div>
109
109
  </td>
110
- <td data-value="50" class="pct medium">50%</td>
111
- <td data-value="76" class="abs medium">38/76</td>
110
+ <td data-value="53.08" class="pct medium">53.08%</td>
111
+ <td data-value="81" class="abs medium">43/81</td>
112
112
  <td data-value="34.61" class="pct low">34.61%</td>
113
113
  <td data-value="26" class="abs low">9/26</td>
114
114
  <td data-value="66.66" class="pct medium">66.66%</td>
115
115
  <td data-value="9" class="abs medium">6/9</td>
116
- <td data-value="50" class="pct medium">50%</td>
117
- <td data-value="76" class="abs medium">38/76</td>
116
+ <td data-value="53.08" class="pct medium">53.08%</td>
117
+ <td data-value="81" class="abs medium">43/81</td>
118
118
  </tr>
119
119
 
120
120
  <tr>
@@ -140,7 +140,7 @@
140
140
  <div class='footer quiet pad2 space-top1 center small'>
141
141
  Code coverage generated by
142
142
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
143
- at Mon Jan 31 2022 17:55:41 GMT+0000 (Coordinated Universal Time)
143
+ at Tue Feb 01 2022 20:38:35 GMT+0000 (Coordinated Universal Time)
144
144
  </div>
145
145
  </div>
146
146
  <script src="../../../prettify.js"></script>