@budibase/server 1.0.26 → 1.0.27-alpha.11
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.b98dd7ca.js +1348 -0
- package/builder/assets/{vendor.470042a4.js → vendor.f9faf6ab.js} +88 -88
- package/builder/index.html +3 -3
- package/coverage/clover.xml +1364 -1121
- package/coverage/coverage-final.json +37 -36
- 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 +59 -59
- 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 +170 -68
- 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 +18 -18
- 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 +12 -12
- package/coverage/lcov-report/threads/query.js.html +396 -69
- package/coverage/lcov-report/threads/utils.js.html +358 -13
- 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 +69 -36
- 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 +19 -19
- package/coverage/lcov.info +2294 -1874
- package/dist/api/controllers/automation.js +7 -5
- package/dist/api/controllers/datasource.js +29 -0
- 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 +47 -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/datasource.js +34 -0
- 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/datasource.spec.js +45 -0
- package/src/api/routes/tests/query.spec.js +69 -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 +57 -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.8adef83f.js +0 -1316
- package/src/api/controllers/query.js +0 -158
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
<html lang="en">
|
|
4
4
|
|
|
5
5
|
<head>
|
|
6
|
-
<title>Code coverage report for api/controllers/query.js</title>
|
|
6
|
+
<title>Code coverage report for api/controllers/query/index.js</title>
|
|
7
7
|
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="
|
|
9
|
-
<link rel="stylesheet" href="
|
|
10
|
-
<link rel="shortcut icon" type="image/x-icon" href="
|
|
8
|
+
<link rel="stylesheet" href="../../../prettify.css" />
|
|
9
|
+
<link rel="stylesheet" href="../../../base.css" />
|
|
10
|
+
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
|
|
11
11
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
12
|
<style type='text/css'>
|
|
13
13
|
.coverage-summary .sorter {
|
|
14
|
-
background-image: url(
|
|
14
|
+
background-image: url(../../../sort-arrow-sprite.png);
|
|
15
15
|
}
|
|
16
16
|
</style>
|
|
17
17
|
</head>
|
|
@@ -19,34 +19,34 @@
|
|
|
19
19
|
<body>
|
|
20
20
|
<div class='wrapper'>
|
|
21
21
|
<div class='pad1'>
|
|
22
|
-
<h1><a href="
|
|
22
|
+
<h1><a href="../../../index.html">All files</a> / <a href="index.html">api/controllers/query</a> index.js</h1>
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">81.11% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>73/90</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
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">85.71% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>12/14</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">80.68% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>71/88</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -215,8 +215,44 @@
|
|
|
215
215
|
<a name='L156'></a><a href='#L156'>156</a>
|
|
216
216
|
<a name='L157'></a><a href='#L157'>157</a>
|
|
217
217
|
<a name='L158'></a><a href='#L158'>158</a>
|
|
218
|
-
<a name='L159'></a><a href='#L159'>159</a
|
|
219
|
-
<
|
|
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>
|
|
234
|
+
<a name='L175'></a><a href='#L175'>175</a>
|
|
235
|
+
<a name='L176'></a><a href='#L176'>176</a>
|
|
236
|
+
<a name='L177'></a><a href='#L177'>177</a>
|
|
237
|
+
<a name='L178'></a><a href='#L178'>178</a>
|
|
238
|
+
<a name='L179'></a><a href='#L179'>179</a>
|
|
239
|
+
<a name='L180'></a><a href='#L180'>180</a>
|
|
240
|
+
<a name='L181'></a><a href='#L181'>181</a>
|
|
241
|
+
<a name='L182'></a><a href='#L182'>182</a>
|
|
242
|
+
<a name='L183'></a><a href='#L183'>183</a>
|
|
243
|
+
<a name='L184'></a><a href='#L184'>184</a>
|
|
244
|
+
<a name='L185'></a><a href='#L185'>185</a>
|
|
245
|
+
<a name='L186'></a><a href='#L186'>186</a>
|
|
246
|
+
<a name='L187'></a><a href='#L187'>187</a>
|
|
247
|
+
<a name='L188'></a><a href='#L188'>188</a>
|
|
248
|
+
<a name='L189'></a><a href='#L189'>189</a>
|
|
249
|
+
<a name='L190'></a><a href='#L190'>190</a>
|
|
250
|
+
<a name='L191'></a><a href='#L191'>191</a>
|
|
251
|
+
<a name='L192'></a><a href='#L192'>192</a>
|
|
252
|
+
<a name='L193'></a><a href='#L193'>193</a>
|
|
253
|
+
<a name='L194'></a><a href='#L194'>194</a>
|
|
254
|
+
<a name='L195'></a><a href='#L195'>195</a>
|
|
255
|
+
<a name='L196'></a><a href='#L196'>196</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">34x</span>
|
|
220
256
|
<span class="cline-any cline-neutral"> </span>
|
|
221
257
|
<span class="cline-any cline-neutral"> </span>
|
|
222
258
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -224,6 +260,9 @@
|
|
|
224
260
|
<span class="cline-any cline-yes">34x</span>
|
|
225
261
|
<span class="cline-any cline-yes">34x</span>
|
|
226
262
|
<span class="cline-any cline-yes">34x</span>
|
|
263
|
+
<span class="cline-any cline-yes">34x</span>
|
|
264
|
+
<span class="cline-any cline-yes">34x</span>
|
|
265
|
+
<span class="cline-any cline-yes">34x</span>
|
|
227
266
|
<span class="cline-any cline-neutral"> </span>
|
|
228
267
|
<span class="cline-any cline-yes">34x</span>
|
|
229
268
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -247,63 +286,62 @@
|
|
|
247
286
|
<span class="cline-any cline-neutral"> </span>
|
|
248
287
|
<span class="cline-any cline-neutral"> </span>
|
|
249
288
|
<span class="cline-any cline-neutral"> </span>
|
|
289
|
+
<span class="cline-any cline-neutral"> </span>
|
|
250
290
|
<span class="cline-any cline-yes">2x</span>
|
|
251
291
|
<span class="cline-any cline-neutral"> </span>
|
|
252
292
|
<span class="cline-any cline-neutral"> </span>
|
|
253
293
|
<span class="cline-any cline-yes">34x</span>
|
|
254
|
-
<span class="cline-any cline-
|
|
255
|
-
<span class="cline-any cline-
|
|
294
|
+
<span class="cline-any cline-no"> </span>
|
|
295
|
+
<span class="cline-any cline-no"> </span>
|
|
256
296
|
<span class="cline-any cline-neutral"> </span>
|
|
257
|
-
<span class="cline-any cline-
|
|
258
|
-
<span class="cline-any cline-
|
|
297
|
+
<span class="cline-any cline-no"> </span>
|
|
298
|
+
<span class="cline-any cline-no"> </span>
|
|
259
299
|
<span class="cline-any cline-neutral"> </span>
|
|
260
300
|
<span class="cline-any cline-neutral"> </span>
|
|
261
|
-
<span class="cline-any cline-
|
|
262
|
-
<span class="cline-any cline-
|
|
301
|
+
<span class="cline-any cline-no"> </span>
|
|
302
|
+
<span class="cline-any cline-neutral"> </span>
|
|
303
|
+
<span class="cline-any cline-no"> </span>
|
|
304
|
+
<span class="cline-any cline-no"> </span>
|
|
305
|
+
<span class="cline-any cline-neutral"> </span>
|
|
263
306
|
<span class="cline-any cline-neutral"> </span>
|
|
264
|
-
<span class="cline-any cline-yes">20x</span>
|
|
265
|
-
<span class="cline-any cline-yes">20x</span>
|
|
266
307
|
<span class="cline-any cline-neutral"> </span>
|
|
267
308
|
<span class="cline-any cline-neutral"> </span>
|
|
268
309
|
<span class="cline-any cline-neutral"> </span>
|
|
269
|
-
<span class="cline-any cline-yes">4x</span>
|
|
270
310
|
<span class="cline-any cline-neutral"> </span>
|
|
271
311
|
<span class="cline-any cline-neutral"> </span>
|
|
272
|
-
<span class="cline-any cline-yes">4x</span>
|
|
273
|
-
<span class="cline-any cline-no"> </span>
|
|
274
|
-
<span class="cline-any cline-no"> </span>
|
|
275
312
|
<span class="cline-any cline-neutral"> </span>
|
|
276
|
-
<span class="cline-any cline-no"> </span>
|
|
277
313
|
<span class="cline-any cline-neutral"> </span>
|
|
278
314
|
<span class="cline-any cline-no"> </span>
|
|
279
315
|
<span class="cline-any cline-no"> </span>
|
|
280
|
-
<span class="cline-any cline-neutral"> </span>
|
|
281
316
|
<span class="cline-any cline-no"> </span>
|
|
282
|
-
<span class="cline-any cline-
|
|
317
|
+
<span class="cline-any cline-no"> </span>
|
|
283
318
|
<span class="cline-any cline-neutral"> </span>
|
|
284
319
|
<span class="cline-any cline-neutral"> </span>
|
|
285
320
|
<span class="cline-any cline-no"> </span>
|
|
286
321
|
<span class="cline-any cline-neutral"> </span>
|
|
287
322
|
<span class="cline-any cline-neutral"> </span>
|
|
323
|
+
<span class="cline-any cline-no"> </span>
|
|
288
324
|
<span class="cline-any cline-neutral"> </span>
|
|
289
|
-
<span class="cline-any cline-
|
|
290
|
-
<span class="cline-any cline-neutral"> </span>
|
|
325
|
+
<span class="cline-any cline-no"> </span>
|
|
291
326
|
<span class="cline-any cline-neutral"> </span>
|
|
292
327
|
<span class="cline-any cline-neutral"> </span>
|
|
293
328
|
<span class="cline-any cline-neutral"> </span>
|
|
294
329
|
<span class="cline-any cline-no"> </span>
|
|
295
|
-
<span class="cline-any cline-no"> </span>
|
|
296
|
-
<span class="cline-any cline-neutral"> </span>
|
|
297
|
-
<span class="cline-any cline-neutral"> </span>
|
|
298
330
|
<span class="cline-any cline-neutral"> </span>
|
|
299
331
|
<span class="cline-any cline-neutral"> </span>
|
|
332
|
+
<span class="cline-any cline-yes">34x</span>
|
|
333
|
+
<span class="cline-any cline-yes">28x</span>
|
|
334
|
+
<span class="cline-any cline-yes">28x</span>
|
|
300
335
|
<span class="cline-any cline-neutral"> </span>
|
|
301
|
-
<span class="cline-any cline-
|
|
336
|
+
<span class="cline-any cline-yes">28x</span>
|
|
337
|
+
<span class="cline-any cline-yes">28x</span>
|
|
302
338
|
<span class="cline-any cline-neutral"> </span>
|
|
303
|
-
<span class="cline-any cline-no"> </span>
|
|
304
339
|
<span class="cline-any cline-neutral"> </span>
|
|
340
|
+
<span class="cline-any cline-yes">28x</span>
|
|
341
|
+
<span class="cline-any cline-yes">28x</span>
|
|
305
342
|
<span class="cline-any cline-neutral"> </span>
|
|
306
|
-
<span class="cline-any cline-yes">
|
|
343
|
+
<span class="cline-any cline-yes">28x</span>
|
|
344
|
+
<span class="cline-any cline-yes">28x</span>
|
|
307
345
|
<span class="cline-any cline-neutral"> </span>
|
|
308
346
|
<span class="cline-any cline-neutral"> </span>
|
|
309
347
|
<span class="cline-any cline-yes">34x</span>
|
|
@@ -318,22 +356,28 @@
|
|
|
318
356
|
<span class="cline-any cline-neutral"> </span>
|
|
319
357
|
<span class="cline-any cline-neutral"> </span>
|
|
320
358
|
<span class="cline-any cline-yes">34x</span>
|
|
321
|
-
<span class="cline-any cline-yes">
|
|
359
|
+
<span class="cline-any cline-yes">8x</span>
|
|
322
360
|
<span class="cline-any cline-neutral"> </span>
|
|
323
|
-
<span class="cline-any cline-yes">
|
|
361
|
+
<span class="cline-any cline-yes">8x</span>
|
|
324
362
|
<span class="cline-any cline-neutral"> </span>
|
|
325
|
-
<span class="cline-any cline-yes">2x</span>
|
|
326
|
-
<span class="cline-any cline-yes">2x</span>
|
|
327
363
|
<span class="cline-any cline-neutral"> </span>
|
|
328
|
-
<span class="cline-any cline-yes">2x</span>
|
|
329
|
-
<span class="cline-any cline-yes">2x</span>
|
|
330
364
|
<span class="cline-any cline-neutral"> </span>
|
|
365
|
+
<span class="cline-any cline-yes">8x</span>
|
|
331
366
|
<span class="cline-any cline-neutral"> </span>
|
|
367
|
+
<span class="cline-any cline-yes">8x</span>
|
|
368
|
+
<span class="cline-any cline-yes">8x</span>
|
|
332
369
|
<span class="cline-any cline-neutral"> </span>
|
|
333
370
|
<span class="cline-any cline-neutral"> </span>
|
|
334
371
|
<span class="cline-any cline-neutral"> </span>
|
|
335
372
|
<span class="cline-any cline-neutral"> </span>
|
|
336
|
-
<span class="cline-any cline-
|
|
373
|
+
<span class="cline-any cline-neutral"> </span>
|
|
374
|
+
<span class="cline-any cline-neutral"> </span>
|
|
375
|
+
<span class="cline-any cline-neutral"> </span>
|
|
376
|
+
<span class="cline-any cline-neutral"> </span>
|
|
377
|
+
<span class="cline-any cline-neutral"> </span>
|
|
378
|
+
<span class="cline-any cline-yes">7x</span>
|
|
379
|
+
<span class="cline-any cline-neutral"> </span>
|
|
380
|
+
<span class="cline-any cline-neutral"> </span>
|
|
337
381
|
<span class="cline-any cline-neutral"> </span>
|
|
338
382
|
<span class="cline-any cline-neutral"> </span>
|
|
339
383
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -342,46 +386,78 @@
|
|
|
342
386
|
<span class="cline-any cline-neutral"> </span>
|
|
343
387
|
<span class="cline-any cline-neutral"> </span>
|
|
344
388
|
<span class="cline-any cline-neutral"> </span>
|
|
345
|
-
<span class="cline-any cline-
|
|
389
|
+
<span class="cline-any cline-neutral"> </span>
|
|
346
390
|
<span class="cline-any cline-yes">2x</span>
|
|
347
391
|
<span class="cline-any cline-neutral"> </span>
|
|
348
392
|
<span class="cline-any cline-yes">2x</span>
|
|
349
393
|
<span class="cline-any cline-yes">2x</span>
|
|
350
394
|
<span class="cline-any cline-neutral"> </span>
|
|
395
|
+
<span class="cline-any cline-neutral"> </span>
|
|
396
|
+
<span class="cline-any cline-yes">2x</span>
|
|
351
397
|
<span class="cline-any cline-yes">2x</span>
|
|
352
398
|
<span class="cline-any cline-neutral"> </span>
|
|
353
399
|
<span class="cline-any cline-neutral"> </span>
|
|
354
400
|
<span class="cline-any cline-neutral"> </span>
|
|
355
401
|
<span class="cline-any cline-neutral"> </span>
|
|
356
402
|
<span class="cline-any cline-neutral"> </span>
|
|
357
|
-
<span class="cline-any cline-yes">2x</span>
|
|
358
|
-
<span class="cline-any cline-yes">2x</span>
|
|
359
403
|
<span class="cline-any cline-neutral"> </span>
|
|
360
404
|
<span class="cline-any cline-neutral"> </span>
|
|
361
405
|
<span class="cline-any cline-neutral"> </span>
|
|
406
|
+
<span class="cline-any cline-yes">1x</span>
|
|
407
|
+
<span class="cline-any cline-yes">1x</span>
|
|
362
408
|
<span class="cline-any cline-neutral"> </span>
|
|
409
|
+
<span class="cline-any cline-no"> </span>
|
|
363
410
|
<span class="cline-any cline-neutral"> </span>
|
|
364
|
-
<span class="cline-any cline-yes">1x</span>
|
|
365
411
|
<span class="cline-any cline-neutral"> </span>
|
|
366
412
|
<span class="cline-any cline-yes">1x</span>
|
|
367
413
|
<span class="cline-any cline-neutral"> </span>
|
|
368
414
|
<span class="cline-any cline-neutral"> </span>
|
|
369
415
|
<span class="cline-any cline-neutral"> </span>
|
|
370
416
|
<span class="cline-any cline-yes">34x</span>
|
|
417
|
+
<span class="cline-any cline-yes">2x</span>
|
|
418
|
+
<span class="cline-any cline-neutral"> </span>
|
|
419
|
+
<span class="cline-any cline-neutral"> </span>
|
|
420
|
+
<span class="cline-any cline-yes">34x</span>
|
|
421
|
+
<span class="cline-any cline-no"> </span>
|
|
422
|
+
<span class="cline-any cline-neutral"> </span>
|
|
423
|
+
<span class="cline-any cline-neutral"> </span>
|
|
424
|
+
<span class="cline-any cline-yes">34x</span>
|
|
425
|
+
<span class="cline-any cline-yes">2x</span>
|
|
426
|
+
<span class="cline-any cline-yes">2x</span>
|
|
427
|
+
<span class="cline-any cline-yes">2x</span>
|
|
428
|
+
<span class="cline-any cline-neutral"> </span>
|
|
429
|
+
<span class="cline-any cline-yes">2x</span>
|
|
430
|
+
<span class="cline-any cline-neutral"> </span>
|
|
431
|
+
<span class="cline-any cline-yes">1x</span>
|
|
371
432
|
<span class="cline-any cline-yes">1x</span>
|
|
372
433
|
<span class="cline-any cline-yes">1x</span>
|
|
434
|
+
<span class="cline-any cline-neutral"> </span>
|
|
435
|
+
<span class="cline-any cline-neutral"> </span>
|
|
436
|
+
<span class="cline-any cline-yes">1x</span>
|
|
373
437
|
<span class="cline-any cline-yes">1x</span>
|
|
438
|
+
<span class="cline-any cline-neutral"> </span>
|
|
374
439
|
<span class="cline-any cline-yes">1x</span>
|
|
375
440
|
<span class="cline-any cline-neutral"> </span>
|
|
376
|
-
<span class="cline-any cline-neutral"> </span
|
|
377
|
-
|
|
441
|
+
<span class="cline-any cline-neutral"> </span>
|
|
442
|
+
<span class="cline-any cline-neutral"> </span>
|
|
443
|
+
<span class="cline-any cline-yes">34x</span>
|
|
444
|
+
<span class="cline-any cline-yes">2x</span>
|
|
445
|
+
<span class="cline-any cline-yes">2x</span>
|
|
446
|
+
<span class="cline-any cline-yes">2x</span>
|
|
447
|
+
<span class="cline-any cline-yes">2x</span>
|
|
448
|
+
<span class="cline-any cline-yes">2x</span>
|
|
449
|
+
<span class="cline-any cline-neutral"> </span>
|
|
450
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">const CouchDB = require("../../../db")
|
|
378
451
|
const {
|
|
379
452
|
generateQueryID,
|
|
380
453
|
getQueryParams,
|
|
381
454
|
isProdAppID,
|
|
382
|
-
} = require("
|
|
383
|
-
const { BaseQueryVerbs } = require("
|
|
384
|
-
const { Thread, ThreadType } = require("
|
|
455
|
+
} = require("../../../db/utils")
|
|
456
|
+
const { BaseQueryVerbs } = require("../../../constants")
|
|
457
|
+
const { Thread, ThreadType } = require("../../../threads")
|
|
458
|
+
const { save: saveDatasource } = require("../datasource")
|
|
459
|
+
const { RestImporter } = require("./import")
|
|
460
|
+
const { invalidateDynamicVariables } = require("../../../threads/utils")
|
|
385
461
|
|
|
386
462
|
const Runner = new Thread(ThreadType.QUERY, { timeoutMs: 10000 })
|
|
387
463
|
|
|
@@ -405,9 +481,49 @@ exports.fetch = async function (ctx) {
|
|
|
405
481
|
include_docs: true,
|
|
406
482
|
})
|
|
407
483
|
)
|
|
484
|
+
|
|
408
485
|
ctx.body = enrichQueries(body.rows.map(row => row.doc))
|
|
409
486
|
}
|
|
410
487
|
|
|
488
|
+
exports.import = <span class="fstat-no" title="function not covered" >as</span>ync ctx => {
|
|
489
|
+
const body = <span class="cstat-no" title="statement not covered" >ctx.request.body</span>
|
|
490
|
+
const data = <span class="cstat-no" title="statement not covered" >body.data</span>
|
|
491
|
+
|
|
492
|
+
const importer = <span class="cstat-no" title="statement not covered" >new RestImporter(data)</span>
|
|
493
|
+
<span class="cstat-no" title="statement not covered" > await importer.init()</span>
|
|
494
|
+
|
|
495
|
+
let datasourceId
|
|
496
|
+
<span class="cstat-no" title="statement not covered" > if (!body.datasourceId) {</span>
|
|
497
|
+
// construct new datasource
|
|
498
|
+
const info = <span class="cstat-no" title="statement not covered" >await importer.getInfo()</span>
|
|
499
|
+
let datasource = <span class="cstat-no" title="statement not covered" >{</span>
|
|
500
|
+
type: "datasource",
|
|
501
|
+
source: "REST",
|
|
502
|
+
config: {
|
|
503
|
+
url: info.url,
|
|
504
|
+
defaultHeaders: [],
|
|
505
|
+
},
|
|
506
|
+
name: info.name,
|
|
507
|
+
}
|
|
508
|
+
// save the datasource
|
|
509
|
+
const datasourceCtx = <span class="cstat-no" title="statement not covered" >{ ...ctx }</span>
|
|
510
|
+
<span class="cstat-no" title="statement not covered" > datasourceCtx.request.body.datasource = datasource</span>
|
|
511
|
+
<span class="cstat-no" title="statement not covered" > await saveDatasource(datasourceCtx)</span>
|
|
512
|
+
<span class="cstat-no" title="statement not covered" > datasourceId = datasourceCtx.body.datasource._id</span>
|
|
513
|
+
} else {
|
|
514
|
+
// use existing datasource
|
|
515
|
+
<span class="cstat-no" title="statement not covered" > datasourceId = body.datasourceId</span>
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
const importResult = <span class="cstat-no" title="statement not covered" >await importer.importQueries(ctx.appId, datasourceId)</span>
|
|
519
|
+
|
|
520
|
+
<span class="cstat-no" title="statement not covered" > ctx.body = {</span>
|
|
521
|
+
...importResult,
|
|
522
|
+
datasourceId,
|
|
523
|
+
}
|
|
524
|
+
<span class="cstat-no" title="statement not covered" > ctx.status = 200</span>
|
|
525
|
+
}
|
|
526
|
+
|
|
411
527
|
exports.save = async function (ctx) {
|
|
412
528
|
const db = new CouchDB(ctx.appId)
|
|
413
529
|
const query = ctx.request.body
|
|
@@ -423,47 +539,6 @@ exports.save = async function (ctx) {
|
|
|
423
539
|
ctx.message = `Query ${query.name} saved successfully.`
|
|
424
540
|
}
|
|
425
541
|
|
|
426
|
-
async function enrichQueryFields(fields, parameters = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
|
|
427
|
-
const enrichedQuery = {}
|
|
428
|
-
|
|
429
|
-
// enrich the fields with dynamic parameters
|
|
430
|
-
for (let key of Object.keys(fields)) {
|
|
431
|
-
<span class="cstat-no" title="statement not covered" > if (fields[key] == null) {</span>
|
|
432
|
-
<span class="cstat-no" title="statement not covered" > continue</span>
|
|
433
|
-
}
|
|
434
|
-
<span class="cstat-no" title="statement not covered" > if (typeof fields[key] === "object") {</span>
|
|
435
|
-
// enrich nested fields object
|
|
436
|
-
<span class="cstat-no" title="statement not covered" > enrichedQuery[key] = await enrichQueryFields(fields[key], parameters)</span>
|
|
437
|
-
} else <span class="cstat-no" title="statement not covered" >if (typeof fields[key] === "string") {</span>
|
|
438
|
-
// enrich string value as normal
|
|
439
|
-
<span class="cstat-no" title="statement not covered" > enrichedQuery[key] = await processString(fields[key], parameters, {</span>
|
|
440
|
-
noHelpers: true,
|
|
441
|
-
})
|
|
442
|
-
} else {
|
|
443
|
-
<span class="cstat-no" title="statement not covered" > enrichedQuery[key] = fields[key]</span>
|
|
444
|
-
}
|
|
445
|
-
}
|
|
446
|
-
|
|
447
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (
|
|
448
|
-
enrichedQuery.json ||
|
|
449
|
-
enrichedQuery.customData ||
|
|
450
|
-
enrichedQuery.requestBody
|
|
451
|
-
) {
|
|
452
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
453
|
-
<span class="cstat-no" title="statement not covered" > enrichedQuery.json = JSON.parse(</span>
|
|
454
|
-
enrichedQuery.json ||
|
|
455
|
-
enrichedQuery.customData ||
|
|
456
|
-
enrichedQuery.requestBody
|
|
457
|
-
)
|
|
458
|
-
} catch (err) {
|
|
459
|
-
<span class="cstat-no" title="statement not covered" > throw { message: `JSON Invalid - error: ${err}` }</span>
|
|
460
|
-
}
|
|
461
|
-
<span class="cstat-no" title="statement not covered" > delete enrichedQuery.customData</span>
|
|
462
|
-
}
|
|
463
|
-
|
|
464
|
-
return enrichedQuery
|
|
465
|
-
}
|
|
466
|
-
|
|
467
542
|
exports.find = async function (ctx) {
|
|
468
543
|
const db = new CouchDB(ctx.appId)
|
|
469
544
|
const query = enrichQueries(await db.get(ctx.params.queryId))
|
|
@@ -479,54 +554,90 @@ exports.preview = async function (ctx) {
|
|
|
479
554
|
const db = new CouchDB(ctx.appId)
|
|
480
555
|
|
|
481
556
|
const datasource = await db.get(ctx.request.body.datasourceId)
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
const
|
|
557
|
+
// preview may not have a queryId as it hasn't been saved, but if it does
|
|
558
|
+
// this stops dynamic variables from calling the same query
|
|
559
|
+
const { fields, parameters, queryVerb, transformer, queryId } =
|
|
560
|
+
ctx.request.body
|
|
485
561
|
|
|
486
562
|
try {
|
|
487
|
-
const { rows, keys } = await Runner.run({
|
|
563
|
+
const { rows, keys, info, extra } = await Runner.run({
|
|
564
|
+
appId: ctx.appId,
|
|
488
565
|
datasource,
|
|
489
566
|
queryVerb,
|
|
490
|
-
|
|
567
|
+
fields,
|
|
568
|
+
parameters,
|
|
491
569
|
transformer,
|
|
570
|
+
queryId,
|
|
492
571
|
})
|
|
493
572
|
|
|
494
573
|
ctx.body = {
|
|
495
574
|
rows,
|
|
496
575
|
schemaFields: [...new Set(keys)],
|
|
576
|
+
info,
|
|
577
|
+
extra,
|
|
497
578
|
}
|
|
498
579
|
} catch (err) {
|
|
499
580
|
ctx.throw(400, err)
|
|
500
581
|
}
|
|
501
582
|
}
|
|
502
583
|
|
|
503
|
-
|
|
584
|
+
async function execute(ctx, opts = <span class="branch-0 cbranch-no" title="branch not covered" >{ rowsOnly: false })</span> {
|
|
504
585
|
const db = new CouchDB(ctx.appId)
|
|
505
586
|
|
|
506
587
|
const query = await db.get(ctx.params.queryId)
|
|
507
588
|
const datasource = await db.get(query.datasourceId)
|
|
508
|
-
|
|
509
|
-
const enrichedQuery = await enrichQueryFields(
|
|
510
|
-
query.fields,
|
|
511
|
-
ctx.request.body.parameters
|
|
512
|
-
)
|
|
513
589
|
|
|
514
590
|
// call the relevant CRUD method on the integration class
|
|
515
591
|
try {
|
|
516
|
-
const { rows } = await Runner.run({
|
|
592
|
+
const { rows, extra } = await Runner.run({
|
|
593
|
+
appId: ctx.appId,
|
|
517
594
|
datasource,
|
|
518
595
|
queryVerb: query.queryVerb,
|
|
519
|
-
|
|
596
|
+
fields: query.fields,
|
|
597
|
+
parameters: ctx.request.body.parameters,
|
|
520
598
|
transformer: query.transformer,
|
|
599
|
+
queryId: ctx.params.queryId,
|
|
521
600
|
})
|
|
522
|
-
|
|
601
|
+
if (opts && opts.rowsOnly) {
|
|
602
|
+
ctx.body = rows
|
|
603
|
+
} else <span class="missing-if-branch" title="else path not taken" >E</span>{
|
|
604
|
+
<span class="cstat-no" title="statement not covered" > ctx.body = { data: rows, ...extra }</span>
|
|
605
|
+
}
|
|
523
606
|
} catch (err) {
|
|
524
607
|
ctx.throw(400, err)
|
|
525
608
|
}
|
|
526
609
|
}
|
|
527
610
|
|
|
611
|
+
exports.executeV1 = async function (ctx) {
|
|
612
|
+
return execute(ctx, { rowsOnly: true })
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
exports.executeV2 = <span class="fstat-no" title="function not covered" >as</span>ync function (ctx) {
|
|
616
|
+
<span class="cstat-no" title="statement not covered" > return execute(ctx, { rowsOnly: false })</span>
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
const removeDynamicVariables = async (db, queryId) => {
|
|
620
|
+
const query = await db.get(queryId)
|
|
621
|
+
const datasource = await db.get(query.datasourceId)
|
|
622
|
+
const dynamicVariables = datasource.config.dynamicVariables
|
|
623
|
+
|
|
624
|
+
if (dynamicVariables) {
|
|
625
|
+
// delete dynamic variables from the datasource
|
|
626
|
+
const newVariables = dynamicVariables.filter(dv => dv.queryId !== queryId)
|
|
627
|
+
datasource.config.dynamicVariables = newVariables
|
|
628
|
+
await db.put(datasource)
|
|
629
|
+
|
|
630
|
+
// invalidate the deleted variables
|
|
631
|
+
const variablesToDelete = dynamicVariables.filter(
|
|
632
|
+
dv => dv.queryId === queryId
|
|
633
|
+
)
|
|
634
|
+
await invalidateDynamicVariables(variablesToDelete)
|
|
635
|
+
}
|
|
636
|
+
}
|
|
637
|
+
|
|
528
638
|
exports.destroy = async function (ctx) {
|
|
529
639
|
const db = new CouchDB(ctx.appId)
|
|
640
|
+
await removeDynamicVariables(db, ctx.params.queryId)
|
|
530
641
|
await db.remove(ctx.params.queryId, ctx.params.revId)
|
|
531
642
|
ctx.message = `Query deleted.`
|
|
532
643
|
ctx.status = 200
|
|
@@ -538,17 +649,17 @@ exports.destroy = async function (ctx) {
|
|
|
538
649
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
539
650
|
Code coverage generated by
|
|
540
651
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
541
|
-
at
|
|
652
|
+
at Tue Jan 11 2022 14:31:15 GMT+0000 (Coordinated Universal Time)
|
|
542
653
|
</div>
|
|
543
654
|
</div>
|
|
544
|
-
<script src="
|
|
655
|
+
<script src="../../../prettify.js"></script>
|
|
545
656
|
<script>
|
|
546
657
|
window.onload = function () {
|
|
547
658
|
prettyPrint();
|
|
548
659
|
};
|
|
549
660
|
</script>
|
|
550
|
-
<script src="
|
|
551
|
-
<script src="
|
|
661
|
+
<script src="../../../sorter.js"></script>
|
|
662
|
+
<script src="../../../block-navigation.js"></script>
|
|
552
663
|
</body>
|
|
553
664
|
</html>
|
|
554
665
|
|