@budibase/server 1.0.123-alpha.1 → 1.0.124

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 (175) hide show
  1. package/builder/assets/{index.3a7314b2.js → index.5351a3fb.js} +2 -2
  2. package/builder/index.html +1 -1
  3. package/coverage/clover.xml +180 -158
  4. package/coverage/coverage-final.json +4 -4
  5. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  6. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  7. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/component.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/index.html +1 -1
  15. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  16. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  21. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  26. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  34. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  35. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  40. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  43. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  44. package/coverage/lcov-report/api/index.html +1 -1
  45. package/coverage/lcov-report/api/index.js.html +1 -1
  46. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  47. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  48. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  49. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/index.html +1 -1
  57. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/utils/index.html +1 -1
  71. package/coverage/lcov-report/api/routes/utils/validators.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  74. package/coverage/lcov-report/automations/actions.js.html +1 -1
  75. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  76. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  77. package/coverage/lcov-report/automations/index.html +1 -1
  78. package/coverage/lcov-report/automations/index.js.html +1 -1
  79. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  80. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  81. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/index.html +1 -1
  86. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  96. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  97. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  98. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  99. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  100. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  101. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  104. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  105. package/coverage/lcov-report/constants/index.html +5 -5
  106. package/coverage/lcov-report/constants/index.js.html +28 -4
  107. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  108. package/coverage/lcov-report/constants/screens.js.html +1 -1
  109. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  110. package/coverage/lcov-report/db/index.html +1 -1
  111. package/coverage/lcov-report/db/index.js.html +1 -1
  112. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +9 -6
  113. package/coverage/lcov-report/db/linkedRows/index.html +10 -10
  114. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  115. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  116. package/coverage/lcov-report/db/newid.js.html +1 -1
  117. package/coverage/lcov-report/db/utils.js.html +1 -1
  118. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  119. package/coverage/lcov-report/events/index.html +1 -1
  120. package/coverage/lcov-report/events/index.js.html +1 -1
  121. package/coverage/lcov-report/events/utils.js.html +1 -1
  122. package/coverage/lcov-report/index.html +25 -25
  123. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  124. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  125. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  126. package/coverage/lcov-report/middleware/builder.js.html +1 -1
  127. package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
  128. package/coverage/lcov-report/middleware/index.html +1 -1
  129. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  130. package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
  131. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  132. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  133. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  134. package/coverage/lcov-report/threads/automation.js.html +1 -1
  135. package/coverage/lcov-report/threads/index.html +1 -1
  136. package/coverage/lcov-report/threads/query.js.html +1 -1
  137. package/coverage/lcov-report/threads/utils.js.html +1 -1
  138. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  139. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  140. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  141. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  142. package/coverage/lcov-report/utilities/global.js.html +1 -1
  143. package/coverage/lcov-report/utilities/index.html +1 -1
  144. package/coverage/lcov-report/utilities/index.js.html +1 -1
  145. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
  146. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  147. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  148. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  149. package/coverage/lcov-report/utilities/rowProcessor/index.html +25 -25
  150. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +31 -22
  151. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +94 -10
  152. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  153. package/coverage/lcov-report/utilities/security.js.html +1 -1
  154. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  155. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  156. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
  157. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  158. package/coverage/lcov-report/utilities/users.js.html +1 -1
  159. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  160. package/coverage/lcov.info +332 -292
  161. package/dist/api/controllers/table/internal.js +21 -0
  162. package/dist/constants/index.js +7 -0
  163. package/dist/db/linkedRows/LinkController.js +1 -0
  164. package/dist/package.json +5 -5
  165. package/dist/tsconfig.build.tsbuildinfo +1 -1
  166. package/dist/utilities/rowProcessor/index.js +11 -6
  167. package/dist/utilities/rowProcessor/utils.js +27 -1
  168. package/package.json +6 -6
  169. package/src/api/controllers/table/internal.ts +27 -2
  170. package/src/api/routes/tests/routing.spec.js +0 -1
  171. package/src/constants/index.js +8 -0
  172. package/src/db/linkedRows/LinkController.js +1 -0
  173. package/src/definitions/common.ts +1 -0
  174. package/src/utilities/rowProcessor/index.js +12 -9
  175. package/src/utilities/rowProcessor/utils.js +29 -1
