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

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 (203) hide show
  1. package/builder/assets/{index.dd9e386f.css → index.ba78c49d.css} +1 -1
  2. package/builder/assets/{index.8184eed9.js → index.ed1cf508.js} +205 -204
  3. package/builder/assets/{vendor.3bd2f661.js → vendor.d526bfe8.js} +1 -1
  4. package/builder/index.html +3 -3
  5. package/coverage/clover.xml +844 -680
  6. package/coverage/coverage-final.json +12 -10
  7. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/application.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/component.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
  16. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/index.html +1 -1
  18. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  23. package/coverage/lcov-report/api/controllers/query/index.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/index.html +40 -25
  29. package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/row/internal.js.html +60 -123
  31. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +35 -11
  32. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +551 -0
  33. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  34. package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +629 -0
  37. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/table/index.html +45 -30
  39. package/coverage/lcov-report/api/controllers/table/index.js.html +11 -53
  40. package/coverage/lcov-report/api/controllers/table/internal.js.html +25 -7
  41. package/coverage/lcov-report/api/controllers/table/utils.js.html +136 -16
  42. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  43. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  44. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  45. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  46. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  47. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  48. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  49. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  50. package/coverage/lcov-report/api/index.html +1 -1
  51. package/coverage/lcov-report/api/index.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/index.html +1 -1
  64. package/coverage/lcov-report/api/routes/index.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/static.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  79. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  80. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  81. package/coverage/lcov-report/automations/actions.js.html +1 -1
  82. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  83. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  84. package/coverage/lcov-report/automations/index.html +1 -1
  85. package/coverage/lcov-report/automations/index.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/index.html +1 -1
  95. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  99. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  100. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  101. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  102. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  103. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  104. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  105. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  106. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  107. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  108. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  109. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  110. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  111. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  112. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  113. package/coverage/lcov-report/automations/utils.js.html +1 -1
  114. package/coverage/lcov-report/constants/index.html +5 -5
  115. package/coverage/lcov-report/constants/index.js.html +19 -4
  116. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  117. package/coverage/lcov-report/constants/screens.js.html +1 -1
  118. package/coverage/lcov-report/db/client.js.html +1 -1
  119. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  120. package/coverage/lcov-report/db/index.html +1 -1
  121. package/coverage/lcov-report/db/index.js.html +1 -1
  122. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  123. package/coverage/lcov-report/db/linkedRows/index.html +10 -10
  124. package/coverage/lcov-report/db/linkedRows/index.js.html +10 -13
  125. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  126. package/coverage/lcov-report/db/newid.js.html +1 -1
  127. package/coverage/lcov-report/db/utils.js.html +5 -5
  128. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  129. package/coverage/lcov-report/events/index.html +1 -1
  130. package/coverage/lcov-report/events/index.js.html +1 -1
  131. package/coverage/lcov-report/events/utils.js.html +1 -1
  132. package/coverage/lcov-report/index.html +44 -44
  133. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  134. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  135. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  136. package/coverage/lcov-report/middleware/authorized.js.html +1 -1
  137. package/coverage/lcov-report/middleware/builder.js.html +1 -1
  138. package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
  139. package/coverage/lcov-report/middleware/index.html +1 -1
  140. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  141. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  142. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  143. package/coverage/lcov-report/middleware/usageQuota.js.html +1 -1
  144. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  145. package/coverage/lcov-report/migrations/usageQuotas/index.html +1 -1
  146. package/coverage/lcov-report/migrations/usageQuotas/index.js.html +1 -1
  147. package/coverage/lcov-report/migrations/usageQuotas/syncApps.js.html +1 -1
  148. package/coverage/lcov-report/migrations/usageQuotas/syncRows.js.html +1 -1
  149. package/coverage/lcov-report/threads/automation.js.html +1 -1
  150. package/coverage/lcov-report/threads/index.html +1 -1
  151. package/coverage/lcov-report/threads/index.js.html +1 -1
  152. package/coverage/lcov-report/threads/query.js.html +1 -1
  153. package/coverage/lcov-report/threads/utils.js.html +1 -1
  154. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  155. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  156. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  157. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  158. package/coverage/lcov-report/utilities/global.js.html +1 -1
  159. package/coverage/lcov-report/utilities/index.html +1 -1
  160. package/coverage/lcov-report/utilities/index.js.html +1 -1
  161. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
  162. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  163. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  164. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  165. package/coverage/lcov-report/utilities/rowProcessor/index.html +27 -27
  166. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +65 -29
  167. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +73 -25
  168. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  169. package/coverage/lcov-report/utilities/security.js.html +1 -1
  170. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  171. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  172. package/coverage/lcov-report/utilities/usageQuota/index.js.html +1 -1
  173. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
  174. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  175. package/coverage/lcov-report/utilities/users.js.html +1 -1
  176. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  177. package/coverage/lcov.info +1509 -1173
  178. package/dist/api/controllers/row/internal.js +30 -53
  179. package/dist/api/controllers/row/internalSearch.js +12 -4
  180. package/dist/api/controllers/row/staticFormula.js +147 -0
  181. package/dist/api/controllers/table/bulkFormula.js +160 -0
  182. package/dist/api/controllers/table/index.js +3 -6
  183. package/dist/api/controllers/table/internal.js +7 -0
  184. package/dist/api/controllers/table/utils.js +32 -10
  185. package/dist/constants/index.js +4 -0
  186. package/dist/db/linkedRows/index.js +4 -5
  187. package/dist/package.json +4 -4
  188. package/dist/tsconfig.tsbuildinfo +1 -1
  189. package/dist/utilities/rowProcessor/index.js +18 -11
  190. package/dist/utilities/rowProcessor/utils.js +14 -4
  191. package/package.json +5 -5
  192. package/src/api/controllers/row/internal.js +29 -50
  193. package/src/api/controllers/row/internalSearch.js +12 -4
  194. package/src/api/controllers/row/staticFormula.js +157 -0
  195. package/src/api/controllers/table/bulkFormula.js +183 -0
  196. package/src/api/controllers/table/index.js +3 -17
  197. package/src/api/controllers/table/internal.js +7 -1
  198. package/src/api/controllers/table/utils.js +48 -8
  199. package/src/constants/index.js +5 -0
  200. package/src/db/linkedRows/index.js +4 -5
  201. package/src/definitions/common.ts +3 -0
  202. package/src/utilities/rowProcessor/index.js +24 -12
  203. package/src/utilities/rowProcessor/utils.js +23 -7
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">83.18% </span>
26
+ <span class="strong">86.05% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>183/220</span>
28
+ <span class='fraction'>179/208</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">60.93% </span>
33
+ <span class="strong">63.33% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>39/64</span>
35
+ <span class='fraction'>38/60</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">92% </span>
40
+ <span class="strong">91.66% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>23/25</span>
42
+ <span class='fraction'>22/24</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">83.17% </span>
47
+ <span class="strong">86.13% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>178/214</span>
49
+ <span class='fraction'>174/202</span>
50
50
  </div>
