@budibase/server 0.9.140-alpha.4 → 0.9.140-alpha.5
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.
- package/builder/assets/{index.2bcd18f5.js → index.80d850d1.js} +1 -1
- package/builder/index.html +1 -1
- package/coverage/clover.xml +646 -528
- package/coverage/coverage-final.json +17 -15
- package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
- package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/controllers/application.js.html +1 -1
- package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
- package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
- package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
- package/coverage/lcov-report/api/controllers/component.js.html +1 -1
- package/coverage/lcov-report/api/controllers/datasource.js.html +3 -3
- package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
- package/coverage/lcov-report/api/controllers/hosting.js.html +1 -1
- package/coverage/lcov-report/api/controllers/index.html +1 -1
- package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
- package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
- package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
- package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
- package/coverage/lcov-report/api/controllers/query.js.html +1 -1
- package/coverage/lcov-report/api/controllers/role.js.html +1 -1
- package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/index.html +19 -19
- package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/internal.js.html +242 -47
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
- package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
- package/coverage/lcov-report/api/controllers/script.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/index.html +1 -1
- package/coverage/lcov-report/api/controllers/table/index.js.html +2 -2
- package/coverage/lcov-report/api/controllers/table/utils.js.html +31 -19
- package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
- package/coverage/lcov-report/api/controllers/user.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/index.html +32 -17
- package/coverage/lcov-report/api/controllers/view/index.js.html +84 -186
- package/coverage/lcov-report/api/controllers/view/utils.js.html +407 -0
- package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
- package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
- package/coverage/lcov-report/api/index.html +1 -1
- package/coverage/lcov-report/api/index.js.html +1 -1
- package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
- package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/routes/application.js.html +1 -1
- package/coverage/lcov-report/api/routes/auth.js.html +1 -1
- package/coverage/lcov-report/api/routes/automation.js.html +1 -1
- package/coverage/lcov-report/api/routes/backup.js.html +1 -1
- package/coverage/lcov-report/api/routes/component.js.html +1 -1
- package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
- package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
- package/coverage/lcov-report/api/routes/dev.js.html +1 -1
- package/coverage/lcov-report/api/routes/hosting.js.html +1 -1
- package/coverage/lcov-report/api/routes/index.html +1 -1
- package/coverage/lcov-report/api/routes/index.js.html +1 -1
- package/coverage/lcov-report/api/routes/integration.js.html +1 -1
- package/coverage/lcov-report/api/routes/layout.js.html +1 -1
- package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
- package/coverage/lcov-report/api/routes/permission.js.html +1 -1
- package/coverage/lcov-report/api/routes/query.js.html +1 -1
- package/coverage/lcov-report/api/routes/role.js.html +1 -1
- package/coverage/lcov-report/api/routes/routing.js.html +1 -1
- package/coverage/lcov-report/api/routes/row.js.html +1 -1
- package/coverage/lcov-report/api/routes/screen.js.html +1 -1
- package/coverage/lcov-report/api/routes/script.js.html +1 -1
- package/coverage/lcov-report/api/routes/static.js.html +1 -1
- package/coverage/lcov-report/api/routes/table.js.html +1 -1
- package/coverage/lcov-report/api/routes/templates.js.html +1 -1
- package/coverage/lcov-report/api/routes/user.js.html +1 -1
- package/coverage/lcov-report/api/routes/view.js.html +1 -1
- package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/actions.js.html +1 -1
- package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
- package/coverage/lcov-report/automations/bullboard.js.html +1 -1
- package/coverage/lcov-report/automations/index.html +1 -1
- package/coverage/lcov-report/automations/index.js.html +1 -1
- package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
- package/coverage/lcov-report/automations/steps/createRow.js.html +10 -19
- package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
- package/coverage/lcov-report/automations/steps/deleteRow.js.html +14 -20
- package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
- package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
- package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
- package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
- package/coverage/lcov-report/automations/steps/index.html +31 -31
- package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
- package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
- package/coverage/lcov-report/automations/steps/queryRows.js.html +18 -27
- package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
- package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
- package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
- package/coverage/lcov-report/automations/steps/updateRow.js.html +12 -21
- package/coverage/lcov-report/automations/steps/utils.js.html +23 -23
- package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
- package/coverage/lcov-report/automations/thread.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/triggers.js.html +1 -1
- package/coverage/lcov-report/automations/utils.js.html +1 -1
- package/coverage/lcov-report/constants/index.html +1 -1
- package/coverage/lcov-report/constants/index.js.html +1 -1
- package/coverage/lcov-report/constants/layouts.js.html +1 -1
- package/coverage/lcov-report/constants/screens.js.html +1 -1
- package/coverage/lcov-report/db/client.js.html +1 -1
- package/coverage/lcov-report/db/inMemoryView.js.html +224 -0
- package/coverage/lcov-report/db/index.html +34 -19
- package/coverage/lcov-report/db/index.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/LinkController.js.html +4 -4
- package/coverage/lcov-report/db/linkedRows/index.html +14 -14
- package/coverage/lcov-report/db/linkedRows/index.js.html +18 -9
- package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
- package/coverage/lcov-report/db/newid.js.html +1 -1
- package/coverage/lcov-report/db/utils.js.html +37 -10
- package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
- package/coverage/lcov-report/events/index.html +1 -1
- package/coverage/lcov-report/events/index.js.html +1 -1
- package/coverage/lcov-report/events/utils.js.html +1 -1
- package/coverage/lcov-report/index.html +65 -65
- package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
- package/coverage/lcov-report/integrations/tests/index.html +1 -1
- package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
- package/coverage/lcov-report/middleware/authorized.js.html +1 -1
- package/coverage/lcov-report/middleware/builder.js.html +1 -1
- package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
- package/coverage/lcov-report/middleware/index.html +1 -1
- package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
- package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
- package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
- package/coverage/lcov-report/middleware/usageQuota.js.html +1 -1
- package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
- package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
- package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
- package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
- package/coverage/lcov-report/utilities/global.js.html +1 -1
- package/coverage/lcov-report/utilities/index.html +1 -1
- package/coverage/lcov-report/utilities/index.js.html +1 -1
- package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
- package/coverage/lcov-report/utilities/queue/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/index.html +15 -15
- package/coverage/lcov-report/utilities/rowProcessor/index.js.html +58 -13
- package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
- package/coverage/lcov-report/utilities/security.js.html +2 -2
- package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
- package/coverage/lcov-report/utilities/users.js.html +1 -1
- package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
- package/coverage/lcov.info +1093 -883
- package/dist/api/controllers/datasource.js +2 -2
- package/dist/api/controllers/row/ExternalRequest.js +4 -0
- package/dist/api/controllers/row/internal.js +97 -23
- package/dist/api/controllers/table/index.js +1 -1
- package/dist/api/controllers/table/utils.js +13 -11
- package/dist/api/controllers/view/index.js +74 -96
- package/dist/api/controllers/view/utils.js +102 -0
- package/dist/automations/steps/createRow.js +5 -8
- package/dist/automations/steps/deleteRow.js +7 -10
- package/dist/automations/steps/queryRows.js +11 -14
- package/dist/automations/steps/updateRow.js +4 -7
- package/dist/db/inMemoryView.js +51 -0
- package/dist/db/linkedRows/index.js +5 -2
- package/dist/db/utils.js +7 -0
- package/dist/environment.js +7 -1
- package/dist/integrations/mysql.js +2 -13
- package/dist/integrations/postgres.js +8 -14
- package/dist/integrations/utils.js +19 -1
- package/dist/package.json +5 -5
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utilities/rowProcessor/index.js +10 -5
- package/package.json +6 -6
- package/scripts/integrations/service-vehicles/docker-compose.yml +28 -0
- package/scripts/integrations/service-vehicles/init.sql +52 -0
- package/scripts/integrations/service-vehicles/reset.sh +3 -0
- package/src/api/controllers/datasource.js +2 -2
- package/src/api/controllers/row/ExternalRequest.ts +5 -1
- package/src/api/controllers/row/internal.js +88 -23
- package/src/api/controllers/table/index.js +1 -1
- package/src/api/controllers/table/utils.js +16 -12
- package/src/api/controllers/view/index.js +82 -116
- package/src/api/controllers/view/utils.js +109 -0
- package/src/api/routes/tests/view.spec.js +1 -1
- package/src/automations/steps/createRow.js +5 -8
- package/src/automations/steps/deleteRow.js +8 -10
- package/src/automations/steps/queryRows.js +11 -14
- package/src/automations/steps/updateRow.js +7 -10
- package/src/db/inMemoryView.js +48 -0
- package/src/db/linkedRows/index.js +5 -2
- package/src/db/utils.js +9 -0
- package/src/environment.js +8 -1
- package/src/integrations/mysql.ts +2 -13
- package/src/integrations/postgres.ts +9 -16
- package/src/integrations/utils.ts +18 -0
- package/src/utilities/rowProcessor/index.js +20 -5
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">77.85% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>116/149</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">65.67% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>44/67</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">88.24% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>15/17</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">78.23% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>115/147</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
56
|
</p>
|
|
57
57
|
</div>
|
|
58
|
-
<div class='status-line
|
|
58
|
+
<div class='status-line medium'></div>
|
|
59
59
|
<div class="pad1">
|
|
60
60
|
<table class="coverage-summary">
|
|
61
61
|
<thead>
|
|
@@ -89,17 +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="92.
|
|
92
|
+
<td data-value="92.73" class="pic high">
|
|
93
93
|
<div class="chart"><div class="cover-fill" style="width: 92%"></div><div class="cover-empty" style="width: 8%"></div></div>
|
|
94
94
|
</td>
|
|
95
|
-
<td data-value="92.
|
|
96
|
-
<td data-value="
|
|
97
|
-
<td data-value="
|
|
98
|
-
<td data-value="
|
|
95
|
+
<td data-value="92.73" class="pct high">92.73%</td>
|
|
96
|
+
<td data-value="55" class="abs high">51/55</td>
|
|
97
|
+
<td data-value="68.42" class="pct medium">68.42%</td>
|
|
98
|
+
<td data-value="19" class="abs medium">13/19</td>
|
|
99
99
|
<td data-value="100" class="pct high">100%</td>
|
|
100
100
|
<td data-value="4" class="abs high">4/4</td>
|
|
101
|
-
<td data-value="
|
|
102
|
-
<td data-value="
|
|
101
|
+
<td data-value="94.44" class="pct high">94.44%</td>
|
|
102
|
+
<td data-value="54" class="abs high">51/54</td>
|
|
103
|
+
</tr>
|
|
104
|
+
|
|
105
|
+
<tr>
|
|
106
|
+
<td class="file medium" data-value="utils.js"><a href="utils.js.html">utils.js</a></td>
|
|
107
|
+
<td data-value="51.79" class="pic medium">
|
|
108
|
+
<div class="chart"><div class="cover-fill" style="width: 51%"></div><div class="cover-empty" style="width: 49%"></div></div>
|
|
109
|
+
</td>
|
|
110
|
+
<td data-value="51.79" class="pct medium">51.79%</td>
|
|
111
|
+
<td data-value="56" class="abs medium">29/56</td>
|
|
112
|
+
<td data-value="35" class="pct low">35%</td>
|
|
113
|
+
<td data-value="20" class="abs low">7/20</td>
|
|
114
|
+
<td data-value="66.67" class="pct medium">66.67%</td>
|
|
115
|
+
<td data-value="6" class="abs medium">4/6</td>
|
|
116
|
+
<td data-value="51.79" class="pct medium">51.79%</td>
|
|
117
|
+
<td data-value="56" class="abs medium">29/56</td>
|
|
103
118
|
</tr>
|
|
104
119
|
|
|
105
120
|
<tr>
|
|
@@ -125,7 +140,7 @@
|
|
|
125
140
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
126
141
|
Code coverage generated by
|
|
127
142
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
128
|
-
at Wed Sep 22 2021
|
|
143
|
+
at Wed Sep 22 2021 17:29:03 GMT+0000 (Coordinated Universal Time)
|
|
129
144
|
</div>
|
|
130
145
|
</div>
|
|
131
146
|
<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">92.
|
|
26
|
+
<span class="strong">92.73% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>51/55</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">68.42% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>13/19</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">
|
|
47
|
+
<span class="strong">94.44% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>51/54</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -151,41 +151,7 @@
|
|
|
151
151
|
<a name='L92'></a><a href='#L92'>92</a>
|
|
152
152
|
<a name='L93'></a><a href='#L93'>93</a>
|
|
153
153
|
<a name='L94'></a><a href='#L94'>94</a>
|
|
154
|
-
<a name='L95'></a><a href='#L95'>95</a>
|
|
155
|
-
<a name='L96'></a><a href='#L96'>96</a>
|
|
156
|
-
<a name='L97'></a><a href='#L97'>97</a>
|
|
157
|
-
<a name='L98'></a><a href='#L98'>98</a>
|
|
158
|
-
<a name='L99'></a><a href='#L99'>99</a>
|
|
159
|
-
<a name='L100'></a><a href='#L100'>100</a>
|
|
160
|
-
<a name='L101'></a><a href='#L101'>101</a>
|
|
161
|
-
<a name='L102'></a><a href='#L102'>102</a>
|
|
162
|
-
<a name='L103'></a><a href='#L103'>103</a>
|
|
163
|
-
<a name='L104'></a><a href='#L104'>104</a>
|
|
164
|
-
<a name='L105'></a><a href='#L105'>105</a>
|
|
165
|
-
<a name='L106'></a><a href='#L106'>106</a>
|
|
166
|
-
<a name='L107'></a><a href='#L107'>107</a>
|
|
167
|
-
<a name='L108'></a><a href='#L108'>108</a>
|
|
168
|
-
<a name='L109'></a><a href='#L109'>109</a>
|
|
169
|
-
<a name='L110'></a><a href='#L110'>110</a>
|
|
170
|
-
<a name='L111'></a><a href='#L111'>111</a>
|
|
171
|
-
<a name='L112'></a><a href='#L112'>112</a>
|
|
172
|
-
<a name='L113'></a><a href='#L113'>113</a>
|
|
173
|
-
<a name='L114'></a><a href='#L114'>114</a>
|
|
174
|
-
<a name='L115'></a><a href='#L115'>115</a>
|
|
175
|
-
<a name='L116'></a><a href='#L116'>116</a>
|
|
176
|
-
<a name='L117'></a><a href='#L117'>117</a>
|
|
177
|
-
<a name='L118'></a><a href='#L118'>118</a>
|
|
178
|
-
<a name='L119'></a><a href='#L119'>119</a>
|
|
179
|
-
<a name='L120'></a><a href='#L120'>120</a>
|
|
180
|
-
<a name='L121'></a><a href='#L121'>121</a>
|
|
181
|
-
<a name='L122'></a><a href='#L122'>122</a>
|
|
182
|
-
<a name='L123'></a><a href='#L123'>123</a>
|
|
183
|
-
<a name='L124'></a><a href='#L124'>124</a>
|
|
184
|
-
<a name='L125'></a><a href='#L125'>125</a>
|
|
185
|
-
<a name='L126'></a><a href='#L126'>126</a>
|
|
186
|
-
<a name='L127'></a><a href='#L127'>127</a>
|
|
187
|
-
<a name='L128'></a><a href='#L128'>128</a>
|
|
188
|
-
<a name='L129'></a><a href='#L129'>129</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">33x</span>
|
|
154
|
+
<a name='L95'></a><a href='#L95'>95</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">33x</span>
|
|
189
155
|
<span class="cline-any cline-yes">33x</span>
|
|
190
156
|
<span class="cline-any cline-yes">33x</span>
|
|
191
157
|
<span class="cline-any cline-yes">33x</span>
|
|
@@ -193,39 +159,14 @@
|
|
|
193
159
|
<span class="cline-any cline-yes">33x</span>
|
|
194
160
|
<span class="cline-any cline-neutral"> </span>
|
|
195
161
|
<span class="cline-any cline-yes">33x</span>
|
|
196
|
-
<span class="cline-any cline-neutral"> </span>
|
|
197
|
-
<span class="cline-any cline-yes">1x</span>
|
|
198
|
-
<span class="cline-any cline-yes">1x</span>
|
|
199
|
-
<span class="cline-any cline-yes">1x</span>
|
|
200
|
-
<span class="cline-any cline-neutral"> </span>
|
|
201
162
|
<span class="cline-any cline-yes">1x</span>
|
|
202
|
-
<span class="cline-any cline-neutral"> </span>
|
|
203
|
-
<span class="cline-any cline-yes">3x</span>
|
|
204
|
-
<span class="cline-any cline-yes">2x</span>
|
|
205
|
-
<span class="cline-any cline-neutral"> </span>
|
|
206
|
-
<span class="cline-any cline-yes">1x</span>
|
|
207
|
-
<span class="cline-any cline-neutral"> </span>
|
|
208
|
-
<span class="cline-any cline-neutral"> </span>
|
|
209
|
-
<span class="cline-any cline-neutral"> </span>
|
|
210
|
-
<span class="cline-any cline-neutral"> </span>
|
|
211
|
-
<span class="cline-any cline-neutral"> </span>
|
|
212
163
|
<span class="cline-any cline-yes">1x</span>
|
|
213
164
|
<span class="cline-any cline-neutral"> </span>
|
|
214
165
|
<span class="cline-any cline-neutral"> </span>
|
|
166
|
+
<span class="cline-any cline-yes">33x</span>
|
|
215
167
|
<span class="cline-any cline-yes">8x</span>
|
|
216
168
|
<span class="cline-any cline-yes">8x</span>
|
|
217
169
|
<span class="cline-any cline-yes">8x</span>
|
|
218
|
-
<span class="cline-any cline-yes">8x</span>
|
|
219
|
-
<span class="cline-any cline-neutral"> </span>
|
|
220
|
-
<span class="cline-any cline-yes">8x</span>
|
|
221
|
-
<span class="cline-any cline-no"> </span>
|
|
222
|
-
<span class="cline-any cline-neutral"> </span>
|
|
223
|
-
<span class="cline-any cline-neutral"> </span>
|
|
224
|
-
<span class="cline-any cline-yes">8x</span>
|
|
225
|
-
<span class="cline-any cline-neutral"> </span>
|
|
226
|
-
<span class="cline-any cline-neutral"> </span>
|
|
227
|
-
<span class="cline-any cline-neutral"> </span>
|
|
228
|
-
<span class="cline-any cline-neutral"> </span>
|
|
229
170
|
<span class="cline-any cline-neutral"> </span>
|
|
230
171
|
<span class="cline-any cline-yes">8x</span>
|
|
231
172
|
<span class="cline-any cline-no"> </span>
|
|
@@ -240,11 +181,9 @@
|
|
|
240
181
|
<span class="cline-any cline-yes">3x</span>
|
|
241
182
|
<span class="cline-any cline-neutral"> </span>
|
|
242
183
|
<span class="cline-any cline-yes">8x</span>
|
|
243
|
-
<span class="cline-any cline-neutral"> </span>
|
|
244
184
|
<span class="cline-any cline-yes">8x</span>
|
|
245
185
|
<span class="cline-any cline-no"> </span>
|
|
246
186
|
<span class="cline-any cline-neutral"> </span>
|
|
247
|
-
<span class="cline-any cline-neutral"> </span>
|
|
248
187
|
<span class="cline-any cline-yes">8x</span>
|
|
249
188
|
<span class="cline-any cline-neutral"> </span>
|
|
250
189
|
<span class="cline-any cline-yes">8x</span>
|
|
@@ -253,28 +192,24 @@
|
|
|
253
192
|
<span class="cline-any cline-neutral"> </span>
|
|
254
193
|
<span class="cline-any cline-neutral"> </span>
|
|
255
194
|
<span class="cline-any cline-neutral"> </span>
|
|
195
|
+
<span class="cline-any cline-yes">33x</span>
|
|
256
196
|
<span class="cline-any cline-yes">1x</span>
|
|
257
197
|
<span class="cline-any cline-yes">1x</span>
|
|
258
198
|
<span class="cline-any cline-yes">1x</span>
|
|
259
199
|
<span class="cline-any cline-yes">1x</span>
|
|
260
200
|
<span class="cline-any cline-yes">1x</span>
|
|
261
|
-
<span class="cline-any cline-neutral"> </span>
|
|
262
|
-
<span class="cline-any cline-yes">1x</span>
|
|
263
|
-
<span class="cline-any cline-neutral"> </span>
|
|
264
|
-
<span class="cline-any cline-yes">1x</span>
|
|
265
|
-
<span class="cline-any cline-yes">1x</span>
|
|
266
201
|
<span class="cline-any cline-yes">1x</span>
|
|
267
202
|
<span class="cline-any cline-neutral"> </span>
|
|
268
203
|
<span class="cline-any cline-yes">1x</span>
|
|
269
204
|
<span class="cline-any cline-neutral"> </span>
|
|
270
205
|
<span class="cline-any cline-neutral"> </span>
|
|
206
|
+
<span class="cline-any cline-yes">33x</span>
|
|
271
207
|
<span class="cline-any cline-yes">2x</span>
|
|
272
208
|
<span class="cline-any cline-yes">2x</span>
|
|
273
209
|
<span class="cline-any cline-yes">2x</span>
|
|
274
210
|
<span class="cline-any cline-neutral"> </span>
|
|
275
211
|
<span class="cline-any cline-yes">2x</span>
|
|
276
212
|
<span class="cline-any cline-yes">2x</span>
|
|
277
|
-
<span class="cline-any cline-yes">2x</span>
|
|
278
213
|
<span class="cline-any cline-no"> </span>
|
|
279
214
|
<span class="cline-any cline-neutral"> </span>
|
|
280
215
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -310,137 +245,100 @@
|
|
|
310
245
|
<span class="cline-any cline-yes">2x</span>
|
|
311
246
|
<span class="cline-any cline-yes">2x</span>
|
|
312
247
|
<span class="cline-any cline-neutral"> </span>
|
|
313
|
-
<span class="cline-any cline-neutral"> </span>
|
|
314
|
-
<span class="cline-any cline-neutral"> </span>
|
|
315
|
-
<span class="cline-any cline-yes">33x</span>
|
|
316
248
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">const CouchDB = require("../../../db")
|
|
317
249
|
const viewTemplate = require("./viewBuilder")
|
|
318
250
|
const { apiFileReturn } = require("../../../utilities/fileSystem")
|
|
319
251
|
const exporters = require("./exporters")
|
|
252
|
+
const { saveView, getView, getViews, deleteView } = require("./utils")
|
|
320
253
|
const { fetchView } = require("../row")
|
|
321
|
-
const { ViewNames } = require("../../../db/utils")
|
|
322
|
-
|
|
323
|
-
const controller = {
|
|
324
|
-
fetch: async ctx => {
|
|
325
|
-
const db = new CouchDB(ctx.appId)
|
|
326
|
-
const designDoc = await db.get("_design/database")
|
|
327
|
-
const response = []
|
|
328
|
-
|
|
329
|
-
for (let name of Object.keys(designDoc.views)) {
|
|
330
|
-
// Only return custom views, not built ins
|
|
331
|
-
if (Object.values(ViewNames).indexOf(name) !== -1) {
|
|
332
|
-
continue
|
|
333
|
-
}
|
|
334
|
-
response.push({
|
|
335
|
-
name,
|
|
336
|
-
...designDoc.views[name],
|
|
337
|
-
})
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
ctx.body = response
|
|
341
|
-
},
|
|
342
|
-
save: async ctx => {
|
|
343
|
-
const db = new CouchDB(ctx.appId)
|
|
344
|
-
const { originalName, ...viewToSave } = ctx.request.body
|
|
345
|
-
const designDoc = await db.get("_design/database")
|
|
346
|
-
const view = viewTemplate(viewToSave)
|
|
347
254
|
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
designDoc.views = {
|
|
353
|
-
...designDoc.views,
|
|
354
|
-
[viewToSave.name]: view,
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
// view has been renamed
|
|
358
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (originalName) {
|
|
359
|
-
<span class="cstat-no" title="statement not covered" > delete designDoc.views[originalName]</span>
|
|
360
|
-
}
|
|
255
|
+
exports.fetch = async ctx => {
|
|
256
|
+
const db = new CouchDB(ctx.appId)
|
|
257
|
+
ctx.body = await getViews(db)
|
|
258
|
+
}
|
|
361
259
|
|
|
362
|
-
|
|
260
|
+
exports.save = async ctx => {
|
|
261
|
+
const db = new CouchDB(ctx.appId)
|
|
262
|
+
const { originalName, ...viewToSave } = ctx.request.body
|
|
263
|
+
const view = viewTemplate(viewToSave)
|
|
363
264
|
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
if (!view.meta.schema) {
|
|
368
|
-
view.meta.schema = table.schema
|
|
369
|
-
}
|
|
370
|
-
table.views[viewToSave.name] = view.meta
|
|
265
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!viewToSave.name) {
|
|
266
|
+
<span class="cstat-no" title="statement not covered" > ctx.throw(400, "Cannot create view without a name")</span>
|
|
267
|
+
}
|
|
371
268
|
|
|
372
|
-
|
|
373
|
-
<span class="cstat-no" title="statement not covered" > delete table.views[originalName]</span>
|
|
374
|
-
}
|
|
269
|
+
await saveView(db, originalName, viewToSave.name, view)
|
|
375
270
|
|
|
376
|
-
|
|
271
|
+
// add views to table document
|
|
272
|
+
const table = await db.get(ctx.request.body.tableId)
|
|
273
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!table.views) <span class="cstat-no" title="statement not covered" >table.views = {}</span>
|
|
274
|
+
if (!view.meta.schema) {
|
|
275
|
+
view.meta.schema = table.schema
|
|
276
|
+
}
|
|
277
|
+
table.views[viewToSave.name] = view.meta
|
|
278
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (originalName) {
|
|
279
|
+
<span class="cstat-no" title="statement not covered" > delete table.views[originalName]</span>
|
|
280
|
+
}
|
|
281
|
+
await db.put(table)
|
|
377
282
|
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
destroy: async ctx => {
|
|
384
|
-
const db = new CouchDB(ctx.appId)
|
|
385
|
-
const designDoc = await db.get("_design/database")
|
|
386
|
-
const viewName = decodeURI(ctx.params.viewName)
|
|
387
|
-
const view = designDoc.views[viewName]
|
|
388
|
-
delete designDoc.views[viewName]
|
|
283
|
+
ctx.body = {
|
|
284
|
+
...table.views[viewToSave.name],
|
|
285
|
+
name: viewToSave.name,
|
|
286
|
+
}
|
|
287
|
+
}
|
|
389
288
|
|
|
390
|
-
|
|
289
|
+
exports.destroy = async ctx => {
|
|
290
|
+
const db = new CouchDB(ctx.appId)
|
|
291
|
+
const viewName = decodeURI(ctx.params.viewName)
|
|
292
|
+
const view = await deleteView(db, viewName)
|
|
293
|
+
const table = await db.get(view.meta.tableId)
|
|
294
|
+
delete table.views[viewName]
|
|
295
|
+
await db.put(table)
|
|
391
296
|
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
await db.put(table)
|
|
297
|
+
ctx.body = view
|
|
298
|
+
}
|
|
395
299
|
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
const designDoc = await db.get("_design/database")
|
|
401
|
-
const viewName = decodeURI(ctx.query.view)
|
|
300
|
+
exports.exportView = async ctx => {
|
|
301
|
+
const db = new CouchDB(ctx.appId)
|
|
302
|
+
const viewName = decodeURI(ctx.query.view)
|
|
303
|
+
const view = await getView(db, viewName)
|
|
402
304
|
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
}
|
|
305
|
+
const format = ctx.query.format
|
|
306
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!format) {
|
|
307
|
+
<span class="cstat-no" title="statement not covered" > ctx.throw(400, "Format must be specified, either csv or json")</span>
|
|
308
|
+
}
|
|
408
309
|
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
}
|
|
418
|
-
} else {
|
|
419
|
-
// table all_ view
|
|
420
|
-
/* istanbul ignore next */
|
|
421
|
-
ctx.params.viewName = viewName
|
|
310
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (view) {
|
|
311
|
+
ctx.params.viewName = viewName
|
|
312
|
+
// Fetch view rows
|
|
313
|
+
ctx.query = {
|
|
314
|
+
group: view.meta.groupBy,
|
|
315
|
+
calculation: view.meta.calculation,
|
|
316
|
+
stats: !!view.meta.field,
|
|
317
|
+
field: view.meta.field,
|
|
422
318
|
}
|
|
319
|
+
} else {
|
|
320
|
+
// table all_ view
|
|
321
|
+
/* istanbul ignore next */
|
|
322
|
+
ctx.params.viewName = viewName
|
|
323
|
+
}
|
|
423
324
|
|
|
424
|
-
|
|
325
|
+
await fetchView(ctx)
|
|
425
326
|
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
327
|
+
let schema = view && view.meta && view.meta.schema
|
|
328
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (!schema) {
|
|
329
|
+
const tableId = ctx.params.tableId || view.meta.tableId
|
|
330
|
+
const table = await db.get(tableId)
|
|
331
|
+
schema = table.schema
|
|
332
|
+
}
|
|
432
333
|
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
},
|
|
334
|
+
// Export part
|
|
335
|
+
let headers = Object.keys(schema)
|
|
336
|
+
const exporter = exporters[format]
|
|
337
|
+
const filename = `${viewName}.${format}`
|
|
338
|
+
// send down the file
|
|
339
|
+
ctx.attachment(filename)
|
|
340
|
+
ctx.body = apiFileReturn(exporter(headers, ctx.body))
|
|
441
341
|
}
|
|
442
|
-
|
|
443
|
-
module.exports = controller
|
|
444
342
|
</pre></td></tr></table></pre>
|
|
445
343
|
|
|
446
344
|
<div class='push'></div><!-- for sticky footer -->
|
|
@@ -448,7 +346,7 @@ module.exports = controller
|
|
|
448
346
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
449
347
|
Code coverage generated by
|
|
450
348
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
451
|
-
at Wed Sep 22 2021
|
|
349
|
+
at Wed Sep 22 2021 17:29:03 GMT+0000 (Coordinated Universal Time)
|
|
452
350
|
</div>
|
|
453
351
|
</div>
|
|
454
352
|
<script src="../../../prettify.js"></script>
|