@@ -145,7 +145,7 @@ exports.createRoutingView = createRoutingView
145
145
  <div class='footer quiet pad2 space-top1 center small'>
146
146
  Code coverage generated by
147
147
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
148
- at Tue Apr 26 2022 18:30:21 GMT+0000 (Coordinated Universal Time)
148
+ at Tue Apr 26 2022 22:47:48 GMT+0000 (Coordinated Universal Time)
149
149
  </div>
150
150
  <script src="../../prettify.js"></script>
151
151
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">59.06% </span>
26
+ <span class="strong">59.17% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>88/149</span>
28
+ <span class='fraction'>100/169</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">44.06% </span>
33
+ <span class="strong">48.5% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>52/118</span>
35
+ <span class='fraction'>65/134</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">52.38% </span>
40
+ <span class="strong">54.54% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>11/21</span>
42
+ <span class='fraction'>12/22</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">61.7% </span>
47
+ <span class="strong">61.49% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>87/141</span>
49
+ <span class='fraction'>99/161</span>
50
50
  </div>
51
51
 
52
52
 
@@ -80,32 +80,32 @@
80
80
  </thead>
81
81
  <tbody><tr>
82
82
  <td class="file medium" data-value="index.js"><a href="index.js.html">index.js</a></td>
83
- <td data-value="58.01" class="pic medium">
83
+ <td data-value="58.39" class="pic medium">
84
84
  <div class="chart"><div class="cover-fill" style="width: 58%"></div><div class="cover-empty" style="width: 42%"></div></div>
85
85
  </td>
86
- <td data-value="58.01" class="pct medium">58.01%</td>
87
- <td data-value="131" class="abs medium">76/131</td>
88
- <td data-value="43" class="pct low">43%</td>
89
- <td data-value="100" class="abs low">43/100</td>
86
+ <td data-value="58.39" class="pct medium">58.39%</td>
87
+ <td data-value="137" class="abs medium">80/137</td>
88
+ <td data-value="46.53" class="pct low">46.53%</td>
89
+ <td data-value="101" class="abs low">47/101</td>
90
90
  <td data-value="50" class="pct medium">50%</td>
91
91
  <td data-value="20" class="abs medium">10/20</td>
92
- <td data-value="60.48" class="pct medium">60.48%</td>
93
- <td data-value="124" class="abs medium">75/124</td>
92
+ <td data-value="60.76" class="pct medium">60.76%</td>
93
+ <td data-value="130" class="abs medium">79/130</td>
94
94
  </tr>
95
95
 
96
96
  <tr>
97
97
  <td class="file medium" data-value="utils.js"><a href="utils.js.html">utils.js</a></td>
98
- <td data-value="66.66" class="pic medium">
99
- <div class="chart"><div class="cover-fill" style="width: 66%"></div><div class="cover-empty" style="width: 34%"></div></div>
98
+ <td data-value="62.5" class="pic medium">
99
+ <div class="chart"><div class="cover-fill" style="width: 62%"></div><div class="cover-empty" style="width: 38%"></div></div>
100
100
  </td>
101
- <td data-value="66.66" class="pct medium">66.66%</td>
102
- <td data-value="18" class="abs medium">12/18</td>
103
- <td data-value="50" class="pct medium">50%</td>
104
- <td data-value="18" class="abs medium">9/18</td>
101
+ <td data-value="62.5" class="pct medium">62.5%</td>
102
+ <td data-value="32" class="abs medium">20/32</td>
103
+ <td data-value="54.54" class="pct medium">54.54%</td>
104
+ <td data-value="33" class="abs medium">18/33</td>
105
105
  <td data-value="100" class="pct high">100%</td>