51
51
 
52
52
 
@@ -492,28 +492,7 @@
492
492
  <a name='L433'></a><a href='#L433'>433</a>
493
493
  <a name='L434'></a><a href='#L434'>434</a>
494
494
  <a name='L435'></a><a href='#L435'>435</a>
495
- <a name='L436'></a><a href='#L436'>436</a>
496
- <a name='L437'></a><a href='#L437'>437</a>
497
- <a name='L438'></a><a href='#L438'>438</a>
498
- <a name='L439'></a><a href='#L439'>439</a>
499
- <a name='L440'></a><a href='#L440'>440</a>
500
- <a name='L441'></a><a href='#L441'>441</a>
501
- <a name='L442'></a><a href='#L442'>442</a>
502
- <a name='L443'></a><a href='#L443'>443</a>
503
- <a name='L444'></a><a href='#L444'>444</a>
504
- <a name='L445'></a><a href='#L445'>445</a>
505
- <a name='L446'></a><a href='#L446'>446</a>
506
- <a name='L447'></a><a href='#L447'>447</a>
507
- <a name='L448'></a><a href='#L448'>448</a>
508
- <a name='L449'></a><a href='#L449'>449</a>
509
- <a name='L450'></a><a href='#L450'>450</a>
510
- <a name='L451'></a><a href='#L451'>451</a>
511
- <a name='L452'></a><a href='#L452'>452</a>
512
- <a name='L453'></a><a href='#L453'>453</a>
513
- <a name='L454'></a><a href='#L454'>454</a>
514
- <a name='L455'></a><a href='#L455'>455</a>
515
- <a name='L456'></a><a href='#L456'>456</a>
516
- <a name='L457'></a><a href='#L457'>457</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">37x</span>
495
+ <a name='L436'></a><a href='#L436'>436</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">37x</span>
517
496
  <span class="cline-any cline-yes">37x</span>
