@budibase/server 1.0.25 → 1.0.27-alpha.10
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/__mocks__/node-fetch.ts +21 -0
- package/builder/assets/bb-spaceship.8f6e81e1.svg +227 -0
- package/builder/assets/{index.4fb3f887.css → index.0dce895b.css} +1 -1
- package/builder/assets/index.39751e34.js +1348 -0
- package/builder/assets/{vendor.470042a4.js → vendor.f9faf6ab.js} +88 -88
- package/builder/index.html +3 -3
- package/coverage/clover.xml +1263 -1036
- package/coverage/coverage-final.json +36 -35
- 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 +54 -54
- package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
- package/coverage/lcov-report/api/controllers/automation.js.html +22 -10
- package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
- package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
- package/coverage/lcov-report/api/controllers/component.js.html +4 -4
- package/coverage/lcov-report/api/controllers/datasource.js.html +62 -62
- 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 +39 -54
- 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/index.html +126 -0
- package/coverage/lcov-report/api/controllers/{query.js.html → query/index.js.html} +225 -114
- package/coverage/lcov-report/api/controllers/query/validation.js.html +206 -0
- 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 +22 -22
- package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/internal.js.html +38 -11
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +7 -4
- package/coverage/lcov-report/api/controllers/row/utils.js.html +29 -20
- 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/external.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 +1 -1
- package/coverage/lcov-report/api/controllers/table/internal.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/utils.js.html +1 -1
- package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
- package/coverage/lcov-report/api/controllers/user.js.html +108 -9
- package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/index.html +1 -1
- package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
- package/coverage/lcov-report/api/controllers/webhook.js.html +18 -6
- package/coverage/lcov-report/api/index.html +1 -1
- package/coverage/lcov-report/api/index.js.html +5 -5
- 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/cloud.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 +9 -9
- 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 +19 -85
- 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 +32 -2
- 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 +20 -20
- 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 +1 -1
- package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
- package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
- package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
- package/coverage/lcov-report/automations/steps/executeQuery.js.html +31 -7
- 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 +11 -11
- package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
- package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +5 -8
- package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
- 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 +1 -1
- package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
- package/coverage/lcov-report/automations/steps/zapier.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 +48 -15
- package/coverage/lcov-report/constants/index.html +1 -1
- package/coverage/lcov-report/constants/index.js.html +22 -22
- 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 +18 -18
- package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
- package/coverage/lcov-report/db/index.html +15 -15
- package/coverage/lcov-report/db/index.js.html +3 -3
- package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/index.html +1 -1
- package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
- package/coverage/lcov-report/db/newid.js.html +4 -4
- package/coverage/lcov-report/db/utils.js.html +107 -80
- 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 +99 -84
- 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 +10 -10
- package/coverage/lcov-report/middleware/builder.js.html +8 -8
- package/coverage/lcov-report/middleware/currentapp.js.html +28 -28
- package/coverage/lcov-report/middleware/index.html +1 -1
- package/coverage/lcov-report/middleware/joi-validator.js.html +11 -11
- package/coverage/lcov-report/middleware/resourceId.js.html +17 -17
- package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
- package/coverage/lcov-report/middleware/usageQuota.js.html +1 -1
- package/coverage/lcov-report/middleware/utils.js.html +2 -2
- package/coverage/lcov-report/threads/automation.js.html +1 -1
- package/coverage/lcov-report/threads/index.html +31 -31
- package/coverage/lcov-report/threads/index.js.html +11 -11
- package/coverage/lcov-report/threads/query.js.html +394 -67
- package/coverage/lcov-report/threads/utils.js.html +356 -11
- 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 +13 -13
- package/coverage/lcov-report/utilities/index.html +19 -19
- package/coverage/lcov-report/utilities/index.js.html +68 -35
- package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +2 -2
- 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 +19 -19
- package/coverage/lcov-report/utilities/rowProcessor/index.js.html +235 -10
- package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
- package/coverage/lcov-report/utilities/scriptRunner.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 +2117 -1728
- package/dist/api/controllers/automation.js +7 -5
- package/dist/api/controllers/query/import/index.js +79 -0
- package/dist/api/controllers/query/import/sources/base/index.js +64 -0
- package/dist/api/controllers/query/import/sources/base/openapi.js +42 -0
- package/dist/api/controllers/query/import/sources/curl.js +96 -0
- package/dist/api/controllers/query/import/sources/openapi2.js +142 -0
- package/dist/api/controllers/query/import/sources/tests/openapi2/data/crud/crud.json +253 -0
- package/dist/api/controllers/query/import/sources/tests/openapi2/data/petstore/petstore.json +1054 -0
- package/dist/api/controllers/{query.js → query/index.js} +86 -52
- package/dist/api/controllers/query/validation.js +38 -0
- package/dist/api/controllers/row/internal.js +14 -6
- package/dist/api/controllers/row/internalSearch.js +2 -1
- package/dist/api/controllers/row/utils.js +13 -6
- package/dist/api/controllers/user.js +37 -1
- package/dist/api/controllers/webhook.js +4 -0
- package/dist/api/routes/query.js +5 -33
- package/dist/api/routes/user.js +3 -1
- package/dist/automations/steps/executeQuery.js +8 -1
- package/dist/automations/steps/outgoingWebhook.js +2 -3
- package/dist/automations/utils.js +10 -0
- package/dist/db/utils.js +8 -0
- package/dist/definitions/datasource.js +6 -1
- package/dist/integrations/base/sqlTable.js +1 -1
- package/dist/integrations/rest.js +207 -117
- package/dist/package.json +11 -4
- package/dist/tests/utilities/TestConfiguration.js +7 -0
- package/dist/threads/query.js +148 -40
- package/dist/threads/utils.js +105 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utilities/fileSystem/utilities.js +2 -1
- package/dist/utilities/index.js +10 -0
- package/dist/utilities/rowProcessor/index.js +76 -0
- package/package.json +12 -5
- package/src/api/controllers/automation.js +8 -4
- package/src/api/controllers/query/import/index.ts +85 -0
- package/src/api/controllers/query/import/sources/base/index.ts +87 -0
- package/src/api/controllers/query/import/sources/base/openapi.ts +24 -0
- package/src/api/controllers/query/import/sources/curl.ts +102 -0
- package/src/api/controllers/query/import/sources/openapi2.ts +163 -0
- package/src/api/controllers/query/import/sources/tests/curl/curl.spec.js +103 -0
- package/src/api/controllers/query/import/sources/tests/curl/data/delete.txt +1 -0
- package/src/api/controllers/query/import/sources/tests/curl/data/empty-body.txt +2 -0
- package/src/api/controllers/query/import/sources/tests/curl/data/get.txt +1 -0
- package/src/api/controllers/query/import/sources/tests/curl/data/headers.txt +3 -0
- package/src/api/controllers/query/import/sources/tests/curl/data/patch.txt +2 -0
- package/src/api/controllers/query/import/sources/tests/curl/data/path.txt +1 -0
- package/src/api/controllers/query/import/sources/tests/curl/data/post.txt +2 -0
- package/src/api/controllers/query/import/sources/tests/curl/data/put.txt +2 -0
- package/src/api/controllers/query/import/sources/tests/curl/data/query.txt +1 -0
- package/src/api/controllers/query/import/sources/tests/openapi2/data/crud/crud.json +253 -0
- package/src/api/controllers/query/import/sources/tests/openapi2/data/crud/crud.yaml +160 -0
- package/src/api/controllers/query/import/sources/tests/openapi2/data/petstore/petstore.json +1054 -0
- package/src/api/controllers/query/import/sources/tests/openapi2/data/petstore/petstore.yaml +711 -0
- package/src/api/controllers/query/import/sources/tests/openapi2/openapi2.spec.js +238 -0
- package/src/api/controllers/query/import/tests/index.spec.js +109 -0
- package/src/api/controllers/query/index.js +195 -0
- package/src/api/controllers/query/validation.js +42 -0
- package/src/api/controllers/row/internal.js +14 -5
- package/src/api/controllers/row/internalSearch.js +2 -1
- package/src/api/controllers/row/utils.js +11 -8
- package/src/api/controllers/user.js +33 -0
- package/src/api/controllers/webhook.js +4 -0
- package/src/api/routes/query.js +13 -35
- package/src/api/routes/tests/query.spec.js +88 -0
- package/src/api/routes/user.js +10 -0
- package/src/automations/steps/executeQuery.js +9 -1
- package/src/automations/steps/outgoingWebhook.js +2 -3
- package/src/automations/utils.js +11 -0
- package/src/db/utils.js +9 -0
- package/src/definitions/common.ts +2 -16
- package/src/definitions/datasource.ts +83 -1
- package/src/integrations/base/IntegrationBase.ts +4 -4
- package/src/integrations/base/sqlTable.ts +1 -1
- package/src/integrations/oracle.ts +1 -1
- package/src/integrations/rest.ts +230 -137
- package/src/integrations/tests/rest.spec.js +167 -19
- package/src/tests/utilities/TestConfiguration.js +10 -0
- package/src/threads/query.js +149 -40
- package/src/threads/utils.js +115 -0
- package/src/utilities/fileSystem/utilities.js +2 -0
- package/src/utilities/index.js +11 -0
- package/src/utilities/rowProcessor/index.js +75 -0
- package/builder/assets/index.f01106f0.js +0 -1316
- package/src/api/controllers/query.js +0 -158
|
@@ -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">92.39% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>85/92</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">81.08% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>30/37</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">91.66% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>11/12</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">93.18% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>82/88</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 high'></div>
|
|
59
59
|
<pre><table class="coverage">
|
|
60
60
|
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
61
61
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
@@ -121,127 +121,454 @@
|
|
|
121
121
|
<a name='L62'></a><a href='#L62'>62</a>
|
|
122
122
|
<a name='L63'></a><a href='#L63'>63</a>
|
|
123
123
|
<a name='L64'></a><a href='#L64'>64</a>
|
|
124
|
-
<a name='L65'></a><a href='#L65'>65</a
|
|
124
|
+
<a name='L65'></a><a href='#L65'>65</a>
|
|
125
|
+
<a name='L66'></a><a href='#L66'>66</a>
|
|
126
|
+
<a name='L67'></a><a href='#L67'>67</a>
|
|
127
|
+
<a name='L68'></a><a href='#L68'>68</a>
|
|
128
|
+
<a name='L69'></a><a href='#L69'>69</a>
|
|
129
|
+
<a name='L70'></a><a href='#L70'>70</a>
|
|
130
|
+
<a name='L71'></a><a href='#L71'>71</a>
|
|
131
|
+
<a name='L72'></a><a href='#L72'>72</a>
|
|
132
|
+
<a name='L73'></a><a href='#L73'>73</a>
|
|
133
|
+
<a name='L74'></a><a href='#L74'>74</a>
|
|
134
|
+
<a name='L75'></a><a href='#L75'>75</a>
|
|
135
|
+
<a name='L76'></a><a href='#L76'>76</a>
|
|
136
|
+
<a name='L77'></a><a href='#L77'>77</a>
|
|
137
|
+
<a name='L78'></a><a href='#L78'>78</a>
|
|
138
|
+
<a name='L79'></a><a href='#L79'>79</a>
|
|
139
|
+
<a name='L80'></a><a href='#L80'>80</a>
|
|
140
|
+
<a name='L81'></a><a href='#L81'>81</a>
|
|
141
|
+
<a name='L82'></a><a href='#L82'>82</a>
|
|
142
|
+
<a name='L83'></a><a href='#L83'>83</a>
|
|
143
|
+
<a name='L84'></a><a href='#L84'>84</a>
|
|
144
|
+
<a name='L85'></a><a href='#L85'>85</a>
|
|
145
|
+
<a name='L86'></a><a href='#L86'>86</a>
|
|
146
|
+
<a name='L87'></a><a href='#L87'>87</a>
|
|
147
|
+
<a name='L88'></a><a href='#L88'>88</a>
|
|
148
|
+
<a name='L89'></a><a href='#L89'>89</a>
|
|
149
|
+
<a name='L90'></a><a href='#L90'>90</a>
|
|
150
|
+
<a name='L91'></a><a href='#L91'>91</a>
|
|
151
|
+
<a name='L92'></a><a href='#L92'>92</a>
|
|
152
|
+
<a name='L93'></a><a href='#L93'>93</a>
|
|
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>
|
|
189
|
+
<a name='L130'></a><a href='#L130'>130</a>
|
|
190
|
+
<a name='L131'></a><a href='#L131'>131</a>
|
|
191
|
+
<a name='L132'></a><a href='#L132'>132</a>
|
|
192
|
+
<a name='L133'></a><a href='#L133'>133</a>
|
|
193
|
+
<a name='L134'></a><a href='#L134'>134</a>
|
|
194
|
+
<a name='L135'></a><a href='#L135'>135</a>
|
|
195
|
+
<a name='L136'></a><a href='#L136'>136</a>
|
|
196
|
+
<a name='L137'></a><a href='#L137'>137</a>
|
|
197
|
+
<a name='L138'></a><a href='#L138'>138</a>
|
|
198
|
+
<a name='L139'></a><a href='#L139'>139</a>
|
|
199
|
+
<a name='L140'></a><a href='#L140'>140</a>
|
|
200
|
+
<a name='L141'></a><a href='#L141'>141</a>
|
|
201
|
+
<a name='L142'></a><a href='#L142'>142</a>
|
|
202
|
+
<a name='L143'></a><a href='#L143'>143</a>
|
|
203
|
+
<a name='L144'></a><a href='#L144'>144</a>
|
|
204
|
+
<a name='L145'></a><a href='#L145'>145</a>
|
|
205
|
+
<a name='L146'></a><a href='#L146'>146</a>
|
|
206
|
+
<a name='L147'></a><a href='#L147'>147</a>
|
|
207
|
+
<a name='L148'></a><a href='#L148'>148</a>
|
|
208
|
+
<a name='L149'></a><a href='#L149'>149</a>
|
|
209
|
+
<a name='L150'></a><a href='#L150'>150</a>
|
|
210
|
+
<a name='L151'></a><a href='#L151'>151</a>
|
|
211
|
+
<a name='L152'></a><a href='#L152'>152</a>
|
|
212
|
+
<a name='L153'></a><a href='#L153'>153</a>
|
|
213
|
+
<a name='L154'></a><a href='#L154'>154</a>
|
|
214
|
+
<a name='L155'></a><a href='#L155'>155</a>
|
|
215
|
+
<a name='L156'></a><a href='#L156'>156</a>
|
|
216
|
+
<a name='L157'></a><a href='#L157'>157</a>
|
|
217
|
+
<a name='L158'></a><a href='#L158'>158</a>
|
|
218
|
+
<a name='L159'></a><a href='#L159'>159</a>
|
|
219
|
+
<a name='L160'></a><a href='#L160'>160</a>
|
|
220
|
+
<a name='L161'></a><a href='#L161'>161</a>
|
|
221
|
+
<a name='L162'></a><a href='#L162'>162</a>
|
|
222
|
+
<a name='L163'></a><a href='#L163'>163</a>
|
|
223
|
+
<a name='L164'></a><a href='#L164'>164</a>
|
|
224
|
+
<a name='L165'></a><a href='#L165'>165</a>
|
|
225
|
+
<a name='L166'></a><a href='#L166'>166</a>
|
|
226
|
+
<a name='L167'></a><a href='#L167'>167</a>
|
|
227
|
+
<a name='L168'></a><a href='#L168'>168</a>
|
|
228
|
+
<a name='L169'></a><a href='#L169'>169</a>
|
|
229
|
+
<a name='L170'></a><a href='#L170'>170</a>
|
|
230
|
+
<a name='L171'></a><a href='#L171'>171</a>
|
|
231
|
+
<a name='L172'></a><a href='#L172'>172</a>
|
|
232
|
+
<a name='L173'></a><a href='#L173'>173</a>
|
|
233
|
+
<a name='L174'></a><a href='#L174'>174</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
234
|
+
<span class="cline-any cline-yes">1x</span>
|
|
235
|
+
<span class="cline-any cline-yes">1x</span>
|
|
236
|
+
<span class="cline-any cline-yes">1x</span>
|
|
125
237
|
<span class="cline-any cline-yes">1x</span>
|
|
126
238
|
<span class="cline-any cline-yes">1x</span>
|
|
127
239
|
<span class="cline-any cline-neutral"> </span>
|
|
128
240
|
<span class="cline-any cline-neutral"> </span>
|
|
129
|
-
<span class="cline-any cline-yes">2x</span>
|
|
130
|
-
<span class="cline-any cline-no"> </span>
|
|
131
|
-
<span class="cline-any cline-no"> </span>
|
|
132
241
|
<span class="cline-any cline-neutral"> </span>
|
|
133
|
-
<span class="cline-any cline-
|
|
242
|
+
<span class="cline-any cline-yes">11x</span>
|
|
243
|
+
<span class="cline-any cline-yes">11x</span>
|
|
244
|
+
<span class="cline-any cline-yes">11x</span>
|
|
245
|
+
<span class="cline-any cline-yes">11x</span>
|
|
246
|
+
<span class="cline-any cline-yes">11x</span>
|
|
247
|
+
<span class="cline-any cline-yes">11x</span>
|
|
248
|
+
<span class="cline-any cline-yes">11x</span>
|
|
249
|
+
<span class="cline-any cline-yes">11x</span>
|
|
250
|
+
<span class="cline-any cline-yes">11x</span>
|
|
134
251
|
<span class="cline-any cline-neutral"> </span>
|
|
135
252
|
<span class="cline-any cline-neutral"> </span>
|
|
136
|
-
<span class="cline-any cline-yes">2x</span>
|
|
137
253
|
<span class="cline-any cline-neutral"> </span>
|
|
254
|
+
<span class="cline-any cline-yes">11x</span>
|
|
255
|
+
<span class="cline-any cline-yes">11x</span>
|
|
138
256
|
<span class="cline-any cline-neutral"> </span>
|
|
139
257
|
<span class="cline-any cline-neutral"> </span>
|
|
140
|
-
<span class="cline-any cline-yes">4x</span>
|
|
141
|
-
<span class="cline-any cline-yes">4x</span>
|
|
142
|
-
<span class="cline-any cline-yes">2x</span>
|
|
143
258
|
<span class="cline-any cline-neutral"> </span>
|
|
144
|
-
<span class="cline-any cline-yes">
|
|
259
|
+
<span class="cline-any cline-yes">12x</span>
|
|
145
260
|
<span class="cline-any cline-neutral"> </span>
|
|
261
|
+
<span class="cline-any cline-yes">12x</span>
|
|
262
|
+
<span class="cline-any cline-yes">12x</span>
|
|
263
|
+
<span class="cline-any cline-yes">12x</span>
|
|
264
|
+
<span class="cline-any cline-yes">12x</span>
|
|
146
265
|
<span class="cline-any cline-yes">2x</span>
|
|
147
266
|
<span class="cline-any cline-neutral"> </span>
|
|
267
|
+
<span class="cline-any cline-yes">10x</span>
|
|
148
268
|
<span class="cline-any cline-neutral"> </span>
|
|
149
|
-
<span class="cline-any cline-yes">
|
|
269
|
+
<span class="cline-any cline-yes">10x</span>
|
|
270
|
+
<span class="cline-any cline-yes">10x</span>
|
|
271
|
+
<span class="cline-any cline-yes">10x</span>
|
|
272
|
+
<span class="cline-any cline-yes">10x</span>
|
|
273
|
+
<span class="cline-any cline-yes">10x</span>
|
|
274
|
+
<span class="cline-any cline-yes">8x</span>
|
|
275
|
+
<span class="cline-any cline-yes">8x</span>
|
|
276
|
+
<span class="cline-any cline-yes">8x</span>
|
|
277
|
+
<span class="cline-any cline-neutral"> </span>
|
|
278
|
+
<span class="cline-any cline-neutral"> </span>
|
|
279
|
+
<span class="cline-any cline-neutral"> </span>
|
|
280
|
+
<span class="cline-any cline-yes">10x</span>
|
|
150
281
|
<span class="cline-any cline-no"> </span>
|
|
282
|
+
<span class="cline-any cline-neutral"> </span>
|
|
283
|
+
<span class="cline-any cline-neutral"> </span>
|
|
284
|
+
<span class="cline-any cline-neutral"> </span>
|
|
151
285
|
<span class="cline-any cline-no"> </span>
|
|
152
286
|
<span class="cline-any cline-neutral"> </span>
|
|
153
287
|
<span class="cline-any cline-neutral"> </span>
|
|
154
288
|
<span class="cline-any cline-neutral"> </span>
|
|
155
|
-
<span class="cline-any cline-yes">
|
|
289
|
+
<span class="cline-any cline-yes">10x</span>
|
|
290
|
+
<span class="cline-any cline-neutral"> </span>
|
|
291
|
+
<span class="cline-any cline-neutral"> </span>
|
|
292
|
+
<span class="cline-any cline-neutral"> </span>
|
|
293
|
+
<span class="cline-any cline-neutral"> </span>
|
|
294
|
+
<span class="cline-any cline-neutral"> </span>
|
|
295
|
+
<span class="cline-any cline-yes">1x</span>
|
|
296
|
+
<span class="cline-any cline-neutral"> </span>
|
|
297
|
+
<span class="cline-any cline-yes">1x</span>
|
|
298
|
+
<span class="cline-any cline-yes">1x</span>
|
|
299
|
+
<span class="cline-any cline-neutral"> </span>
|
|
300
|
+
<span class="cline-any cline-neutral"> </span>
|
|
301
|
+
<span class="cline-any cline-neutral"> </span>
|
|
302
|
+
<span class="cline-any cline-yes">9x</span>
|
|
303
|
+
<span class="cline-any cline-yes">7x</span>
|
|
304
|
+
<span class="cline-any cline-neutral"> </span>
|
|
305
|
+
<span class="cline-any cline-neutral"> </span>
|
|
306
|
+
<span class="cline-any cline-neutral"> </span>
|
|
307
|
+
<span class="cline-any cline-yes">9x</span>
|
|
156
308
|
<span class="cline-any cline-no"> </span>
|
|
157
309
|
<span class="cline-any cline-neutral"> </span>
|
|
158
310
|
<span class="cline-any cline-neutral"> </span>
|
|
159
311
|
<span class="cline-any cline-neutral"> </span>
|
|
160
|
-
<span class="cline-any cline-yes">
|
|
312
|
+
<span class="cline-any cline-yes">9x</span>
|
|
313
|
+
<span class="cline-any cline-neutral"> </span>
|
|
314
|
+
<span class="cline-any cline-yes">9x</span>
|
|
161
315
|
<span class="cline-any cline-no"> </span>
|
|
162
316
|
<span class="cline-any cline-neutral"> </span>
|
|
163
317
|
<span class="cline-any cline-neutral"> </span>
|
|
318
|
+
<span class="cline-any cline-yes">9x</span>
|
|
319
|
+
<span class="cline-any cline-neutral"> </span>
|
|
320
|
+
<span class="cline-any cline-neutral"> </span>
|
|
321
|
+
<span class="cline-any cline-neutral"> </span>
|
|
322
|
+
<span class="cline-any cline-yes">3x</span>
|
|
323
|
+
<span class="cline-any cline-yes">3x</span>
|
|
324
|
+
<span class="cline-any cline-yes">3x</span>
|
|
325
|
+
<span class="cline-any cline-yes">3x</span>
|
|
326
|
+
<span class="cline-any cline-neutral"> </span>
|
|
164
327
|
<span class="cline-any cline-neutral"> </span>
|
|
165
|
-
<span class="cline-any cline-yes">2x</span>
|
|
166
328
|
<span class="cline-any cline-neutral"> </span>
|
|
329
|
+
<span class="cline-any cline-neutral"> </span>
|
|
330
|
+
<span class="cline-any cline-neutral"> </span>
|
|
331
|
+
<span class="cline-any cline-neutral"> </span>
|
|
332
|
+
<span class="cline-any cline-neutral"> </span>
|
|
333
|
+
<span class="cline-any cline-neutral"> </span>
|
|
334
|
+
<span class="cline-any cline-neutral"> </span>
|
|
335
|
+
<span class="cline-any cline-neutral"> </span>
|
|
336
|
+
<span class="cline-any cline-neutral"> </span>
|
|
337
|
+
<span class="cline-any cline-neutral"> </span>
|
|
338
|
+
<span class="cline-any cline-neutral"> </span>
|
|
339
|
+
<span class="cline-any cline-yes">4x</span>
|
|
340
|
+
<span class="cline-any cline-yes">4x</span>
|
|
341
|
+
<span class="cline-any cline-yes">4x</span>
|
|
342
|
+
<span class="cline-any cline-yes">4x</span>
|
|
343
|
+
<span class="cline-any cline-yes">4x</span>
|
|
344
|
+
<span class="cline-any cline-yes">3x</span>
|
|
345
|
+
<span class="cline-any cline-neutral"> </span>
|
|
346
|
+
<span class="cline-any cline-neutral"> </span>
|
|
347
|
+
<span class="cline-any cline-neutral"> </span>
|
|
348
|
+
<span class="cline-any cline-yes">3x</span>
|
|
349
|
+
<span class="cline-any cline-yes">3x</span>
|
|
350
|
+
<span class="cline-any cline-neutral"> </span>
|
|
351
|
+
<span class="cline-any cline-yes">1x</span>
|
|
352
|
+
<span class="cline-any cline-neutral"> </span>
|
|
353
|
+
<span class="cline-any cline-yes">4x</span>
|
|
354
|
+
<span class="cline-any cline-neutral"> </span>
|
|
355
|
+
<span class="cline-any cline-neutral"> </span>
|
|
356
|
+
<span class="cline-any cline-neutral"> </span>
|
|
357
|
+
<span class="cline-any cline-yes">12x</span>
|
|
358
|
+
<span class="cline-any cline-yes">12x</span>
|
|
359
|
+
<span class="cline-any cline-no"> </span>
|
|
360
|
+
<span class="cline-any cline-neutral"> </span>
|
|
361
|
+
<span class="cline-any cline-yes">12x</span>
|
|
362
|
+
<span class="cline-any cline-yes">12x</span>
|
|
363
|
+
<span class="cline-any cline-yes">12x</span>
|
|
167
364
|
<span class="cline-any cline-yes">2x</span>
|
|
365
|
+
<span class="cline-any cline-yes">2x</span>
|
|
366
|
+
<span class="cline-any cline-neutral"> </span>
|
|
367
|
+
<span class="cline-any cline-neutral"> </span>
|
|
368
|
+
<span class="cline-any cline-yes">12x</span>
|
|
369
|
+
<span class="cline-any cline-neutral"> </span>
|
|
370
|
+
<span class="cline-any cline-yes">9x</span>
|
|
371
|
+
<span class="cline-any cline-yes">9x</span>
|
|
372
|
+
<span class="cline-any cline-neutral"> </span>
|
|
373
|
+
<span class="cline-any cline-yes">4x</span>
|
|
168
374
|
<span class="cline-any cline-no"> </span>
|
|
169
375
|
<span class="cline-any cline-neutral"> </span>
|
|
170
376
|
<span class="cline-any cline-neutral"> </span>
|
|
171
|
-
<span class="cline-any cline-yes">
|
|
377
|
+
<span class="cline-any cline-yes">4x</span>
|
|
378
|
+
<span class="cline-any cline-yes">4x</span>
|
|
379
|
+
<span class="cline-any cline-neutral"> </span>
|
|
380
|
+
<span class="cline-any cline-yes">9x</span>
|
|
381
|
+
<span class="cline-any cline-yes">9x</span>
|
|
382
|
+
<span class="cline-any cline-yes">9x</span>
|
|
383
|
+
<span class="cline-any cline-yes">4x</span>
|
|
384
|
+
<span class="cline-any cline-yes">4x</span>
|
|
385
|
+
<span class="cline-any cline-neutral"> </span>
|
|
386
|
+
<span class="cline-any cline-neutral"> </span>
|
|
172
387
|
<span class="cline-any cline-neutral"> </span>
|
|
173
388
|
<span class="cline-any cline-neutral"> </span>
|
|
174
|
-
<span class="cline-any cline-yes">1x</span>
|
|
175
389
|
<span class="cline-any cline-yes">4x</span>
|
|
176
390
|
<span class="cline-any cline-neutral"> </span>
|
|
177
391
|
<span class="cline-any cline-neutral"> </span>
|
|
392
|
+
<span class="cline-any cline-yes">12x</span>
|
|
178
393
|
<span class="cline-any cline-neutral"> </span>
|
|
179
394
|
<span class="cline-any cline-neutral"> </span>
|
|
180
395
|
<span class="cline-any cline-neutral"> </span>
|
|
396
|
+
<span class="cline-any cline-yes">1x</span>
|
|
397
|
+
<span class="cline-any cline-yes">8x</span>
|
|
398
|
+
<span class="cline-any cline-yes">8x</span>
|
|
181
399
|
<span class="cline-any cline-neutral"> </span>
|
|
182
|
-
<span class="cline-any cline-yes">
|
|
400
|
+
<span class="cline-any cline-yes">6x</span>
|
|
183
401
|
<span class="cline-any cline-neutral"> </span>
|
|
184
402
|
<span class="cline-any cline-neutral"> </span>
|
|
185
403
|
<span class="cline-any cline-yes">2x</span>
|
|
186
404
|
<span class="cline-any cline-neutral"> </span>
|
|
187
405
|
<span class="cline-any cline-neutral"> </span>
|
|
188
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">require("./utils")
|
|
406
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">const threadUtils = require("./utils")
|
|
407
|
+
threadUtils.threadSetup()
|
|
189
408
|
const ScriptRunner = require("../utilities/scriptRunner")
|
|
190
409
|
const { integrations } = require("../integrations")
|
|
410
|
+
const { processStringSync } = require("@budibase/string-templates")
|
|
411
|
+
const CouchDB = require("../db")
|
|
191
412
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
413
|
+
class QueryRunner {
|
|
414
|
+
constructor(input, flags = { noRecursiveQuery: false }) {
|
|
415
|
+
this.appId = input.appId
|
|
416
|
+
this.datasource = input.datasource
|
|
417
|
+
this.queryVerb = input.queryVerb
|
|
418
|
+
this.fields = input.fields
|
|
419
|
+
this.parameters = input.parameters
|
|
420
|
+
this.transformer = input.transformer
|
|
421
|
+
this.queryId = input.queryId
|
|
422
|
+
this.noRecursiveQuery = flags.noRecursiveQuery
|
|
423
|
+
this.cachedVariables = []
|
|
424
|
+
// allows the response from a query to be stored throughout this
|
|
425
|
+
// execution so that if it needs to be re-used for another variable
|
|
426
|
+
// it can be
|
|
427
|
+
this.queryResponse = {}
|
|
428
|
+
this.hasRerun = false
|
|
199
429
|
}
|
|
200
|
-
return resp
|
|
201
|
-
}
|
|
202
430
|
|
|
203
|
-
async
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
431
|
+
async execute() {
|
|
432
|
+
let { datasource, fields, queryVerb, transformer } = this
|
|
433
|
+
// pre-query, make sure datasource variables are added to parameters
|
|
434
|
+
const parameters = await this.addDatasourceVariables()
|
|
435
|
+
const query = threadUtils.enrichQueryFields(fields, parameters)
|
|
436
|
+
const Integration = integrations[datasource.source]
|
|
437
|
+
if (!Integration) {
|
|
438
|
+
throw "Integration type does not exist."
|
|
439
|
+
}
|
|
440
|
+
const integration = new Integration(datasource.config)
|
|
209
441
|
|
|
210
|
-
|
|
442
|
+
let output = threadUtils.formatResponse(await integration[queryVerb](query))
|
|
443
|
+
let rows = output,
|
|
444
|
+
info = undefined,
|
|
445
|
+
extra = undefined
|
|
446
|
+
if (threadUtils.hasExtraData(output)) {
|
|
447
|
+
rows = output.data
|
|
448
|
+
info = output.info
|
|
449
|
+
extra = output.extra
|
|
450
|
+
}
|
|
211
451
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
452
|
+
// transform as required
|
|
453
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (transformer) {
|
|
454
|
+
const runner = <span class="cstat-no" title="statement not covered" >new ScriptRunner(transformer, {</span>
|
|
455
|
+
data: rows,
|
|
456
|
+
params: parameters,
|
|
457
|
+
})
|
|
458
|
+
<span class="cstat-no" title="statement not covered" > rows = runner.execute()</span>
|
|
459
|
+
}
|
|
217
460
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
461
|
+
// if the request fails we retry once, invalidating the cached value
|
|
462
|
+
if (
|
|
463
|
+
info &&
|
|
464
|
+
info.code >= 400 &&
|
|
465
|
+
this.cachedVariables.length > 0 &&
|
|
466
|
+
!this.hasRerun
|
|
467
|
+
) {
|
|
468
|
+
this.hasRerun = true
|
|
469
|
+
// invalidate the cache value
|
|
470
|
+
await threadUtils.invalidateDynamicVariables(this.cachedVariables)
|
|
471
|
+
return this.execute()
|
|
472
|
+
}
|
|
222
473
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
474
|
+
// needs to an array for next step
|
|
475
|
+
if (!Array.isArray(rows)) {
|
|
476
|
+
rows = [rows]
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
// map into JSON if just raw primitive here
|
|
480
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (rows.find(row => typeof row !== "object")) {
|
|
481
|
+
<span class="cstat-no" title="statement not covered" > rows = rows.map(<span class="fstat-no" title="function not covered" >va</span>lue => (<span class="cstat-no" title="statement not covered" >{ value })</span>)</span>
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
// get all the potential fields in the schema
|
|
485
|
+
let keys = rows.flatMap(Object.keys)
|
|
486
|
+
|
|
487
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (integration.end) {
|
|
488
|
+
<span class="cstat-no" title="statement not covered" > integration.end()</span>
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
return { rows, keys, info, extra }
|
|
226
492
|
}
|
|
227
493
|
|
|
228
|
-
|
|
229
|
-
|
|
494
|
+
async runAnotherQuery(queryId, parameters) {
|
|
495
|
+
const db = new CouchDB(this.appId)
|
|
496
|
+
const query = await db.get(queryId)
|
|
497
|
+
const datasource = await db.get(query.datasourceId)
|
|
498
|
+
return new QueryRunner(
|
|
499
|
+
{
|
|
500
|
+
appId: this.appId,
|
|
501
|
+
datasource,
|
|
502
|
+
queryVerb: query.queryVerb,
|
|
503
|
+
fields: query.fields,
|
|
504
|
+
parameters,
|
|
505
|
+
transformer: query.transformer,
|
|
506
|
+
},
|
|
507
|
+
{ noRecursiveQuery: true }
|
|
508
|
+
).execute()
|
|
509
|
+
}
|
|
230
510
|
|
|
231
|
-
|
|
232
|
-
|
|
511
|
+
async getDynamicVariable(variable) {
|
|
512
|
+
let { parameters } = this
|
|
513
|
+
const queryId = variable.queryId,
|
|
514
|
+
name = variable.name
|
|
515
|
+
let value = await threadUtils.checkCacheForDynamicVariable(queryId, name)
|
|
516
|
+
if (!value) {
|
|
517
|
+
value = this.queryResponse[queryId]
|
|
518
|
+
? <span class="branch-0 cbranch-no" title="branch not covered" >this.queryResponse[queryId]</span>
|
|
519
|
+
: await this.runAnotherQuery(queryId, parameters)
|
|
520
|
+
// store incase this query is to be called again
|
|
521
|
+
this.queryResponse[queryId] = value
|
|
522
|
+
await threadUtils.storeDynamicVariable(queryId, name, value)
|
|
523
|
+
} else {
|
|
524
|
+
this.cachedVariables.push({ queryId, name })
|
|
525
|
+
}
|
|
526
|
+
return value
|
|
233
527
|
}
|
|
234
528
|
|
|
235
|
-
|
|
529
|
+
async addDatasourceVariables() {
|
|
530
|
+
let { datasource, parameters, fields } = this
|
|
531
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!datasource || !datasource.config) {
|
|
532
|
+
<span class="cstat-no" title="statement not covered" > return parameters</span>
|
|
533
|
+
}
|
|
534
|
+
const staticVars = datasource.config.staticVariables || {}
|
|
535
|
+
const dynamicVars = datasource.config.dynamicVariables || []
|
|
536
|
+
for (let [key, value] of Object.entries(staticVars)) {
|
|
537
|
+
if (!parameters[key]) {
|
|
538
|
+
parameters[key] = value
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
if (!this.noRecursiveQuery) {
|
|
542
|
+
// need to see if this uses any variables
|
|
543
|
+
const stringFields = JSON.stringify(fields)
|
|
544
|
+
const foundVars = dynamicVars.filter(variable => {
|
|
545
|
+
// don't allow a query to use its own dynamic variable (loop)
|
|
546
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (variable.queryId === this.queryId) {
|
|
547
|
+
<span class="cstat-no" title="statement not covered" > return false</span>
|
|
548
|
+
}
|
|
549
|
+
// look for {{ variable }} but allow spaces between handlebars
|
|
550
|
+
const regex = new RegExp(`{{[ ]*${variable.name}[ ]*}}`)
|
|
551
|
+
return regex.test(stringFields)
|
|
552
|
+
})
|
|
553
|
+
const dynamics = foundVars.map(dynVar => this.getDynamicVariable(dynVar))
|
|
554
|
+
const responses = await Promise.all(dynamics)
|
|
555
|
+
for (let i = 0; i < foundVars.length; i++) {
|
|
556
|
+
const variable = foundVars[i]
|
|
557
|
+
parameters[variable.name] = processStringSync(variable.value, {
|
|
558
|
+
data: responses[i].rows,
|
|
559
|
+
info: responses[i].extra,
|
|
560
|
+
})
|
|
561
|
+
// make sure its known that this uses dynamic variables in case it fails
|
|
562
|
+
this.hasDynamicVariables = true
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
return parameters
|
|
566
|
+
}
|
|
236
567
|
}
|
|
237
568
|
|
|
238
569
|
module.exports = (input, callback) => {
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
input.queryVerb,
|
|
242
|
-
input.query,
|
|
243
|
-
input.transformer
|
|
244
|
-
)
|
|
570
|
+
const Runner = new QueryRunner(input)
|
|
571
|
+
Runner.execute()
|
|
245
572
|
.then(response => {
|
|
246
573
|
callback(null, response)
|
|
247
574
|
})
|
|
@@ -256,7 +583,7 @@ module.exports = (input, callback) => {
|
|
|
256
583
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
257
584
|
Code coverage generated by
|
|
258
585
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
259
|
-
at
|
|
586
|
+
at Tue Jan 11 2022 13:49:36 GMT+0000 (Coordinated Universal Time)
|
|
260
587
|
</div>
|
|
261
588
|
</div>
|
|
262
589
|
<script src="../prettify.js"></script>
|