106
- <td data-value="1" class="abs high">1/1</td>
107
- <td data-value="70.58" class="pct medium">70.58%</td>
108
- <td data-value="17" class="abs medium">12/17</td>
106
+ <td data-value="2" class="abs high">2/2</td>
107
+ <td data-value="64.51" class="pct medium">64.51%</td>
108
+ <td data-value="31" class="abs medium">20/31</td>
109
109
  </tr>
110
110
 
111
111
  </tbody>
@@ -116,7 +116,7 @@
116
116
  <div class='footer quiet pad2 space-top1 center small'>
117
117
  Code coverage generated by
118
118
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
- at Tue Apr 26 2022 18:30:21 GMT+0000 (Coordinated Universal Time)
119
+ at Tue Apr 26 2022 22:47:48 GMT+0000 (Coordinated Universal Time)
120
120
  </div>
121
121
  <script src="../../prettify.js"></script>
122
122
  <script>
@@ -23,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">58.01% </span>
26
+ <span class="strong">58.39% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>76/131</span>
28
+ <span class='fraction'>80/137</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">43% </span>
33
+ <span class="strong">46.53% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>43/100</span>
35
+ <span class='fraction'>47/101</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">60.48% </span>
47
+ <span class="strong">60.76% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>75/124</span>
49
+ <span class='fraction'>79/130</span>
50
50
  </div>
51
51
 
52
52
 
@@ -402,7 +402,10 @@
402
402
  <a name='L337'></a><a href='#L337'>337</a>
403
403
  <a name='L338'></a><a href='#L338'>338</a>
404
404
  <a name='L339'></a><a href='#L339'>339</a>
405
- <a name='L340'></a><a href='#L340'>340</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">41x</span>
405
+ <a name='L340'></a><a href='#L340'>340</a>
406
+ <a name='L341'></a><a href='#L341'>341</a>
407
+ <a name='L342'></a><a href='#L342'>342</a>
408
+ <a name='L343'></a><a href='#L343'>343</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">41x</span>
406
409
  <span class="cline-any cline-yes">41x</span>
407
410
  <span class="cline-any cline-yes">41x</span>
408
411
  <span class="cline-any cline-yes">41x</span>
@@ -415,6 +418,7 @@
415
418
  <span class="cline-any cline-neutral">&nbsp;</span>
416
419
  <span class="cline-any cline-yes">41x</span>
417
420
  <span class="cline-any cline-yes">41x</span>
421
+ <span class="cline-any cline-yes">41x</span>
418
422
  <span class="cline-any cline-neutral">&nbsp;</span>
419
423
  <span class="cline-any cline-yes">41x</span>
420
424
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -542,6 +546,10 @@
542
546
  <span class="cline-any cline-neutral">&nbsp;</span>
543
547
  <span class="cline-any cline-yes">77x</span>
544
548
  <span class="cline-any cline-yes">77x</span>
549
+ <span class="cline-any cline-yes">77x</span>
550
+ <span class="cline-any cline-neutral">&nbsp;</span>
551
+ <span class="cline-any cline-yes">77x</span>
552
+ <span class="cline-any cline-neutral">&nbsp;</span>
545
553
  <span class="cline-any cline-neutral">&nbsp;</span>
546
554
  <span class="cline-any cline-yes">77x</span>
547
555
  <span class="cline-any cline-yes">77x</span>
@@ -549,14 +557,12 @@
549
557
  <span class="cline-any cline-yes">214x</span>
550
558
  <span class="cline-any cline-neutral">&nbsp;</span>
551
559
  <span class="cline-any cline-no">&nbsp;</span>
552
- <span class="cline-any cline-neutral">&nbsp;</span>
553
560
  <span class="cline-any cline-no">&nbsp;</span>
554
561
  <span class="cline-any cline-neutral">&nbsp;</span>