518
497
  <span class="cline-any cline-neutral">&nbsp;</span>
519
498
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -526,8 +505,6 @@
526
505
  <span class="cline-any cline-neutral">&nbsp;</span>
527
506
  <span class="cline-any cline-neutral">&nbsp;</span>
528
507
  <span class="cline-any cline-neutral">&nbsp;</span>
529
- <span class="cline-any cline-neutral">&nbsp;</span>
530
- <span class="cline-any cline-yes">37x</span>
531
508
  <span class="cline-any cline-yes">37x</span>
532
509
  <span class="cline-any cline-yes">37x</span>
533
510
  <span class="cline-any cline-yes">37x</span>
@@ -542,6 +519,7 @@
542
519
  <span class="cline-any cline-neutral">&nbsp;</span>
543
520
  <span class="cline-any cline-yes">37x</span>
544
521
  <span class="cline-any cline-yes">37x</span>
522
+ <span class="cline-any cline-yes">37x</span>
545
523
  <span class="cline-any cline-neutral">&nbsp;</span>
546
524
  <span class="cline-any cline-yes">37x</span>
547
525
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -550,32 +528,29 @@
550
528
  <span class="cline-any cline-neutral">&nbsp;</span>
551
529
  <span class="cline-any cline-neutral">&nbsp;</span>
552
530
  <span class="cline-any cline-neutral">&nbsp;</span>
553
- <span class="cline-any cline-yes">73x</span>
531
+ <span class="cline-any cline-yes">6x</span>
532
+ <span class="cline-any cline-yes">6x</span>
533
+ <span class="cline-any cline-yes">6x</span>
554
534
  <span class="cline-any cline-neutral">&nbsp;</span>
535
+ <span class="cline-any cline-yes">6x</span>
536
+ <span class="cline-any cline-yes">6x</span>
537
+ <span class="cline-any cline-yes">6x</span>
555
538
  <span class="cline-any cline-neutral">&nbsp;</span>
556
539
  <span class="cline-any cline-neutral">&nbsp;</span>
557
- <span class="cline-any cline-yes">73x</span>
558
- <span class="cline-any cline-no">&nbsp;</span>
540
+ <span class="cline-any cline-yes">1x</span>
559
541
  <span class="cline-any cline-no">&nbsp;</span>
560
542
  <span class="cline-any cline-neutral">&nbsp;</span>
561
- <span class="cline-any cline-no">&nbsp;</span>
562
- <span class="cline-any cline-no">&nbsp;</span>
543
+ <span class="cline-any cline-yes">1x</span>
563
544
  <span class="cline-any cline-no">&nbsp;</span>
564
545
  <span class="cline-any cline-neutral">&nbsp;</span>
565
546
  <span class="cline-any cline-neutral">&nbsp;</span>
566
- <span class="cline-any cline-no">&nbsp;</span>
547
+ <span class="cline-any cline-yes">5x</span>
567
548
  <span class="cline-any cline-no">&nbsp;</span>
568
549
  <span class="cline-any cline-neutral">&nbsp;</span>
550
+ <span class="cline-any cline-yes">5x</span>
569
551
  <span class="cline-any cline-no">&nbsp;</span>
570
552
  <span class="cline-any cline-neutral">&nbsp;</span>
571
- <span class="cline-any cline-neutral">&nbsp;</span>
572
- <span class="cline-any cline-neutral">&nbsp;</span>
573
- <span class="cline-any cline-yes">73x</span>
574
- <span class="cline-any cline-yes">73x</span>
575
- <span class="cline-any cline-neutral">&nbsp;</span>
576
- <span class="cline-any cline-yes">73x</span>
577
- <span class="cline-any cline-yes">73x</span>
578
- <span class="cline-any cline-neutral">&nbsp;</span>
553
+ <span class="cline-any cline-yes">5x</span>
579
554
  <span class="cline-any cline-neutral">&nbsp;</span>
580
555
  <span class="cline-any cline-neutral">&nbsp;</span>
581
556
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -594,32 +569,6 @@
594
569
  <span class="cline-any cline-yes">5x</span>
595
570
  <span class="cline-any cline-neutral">&nbsp;</span>
596
571
  <span class="cline-any cline-neutral">&nbsp;</span>
597
- <span class="cline-any cline-neutral">&nbsp;</span>
598
- <span class="cline-any cline-yes">6x</span>
599
- <span class="cline-any cline-yes">6x</span>
600
- <span class="cline-any cline-yes">6x</span>
601
- <span class="cline-any cline-neutral">&nbsp;</span>
602
- <span class="cline-any cline-yes">6x</span>
603
- <span class="cline-any cline-yes">6x</span>
604
- <span class="cline-any cline-yes">6x</span>
605
- <span class="cline-any cline-neutral">&nbsp;</span>
606
- <span class="cline-any cline-neutral">&nbsp;</span>
607
- <span class="cline-any cline-yes">1x</span>
608
- <span class="cline-any cline-no">&nbsp;</span>
609
- <span class="cline-any cline-neutral">&nbsp;</span>
610
- <span class="cline-any cline-yes">1x</span>
611
- <span class="cline-any cline-no">&nbsp;</span>
612
- <span class="cline-any cline-neutral">&nbsp;</span>
613
- <span class="cline-any cline-neutral">&nbsp;</span>
614
- <span class="cline-any cline-yes">5x</span>
615
- <span class="cline-any cline-no">&nbsp;</span>
616
- <span class="cline-any cline-neutral">&nbsp;</span>
617
- <span class="cline-any cline-yes">5x</span>
618
- <span class="cline-any cline-no">&nbsp;</span>
619
- <span class="cline-any cline-neutral">&nbsp;</span>
620
- <span class="cline-any cline-yes">5x</span>
621
- <span class="cline-any cline-neutral">&nbsp;</span>
622
- <span class="cline-any cline-neutral">&nbsp;</span>
623
572
  <span class="cline-any cline-yes">37x</span>
624
573
  <span class="cline-any cline-yes">5x</span>
625
574
  <span class="cline-any cline-yes">5x</span>
@@ -680,6 +629,9 @@
680
629
  <span class="cline-any cline-yes">4x</span>
681
630
  <span class="cline-any cline-neutral">&nbsp;</span>
682
631
  <span class="cline-any cline-neutral">&nbsp;</span>
632
+ <span class="cline-any cline-neutral">&nbsp;</span>
633
+ <span class="cline-any cline-neutral">&nbsp;</span>
634
+ <span class="cline-any cline-neutral">&nbsp;</span>
683
635
  <span class="cline-any cline-yes">37x</span>
684
636
  <span class="cline-any cline-yes">70x</span>
685
637
  <span class="cline-any cline-yes">70x</span>
@@ -714,6 +666,9 @@
714
666
  <span class="cline-any cline-yes">69x</span>