555
- <span class="cline-any cline-neutral">&nbsp;</span>
556
- <span class="cline-any cline-neutral">&nbsp;</span>
557
- <span class="cline-any cline-neutral">&nbsp;</span>
562
+ <span class="cline-any cline-no">&nbsp;</span>
558
563
  <span class="cline-any cline-neutral">&nbsp;</span>
559
564
  <span class="cline-any cline-no">&nbsp;</span>
565
+ <span class="cline-any cline-no">&nbsp;</span>
560
566
  <span class="cline-any cline-neutral">&nbsp;</span>
561
567
  <span class="cline-any cline-no">&nbsp;</span>
562
568
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -583,7 +589,7 @@
583
589
  <span class="cline-any cline-yes">77x</span>
584
590
  <span class="cline-any cline-neutral">&nbsp;</span>
585
591
  <span class="cline-any cline-yes">41x</span>
586
- <span class="cline-any cline-neutral">&nbsp;</span>
592
+ <span class="cline-any cline-yes">41x</span>
587
593
  <span class="cline-any cline-yes">41x</span>
588
594
  <span class="cline-any cline-neutral">&nbsp;</span>
589
595
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -745,7 +751,7 @@
745
751
  const { cloneDeep } = require("lodash/fp")
746
752
  const { FieldTypes, AutoFieldSubTypes } = require("../../constants")
747
753
  const { attachmentsRelativeURL } = require("../index")
748
- const { processFormulas } = require("./utils")
754
+ const { processFormulas, fixAutoColumnSubType } = require("./utils")
749
755
  const { deleteFiles } = require("../../utilities/fileSystem/utilities")
750
756
  const { ObjectStoreBuckets } = require("../../constants")