715
667
  <span class="cline-any cline-neutral">&nbsp;</span>
716
668
  <span class="cline-any cline-neutral">&nbsp;</span>
669
+ <span class="cline-any cline-neutral">&nbsp;</span>
670
+ <span class="cline-any cline-neutral">&nbsp;</span>
671
+ <span class="cline-any cline-neutral">&nbsp;</span>
717
672
  <span class="cline-any cline-yes">37x</span>
718
673
  <span class="cline-any cline-yes">7x</span>
719
674
  <span class="cline-any cline-yes">7x</span>
@@ -818,6 +773,8 @@
818
773
  <span class="cline-any cline-neutral">&nbsp;</span>
819
774
  <span class="cline-any cline-yes">2x</span>
820
775
  <span class="cline-any cline-neutral">&nbsp;</span>
776
+ <span class="cline-any cline-yes">2x</span>
777
+ <span class="cline-any cline-neutral">&nbsp;</span>
821
778
  <span class="cline-any cline-neutral">&nbsp;</span>
822
779
  <span class="cline-any cline-yes">2x</span>
823
780
  <span class="cline-any cline-no">&nbsp;</span>
@@ -867,6 +824,7 @@
867
824
  <span class="cline-any cline-yes">2x</span>
868
825
  <span class="cline-any cline-yes">2x</span>
869
826
  <span class="cline-any cline-yes">2x</span>
827
+ <span class="cline-any cline-yes">2x</span>
870
828
  <span class="cline-any cline-neutral">&nbsp;</span>
871
829
  <span class="cline-any cline-neutral">&nbsp;</span>
872
830
  <span class="cline-any cline-yes">37x</span>
@@ -972,8 +930,8 @@
972
930
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const CouchDB = require("../../../db")
973
931
  const linkRows = require("../../../db/linkedRows")
974
932
  const {
975
- getRowParams,
976
933
  generateRowID,
934
+ getRowParams,
977
935
  DocumentTypes,
978
936
  InternalTables,
979
937
  } = require("../../../db/utils")
@@ -981,11 +939,9 @@ const userController = require("../user")
981
939
  const {
982
940
  inputProcessing,
983
941
  outputProcessing,
984
- processAutoColumn,
985
942
  cleanupAttachments,
986
943
  } = require("../../../utilities/rowProcessor")
987
944
  const { FieldTypes } = require("../../../constants")
988
- const { isEqual } = require("lodash")
989
945
  const { validate, findRow } = require("./utils")
990
946
  const { fullSearch, paginatedSearch } = require("./internalSearch")
991
947
  const { getGlobalUsersFromMetadata } = require("../../../utilities/global")
@@ -998,6 +954,7 @@ const {
998
954
  getFromMemoryDoc,
999
955
  } = require("../view/utils")
1000
956
  const { cloneDeep } = require("lodash/fp")
957
+ const { finaliseRow, updateRelatedFormula } = require("./staticFormula")
1001
958
  &nbsp;
1002
959
  const CALCULATION_TYPES = {
1003
960
  SUM: "sum",
@@ -1005,51 +962,6 @@ const CALCULATION_TYPES = {
1005
962
  STATS: "stats",
1006
963
  }
1007
964
  &nbsp;
1008
- async function storeResponse(ctx, db, row, oldTable, table) {
1009
- row.type = "row"
1010
- // don't worry about rev, tables handle rev/lastID updates
1011
- // if another row has been written since processing this will
1012
- // handle the auto ID clash
1013
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!isEqual(oldTable, table)) {
1014
- <span class="cstat-no" title="statement not covered" > try {</span>
1015
- <span class="cstat-no" title="statement not covered" > await db.put(table)</span>
1016
- } catch (err) {
1017
- <span class="cstat-no" title="statement not covered" > if (err.status === 409) {</span>
1018
- const updatedTable = <span class="cstat-no" title="statement not covered" >await db.get(table._id)</span>
1019
- let response = <span class="cstat-no" title="statement not covered" >processAutoColumn(null, updatedTable, row, {</span>
1020
- reprocessing: true,
1021
- })
1022
- <span class="cstat-no" title="statement not covered" > await db.put(response.table)</span>
1023
- <span class="cstat-no" title="statement not covered" > row = response.row</span>
1024
- } else {
1025
- <span class="cstat-no" title="statement not covered" > throw err</span>
1026
- }
1027
- }
1028
- }
1029
- const response = await db.put(row)
1030
- row._rev = response.rev
1031
- // process the row before return, to include relationships
1032
- row = await outputProcessing(ctx, table, row, { squash: false })
1033
- return { row, table }
1034
- }
1035
- &nbsp;
1036
- // doesn't do the outputProcessing
1037
- async function getRawTableData(ctx, db, tableId) {
1038
- let rows
1039
- <span class="missing-if-branch" title="if path not taken" >I</span>if (tableId === InternalTables.USER_METADATA) {
1040
- <span class="cstat-no" title="statement not covered" > await userController.fetchMetadata(ctx)</span>
1041
- <span class="cstat-no" title="statement not covered" > rows = ctx.body</span>
1042
- } else {
1043
- const response = await db.allDocs(
1044
- getRowParams(tableId, null, {
1045
- include_docs: true,
1046
- })
1047
- )
1048
- rows = response.rows.map(row =&gt; row.doc)
1049
- }
1050
- return rows
1051
- }
1052
- &nbsp;
1053
965
  async function getView(db, viewName) {
1054
966
  let mainGetter = env.SELF_HOSTED ? getFromDesignDoc : <span class="branch-1 cbranch-no" title="branch not covered" >getFromMemoryDoc</span>
1055
967
  let secondaryGetter = env.SELF_HOSTED ? getFromMemoryDoc : <span class="branch-1 cbranch-no" title="branch not covered" >getFromDesignDoc</span>
@@ -1076,6 +988,22 @@ async function getView(db, viewName) {
1076
988
  return viewInfo
1077
989
  }
1078
990
  &nbsp;
991
+ async function getRawTableData(ctx, db, tableId) {
992
+ let rows
993
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (tableId === InternalTables.USER_METADATA) {
994
+ <span class="cstat-no" title="statement not covered" > await userController.fetchMetadata(ctx)</span>
995
+ <span class="cstat-no" title="statement not covered" > rows = ctx.body</span>
996
+ } else {
997
+ const response = await db.allDocs(
998
+ getRowParams(tableId, null, {
999
+ include_docs: true,
1000
+ })
1001
+ )
1002
+ rows = response.rows.map(row =&gt; row.doc)
1003
+ }
1004
+ return rows
1005
+ }
1006
+ &nbsp;
1079
1007
  exports.patch = async ctx =&gt; {
1080
1008
  const appId = ctx.appId
1081
1009
  const db = new CouchDB(appId)
@@ -1133,7 +1061,10 @@ exports.patch = async ctx =&gt; {
1133
1061
  <span class="cstat-no" title="statement not covered" > return { row: ctx.body, table }</span>
1134
1062
  }
1135
1063
  &nbsp;
1136
- return storeResponse(ctx, db, row, dbTable, table)
1064
+ return finaliseRow(ctx.appId, table, row, {
1065
+ oldTable: dbTable,
1066
+ updateFormula: true,
1067
+ })
1137
1068
  }
1138
1069
  &nbsp;
1139
1070
  exports.save = async function (ctx) {
@@ -1167,7 +1098,10 @@ exports.save = async function (ctx) {
1167
1098
  table,
1168
1099
  })
1169
1100
  &nbsp;
1170
- return storeResponse(ctx, db, row, dbTable, table)
1101
+ return finaliseRow(ctx.appId, table, row, {
1102
+ oldTable: dbTable,
1103
+ updateFormula: true,
1104
+ })
1171
1105
  }
1172
1106
  &nbsp;