751
757
  const {
@@ -754,6 +760,7 @@ const {
754
760
  dbExists,
755
761
  } = require("@budibase/backend-core/db")
756
762
  const { getAppId } = require("@budibase/backend-core/context")
763
+ const { InternalTables } = require("../../db/utils")
757
764
  &nbsp;
758
765
  const BASE_AUTO_ID = 1
759
766
  &nbsp;
@@ -880,21 +887,23 @@ function processAutoColumn(
880
887
  opts = <span class="branch-0 cbranch-no" title="branch not covered" >{ reprocessing: false, noAutoRelationships: false }</span>
881
888
  ) {
882
889
  let noUser = !user || !user.userId
890
+ let isUserTable = table._id === InternalTables.USER_METADATA
883
891
  let now = new Date().toISOString()
884
892
  // if a row doesn't have a revision then it doesn't exist yet
885
893
  const creating = !row._rev
894
+ // check its not user table, or whether any of the processing options have been disabled
895
+ const shouldUpdateUserFields =
896
+ !isUserTable &amp;&amp; !opts.reprocessing &amp;&amp; !opts.noAutoRelationships &amp;&amp; !noUser
886
897
  for (let [key, schema] of Object.entries(table.schema)) {
887
898
  <span class="missing-if-branch" title="else path not taken" >E</span>if (!schema.autocolumn) {
888
899
  continue
889
900
  }
901
+ <span class="cstat-no" title="statement not covered" > if (!schema.subtype) {</span>
902
+ <span class="cstat-no" title="statement not covered" > schema = fixAutoColumnSubType(schema)</span>
903
+ }
890
904
  <span class="cstat-no" title="statement not covered" > switch (schema.subtype) {</span>
891
905
  case AutoFieldSubTypes.CREATED_BY:
892
- <span class="cstat-no" title="statement not covered" > if (</span>
893
- creating &amp;&amp;
894
- !opts.reprocessing &amp;&amp;
895
- !opts.noAutoRelationships &amp;&amp;
896
- !noUser
897
- ) {
906
+ <span class="cstat-no" title="statement not covered" > if (creating &amp;&amp; shouldUpdateUserFields) {</span>
898
907
  <span class="cstat-no" title="statement not covered" > row[key] = [user.userId]</span>
899
908
  }
900
909
  <span class="cstat-no" title="statement not covered" > break</span>
@@ -904,7 +913,7 @@ function processAutoColumn(
904
913
  }
905
914
  <span class="cstat-no" title="statement not covered" > break</span>
906
915
  case AutoFieldSubTypes.UPDATED_BY:
907
- <span class="cstat-no" title="statement not covered" > if (!opts.reprocessing &amp;&amp; !opts.noAutoRelationships &amp;&amp; !noUser) {</span>
916
+ <span class="cstat-no" title="statement not covered" > if (shouldUpdateUserFields) {</span>
908
917
  <span class="cstat-no" title="statement not covered" > row[key] = [user.userId]</span>
909
918
  }
910
919
  <span class="cstat-no" title="statement not covered" > break</span>
@@ -922,7 +931,7 @@ function processAutoColumn(
922
931
  return { table, row }
923
932
  }
924
933
  exports.processAutoColumn = processAutoColumn
925
- &nbsp;
934
+ exports.fixAutoColumnSubType = fixAutoColumnSubType
926
935
  exports.processFormulas = processFormulas
927
936
  &nbsp;
928
937
  /**
@@ -1087,7 +1096,7 @@ exports.cleanupAttachments = async (table, { row, rows, oldRow, oldTable }) =&gt
1087
1096
  <div class='footer quiet pad2 space-top1 center small'>
1088
1097
  Code coverage generated by
1089
1098
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1090
- at Tue Apr 26 2022 18:30:21 GMT+0000 (Coordinated Universal Time)
1099
+ at Tue Apr 26 2022 22:47:48 GMT+0000 (Coordinated Universal Time)
1091
1100
  </div>
1092
1101
  <script src="../../prettify.js"></script>
1093
1102
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">66.66% </span>
26
+ <span class="strong">62.5% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>12/18</span>
28
+ <span class='fraction'>20/32</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">50% </span>
33
+ <span class="strong">54.54% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>9/18</span>
35
+ <span class='fraction'>18/33</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>1/1</span>
42
+ <span class='fraction'>2/2</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">70.58% </span>
47
+ <span class="strong">64.51% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>12/17</span>
49
+ <span class='fraction'>20/31</span>
50
50
  </div>
51
51
 
52
52
 
@@ -102,8 +102,64 @@
102
102
  <a name='L37'></a><a href='#L37'>37</a>
103
103
  <a name='L38'></a><a href='#L38'>38</a>
104
104
  <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">41x</span>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
134
+ <span class="cline-any cline-neutral">&nbsp;</span>
135
+ <span class="cline-any cline-neutral">&nbsp;</span>
136
+ <span class="cline-any cline-neutral">&nbsp;</span>
137
+ <span class="cline-any cline-neutral">&nbsp;</span>
106
138
  <span class="cline-any cline-yes">41x</span>
139
+ <span class="cline-any cline-yes">41x</span>
140
+ <span class="cline-any cline-neutral">&nbsp;</span>
141
+ <span class="cline-any cline-neutral">&nbsp;</span>
142
+ <span class="cline-any cline-neutral">&nbsp;</span>
143
+ <span class="cline-any cline-neutral">&nbsp;</span>
144
+ <span class="cline-any cline-neutral">&nbsp;</span>
145
+ <span class="cline-any cline-yes">41x</span>
146
+ <span class="cline-any cline-yes">2x</span>
147
+ <span class="cline-any cline-no">&nbsp;</span>
148
+ <span class="cline-any cline-neutral">&nbsp;</span>
149
+ <span class="cline-any cline-neutral">&nbsp;</span>
150
+ <span class="cline-any cline-yes">2x</span>
151
+ <span class="cline-any cline-no">&nbsp;</span>
152
+ <span class="cline-any cline-yes">2x</span>
153
+ <span class="cline-any cline-no">&nbsp;</span>
154
+ <span class="cline-any cline-yes">2x</span>
155
+ <span class="cline-any cline-no">&nbsp;</span>
156
+ <span class="cline-any cline-yes">2x</span>
157
+ <span class="cline-any cline-no">&nbsp;</span>
158
+ <span class="cline-any cline-yes">2x</span>
159
+ <span class="cline-any cline-no">&nbsp;</span>
160
+ <span class="cline-any cline-neutral">&nbsp;</span>
161
+ <span class="cline-any cline-yes">2x</span>
162
+ <span class="cline-any cline-neutral">&nbsp;</span>
107
163
  <span class="cline-any cline-neutral">&nbsp;</span>
108
164
  <span class="cline-any cline-neutral">&nbsp;</span>
109
165
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -141,9 +197,37 @@
141
197
  <span class="cline-any cline-neutral">&nbsp;</span>
142
198
  <span class="cline-any cline-yes">278x</span>
143
199
  <span class="cline-any cline-neutral">&nbsp;</span>
144
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const { FieldTypes, FormulaTypes } = require("../../constants")
200
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const {
201
+ FieldTypes,
202
+ FormulaTypes,
203
+ AutoFieldDefaultNames,
204
+ AutoFieldSubTypes,
205
+ } = require("../../constants")
145
206
  const { processStringSync } = require("@budibase/string-templates")
146
207
  &nbsp;
208
+ /**
209
+ * If the subtype has been lost for any reason this works out what
210
+ * subtype the auto column should be.
211
+ */
212
+ exports.fixAutoColumnSubType = column =&gt; {
213
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!column.autocolumn || !column.name || column.subtype) {
214
+ <span class="cstat-no" title="statement not covered" > return column</span>
215
+ }
216
+ // the columns which get auto generated
217
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (column.name.endsWith(AutoFieldDefaultNames.CREATED_BY)) {
218
+ <span class="cstat-no" title="statement not covered" > column.subtype = AutoFieldSubTypes.CREATED_BY</span>
219
+ } else <span class="missing-if-branch" title="if path not taken" >I</span>if (column.name.endsWith(AutoFieldDefaultNames.UPDATED_BY)) {
220
+ <span class="cstat-no" title="statement not covered" > column.subtype = AutoFieldSubTypes.UPDATED_BY</span>
221
+ } else <span class="missing-if-branch" title="if path not taken" >I</span>if (column.name.endsWith(AutoFieldDefaultNames.CREATED_AT)) {
222
+ <span class="cstat-no" title="statement not covered" > column.subtype = AutoFieldSubTypes.CREATED_AT</span>
223
+ } else <span class="missing-if-branch" title="if path not taken" >I</span>if (column.name.endsWith(AutoFieldDefaultNames.UPDATED_AT)) {
224
+ <span class="cstat-no" title="statement not covered" > column.subtype = AutoFieldSubTypes.UPDATED_AT</span>
225
+ } else <span class="missing-if-branch" title="if path not taken" >I</span>if (column.name.endsWith(AutoFieldDefaultNames.AUTO_ID)) {
226
+ <span class="cstat-no" title="statement not covered" > column.subtype = AutoFieldSubTypes.AUTO_ID</span>
227
+ }
228
+ return column
229
+ }
230
+ &nbsp;
147
231
  /**
148
232
  * Looks through the rows provided and finds formulas - which it then processes.
149
233
  */
@@ -187,7 +271,7 @@ exports.processFormulas = (
187
271
  <div class='footer quiet pad2 space-top1 center small'>
188
272
  Code coverage generated by
189
273
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
190
- at Tue Apr 26 2022 18:30:21 GMT+0000 (Coordinated Universal Time)
274
+ at Tue Apr 26 2022 22:47:48 GMT+0000 (Coordinated Universal Time)
191
275
  </div>
192
276
  <script src="../../prettify.js"></script>
193
277
  <script>
@@ -142,7 +142,7 @@ module.exports = ScriptRunner
142
142
  <div class='footer quiet pad2 space-top1 center small'>
143
143
  Code coverage generated by
144
144
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
145
- at Tue Apr 26 2022 18:30:21 GMT+0000 (Coordinated Universal Time)
145
+ at Tue Apr 26 2022 22:47:48 GMT+0000 (Coordinated Universal Time)
146
146
  </div>
147
147
  <script src="../prettify.js"></script>
148
148
  <script>
@@ -280,7 +280,7 @@ exports.CURRENTLY_SUPPORTED_LEVELS = CURRENTLY_SUPPORTED_LEVELS
280
280
  <div class='footer quiet pad2 space-top1 center small'>
281
281
  Code coverage generated by
282
282
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
283
- at Tue Apr 26 2022 18:30:21 GMT+0000 (Coordinated Universal Time)
283
+ at Tue Apr 26 2022 22:47:48 GMT+0000 (Coordinated Universal Time)
284
284
  </div>
285
285
  <script src="../prettify.js"></script>
286
286
  <script>
@@ -91,7 +91,7 @@
91
91
  <div class='footer quiet pad2 space-top1 center small'>
92
92
  Code coverage generated by
93
93
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
94
- at Tue Apr 26 2022 18:30:21 GMT+0000 (Coordinated Universal Time)
94
+ at Tue Apr 26 2022 22:47:48 GMT+0000 (Coordinated Universal Time)
95
95
  </div>
96
96
  <script src="../prettify.js"></script>
97
97
  <script>
@@ -116,7 +116,7 @@
116
116
  <div class='footer quiet pad2 space-top1 center small'>
117
117
  Code coverage generated by
118
118
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
- at Tue Apr 26 2022 18:30:21 GMT+0000 (Coordinated Universal Time)
119
+ at Tue Apr 26 2022 22:47:48 GMT+0000 (Coordinated Universal Time)
120
120
  </div>
121
121
  <script src="../../prettify.js"></script>
122
122
  <script>
@@ -307,7 +307,7 @@ exports.getUniqueRows = async appIds =&gt; {
307
307
  <div class='footer quiet pad2 space-top1 center small'>
308
308
  Code coverage generated by
309
309
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
310
- at Tue Apr 26 2022 18:30:21 GMT+0000 (Coordinated Universal Time)
310
+ at Tue Apr 26 2022 22:47:48 GMT+0000 (Coordinated Universal Time)
311
311
  </div>
312
312
  <script src="../../prettify.js"></script>
313
313
  <script>
@@ -124,7 +124,7 @@ function <span class="fstat-no" title="function not covered" >resetQuotasIfRequi
124
124
  <div class='footer quiet pad2 space-top1 center small'>
125
125
  Code coverage generated by
126
126
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
127
- at Tue Apr 26 2022 18:30:21 GMT+0000 (Coordinated Universal Time)
127
+ at Tue Apr 26 2022 22:47:48 GMT+0000 (Coordinated Universal Time)
128
128
  </div>
129
129
  <script src="../../prettify.js"></script>
130
130
  <script>
@@ -142,7 +142,7 @@ exports.getFullUser = async (ctx, userId) =&gt; {
142
142
  <div class='footer quiet pad2 space-top1 center small'>
143
143
  Code coverage generated by
144
144
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
145
- at Tue Apr 26 2022 18:30:21 GMT+0000 (Coordinated Universal Time)
145
+ at Tue Apr 26 2022 22:47:48 GMT+0000 (Coordinated Universal Time)
146
146
  </div>
147
147
  <script src="../prettify.js"></script>
148
148
  <script>
@@ -487,7 +487,7 @@ exports.readGlobalUser = <span class="fstat-no" title="function not covered" >as
487
487
  <div class='footer quiet pad2 space-top1 center small'>
488
488
  Code coverage generated by
489
489
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
490
- at Tue Apr 26 2022 18:30:21 GMT+0000 (Coordinated Universal Time)
490
+ at Tue Apr 26 2022 22:47:48 GMT+0000 (Coordinated Universal Time)
491
491
  </div>
492
492
  <script src="../prettify.js"></script>
493
493
  <script>