1173
1107
  exports.fetchView = async ctx =&gt; {
@@ -1273,6 +1207,8 @@ exports.destroy = async function (ctx) {
1273
1207
  })
1274
1208
  // remove any attachments that were on the row from object storage
1275
1209
  await cleanupAttachments(appId, table, { row })
1210
+ // remove any static formula
1211
+ await updateRelatedFormula(appId, table, row)
1276
1212
  &nbsp;
1277
1213
  let response
1278
1214
  <span class="missing-if-branch" title="if path not taken" >I</span>if (ctx.params.tableId === InternalTables.USER_METADATA) {
@@ -1321,6 +1257,7 @@ exports.bulkDestroy = async ctx =&gt; {
1321
1257
  }
1322
1258
  // remove any attachments that were on the rows from object storage
1323
1259
  await cleanupAttachments(appId, table, { rows })
1260
+ await updateRelatedFormula(appId, table, rows)
1324
1261
  await Promise.all(updates)
1325
1262
  return { response: { ok: true }, rows }
1326
1263
  }
@@ -1432,7 +1369,7 @@ exports.fetchEnrichedRow = async ctx =&gt; {
1432
1369
  <div class='footer quiet pad2 space-top1 center small'>
1433
1370
  Code coverage generated by
1434
1371
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1435
- at Mon Jan 31 2022 14:38:52 GMT+0000 (Coordinated Universal Time)
1372
+ at Mon Jan 31 2022 16:01:47 GMT+0000 (Coordinated Universal Time)
1436
1373
  </div>
1437
1374
  </div>
1438
1375
  <script src="../../../prettify.js"></script>
@@ -23,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">4.66% </span>
26
+ <span class="strong">4.54% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>7/150</span>
28
+ <span class='fraction'>7/154</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">0% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/87</span>
35
+ <span class='fraction'>0/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">4.76% </span>
47
+ <span class="strong">4.63% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>7/147</span>
49
+ <span class='fraction'>7/151</span>
50
50
  </div>
51
51
 
52
52
 
@@ -446,7 +446,15 @@
446
446
  <a name='L387'></a><a href='#L387'>387</a>
447
447
  <a name='L388'></a><a href='#L388'>388</a>
448
448
  <a name='L389'></a><a href='#L389'>389</a>
449
- <a name='L390'></a><a href='#L390'>390</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">36x</span>
449
+ <a name='L390'></a><a href='#L390'>390</a>
450
+ <a name='L391'></a><a href='#L391'>391</a>
451
+ <a name='L392'></a><a href='#L392'>392</a>
452
+ <a name='L393'></a><a href='#L393'>393</a>
453
+ <a name='L394'></a><a href='#L394'>394</a>
454
+ <a name='L395'></a><a href='#L395'>395</a>
455
+ <a name='L396'></a><a href='#L396'>396</a>
456
+ <a name='L397'></a><a href='#L397'>397</a>
457
+ <a name='L398'></a><a href='#L398'>398</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">36x</span>
450
458
  <span class="cline-any cline-yes">36x</span>
451
459
  <span class="cline-any cline-yes">36x</span>
452
460
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -488,21 +496,29 @@
488
496
  <span class="cline-any cline-no">&nbsp;</span>
489
497
  <span class="cline-any cline-no">&nbsp;</span>
490
498
  <span class="cline-any cline-neutral">&nbsp;</span>
499
+ <span class="cline-any cline-no">&nbsp;</span>
500
+ <span class="cline-any cline-neutral">&nbsp;</span>
491
501
  <span class="cline-any cline-neutral">&nbsp;</span>
492
502
  <span class="cline-any cline-neutral">&nbsp;</span>
493
503
  <span class="cline-any cline-no">&nbsp;</span>
494
504
  <span class="cline-any cline-no">&nbsp;</span>
495
505
  <span class="cline-any cline-neutral">&nbsp;</span>
506
+ <span class="cline-any cline-no">&nbsp;</span>
507
+ <span class="cline-any cline-neutral">&nbsp;</span>
496
508
  <span class="cline-any cline-neutral">&nbsp;</span>
497
509
  <span class="cline-any cline-neutral">&nbsp;</span>
498
510
  <span class="cline-any cline-no">&nbsp;</span>
499
511
  <span class="cline-any cline-no">&nbsp;</span>
500
512
  <span class="cline-any cline-neutral">&nbsp;</span>
513
+ <span class="cline-any cline-no">&nbsp;</span>
514
+ <span class="cline-any cline-neutral">&nbsp;</span>
501
515
  <span class="cline-any cline-neutral">&nbsp;</span>
502
516
  <span class="cline-any cline-neutral">&nbsp;</span>
503
517
  <span class="cline-any cline-no">&nbsp;</span>
504
518
  <span class="cline-any cline-no">&nbsp;</span>
505
519
  <span class="cline-any cline-neutral">&nbsp;</span>
520
+ <span class="cline-any cline-no">&nbsp;</span>
521
+ <span class="cline-any cline-neutral">&nbsp;</span>
506
522
  <span class="cline-any cline-neutral">&nbsp;</span>
507
523
  <span class="cline-any cline-neutral">&nbsp;</span>
508
524
  <span class="cline-any cline-no">&nbsp;</span>
@@ -874,22 +890,30 @@ class QueryBuilder {
874
890
  }
875
891
  &nbsp;
876
892
  <span class="fstat-no" title="function not covered" > se</span>tLimit(limit) {
877
- <span class="cstat-no" title="statement not covered" > this.limit = limit</span>
893
+ <span class="cstat-no" title="statement not covered" > if (limit != null) {</span>
894
+ <span class="cstat-no" title="statement not covered" > this.limit = limit</span>
895
+ }
878
896
  <span class="cstat-no" title="statement not covered" > return this</span>
879
897
  }
880
898
  &nbsp;
881
899
  <span class="fstat-no" title="function not covered" > se</span>tSort(sort) {
882
- <span class="cstat-no" title="statement not covered" > this.sort = sort</span>
900
+ <span class="cstat-no" title="statement not covered" > if (sort != null) {</span>
901
+ <span class="cstat-no" title="statement not covered" > this.sort = sort</span>
902
+ }
883
903
  <span class="cstat-no" title="statement not covered" > return this</span>
884
904
  }
885
905
  &nbsp;
886
906
  <span class="fstat-no" title="function not covered" > se</span>tSortOrder(sortOrder) {
887
- <span class="cstat-no" title="statement not covered" > this.sortOrder = sortOrder</span>
907
+ <span class="cstat-no" title="statement not covered" > if (sortOrder != null) {</span>
908
+ <span class="cstat-no" title="statement not covered" > this.sortOrder = sortOrder</span>
909
+ }
888
910
  <span class="cstat-no" title="statement not covered" > return this</span>
889
911
  }
890
912
  &nbsp;
891
913
  <span class="fstat-no" title="function not covered" > se</span>tSortType(sortType) {
892
- <span class="cstat-no" title="statement not covered" > this.sortType = sortType</span>
914
+ <span class="cstat-no" title="statement not covered" > if (sortType != null) {</span>
915
+ <span class="cstat-no" title="statement not covered" > this.sortType = sortType</span>
916
+ }
893
917
  <span class="cstat-no" title="statement not covered" > return this</span>
894
918
  }
895
919
  &nbsp;
@@ -1231,7 +1255,7 @@ exports.fullSearch = <span class="fstat-no" title="function not covered" >as</sp
1231
1255
  <div class='footer quiet pad2 space-top1 center small'>
1232
1256
  Code coverage generated by
1233
1257
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1234
- at Mon Jan 31 2022 14:38:52 GMT+0000 (Coordinated Universal Time)
1258
+ at Mon Jan 31 2022 16:01:47 GMT+0000 (Coordinated Universal Time)
1235
1259
  </div>
1236
1260
  </div>
1237
1261
  <script src="../../../prettify.js"></script>