@budibase/server 1.0.35 → 1.0.42
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.17f372b7.js +1348 -0
- package/builder/assets/{index.4fb3f887.css → index.39e01193.css} +1 -1
- package/builder/assets/{vendor.470042a4.js → vendor.f9faf6ab.js} +88 -88
- package/builder/index.html +3 -3
- package/coverage/clover.xml +1589 -1344
- package/coverage/coverage-final.json +75 -74
- package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
- package/coverage/lcov-report/api/controllers/apikeys.js.html +3 -3
- package/coverage/lcov-report/api/controllers/application.js.html +73 -64
- package/coverage/lcov-report/api/controllers/auth.js.html +2 -2
- 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 +13 -4
- 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 +3 -3
- package/coverage/lcov-report/api/controllers/hosting.js.html +3 -3
- 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 +3 -3
- 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 -120
- package/coverage/lcov-report/api/controllers/query/validation.js.html +206 -0
- package/coverage/lcov-report/api/controllers/role.js.html +2 -2
- package/coverage/lcov-report/api/controllers/routing.js.html +2 -2
- 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 +8 -5
- package/coverage/lcov-report/api/controllers/row/utils.js.html +29 -20
- package/coverage/lcov-report/api/controllers/screen.js.html +2 -2
- 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 +120 -12
- 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 +19 -7
- package/coverage/lcov-report/api/index.html +1 -1
- package/coverage/lcov-report/api/index.js.html +6 -6
- package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
- package/coverage/lcov-report/api/routes/apikeys.js.html +2 -2
- package/coverage/lcov-report/api/routes/application.js.html +2 -2
- package/coverage/lcov-report/api/routes/auth.js.html +1 -1
- package/coverage/lcov-report/api/routes/automation.js.html +2 -2
- package/coverage/lcov-report/api/routes/backup.js.html +2 -2
- package/coverage/lcov-report/api/routes/cloud.js.html +2 -2
- package/coverage/lcov-report/api/routes/component.js.html +2 -2
- package/coverage/lcov-report/api/routes/datasource.js.html +2 -2
- package/coverage/lcov-report/api/routes/deploy.js.html +2 -2
- package/coverage/lcov-report/api/routes/dev.js.html +2 -2
- package/coverage/lcov-report/api/routes/hosting.js.html +2 -2
- 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 +2 -2
- package/coverage/lcov-report/api/routes/layout.js.html +2 -2
- package/coverage/lcov-report/api/routes/metadata.js.html +2 -2
- package/coverage/lcov-report/api/routes/permission.js.html +12 -3
- package/coverage/lcov-report/api/routes/query.js.html +20 -86
- package/coverage/lcov-report/api/routes/role.js.html +2 -2
- package/coverage/lcov-report/api/routes/routing.js.html +2 -2
- package/coverage/lcov-report/api/routes/row.js.html +2 -2
- package/coverage/lcov-report/api/routes/screen.js.html +2 -2
- package/coverage/lcov-report/api/routes/script.js.html +2 -2
- package/coverage/lcov-report/api/routes/static.js.html +2 -2
- package/coverage/lcov-report/api/routes/table.js.html +2 -2
- package/coverage/lcov-report/api/routes/templates.js.html +2 -2
- package/coverage/lcov-report/api/routes/user.js.html +33 -3
- package/coverage/lcov-report/api/routes/view.js.html +2 -2
- package/coverage/lcov-report/api/routes/webhook.js.html +2 -2
- 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 +2 -2
- 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 +32 -8
- 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 +49 -16
- package/coverage/lcov-report/constants/index.html +1 -1
- package/coverage/lcov-report/constants/index.js.html +25 -25
- package/coverage/lcov-report/constants/layouts.js.html +1 -1
- package/coverage/lcov-report/constants/screens.js.html +2 -2
- package/coverage/lcov-report/db/client.js.html +19 -19
- 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 +108 -81
- 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 +12 -12
- package/coverage/lcov-report/middleware/builder.js.html +10 -10
- package/coverage/lcov-report/middleware/currentapp.js.html +48 -36
- 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 +2 -2
- package/coverage/lcov-report/middleware/utils.js.html +2 -2
- package/coverage/lcov-report/threads/automation.js.html +3 -3
- package/coverage/lcov-report/threads/index.html +32 -32
- package/coverage/lcov-report/threads/index.js.html +12 -12
- package/coverage/lcov-report/threads/query.js.html +560 -65
- package/coverage/lcov-report/threads/utils.js.html +210 -15
- package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
- package/coverage/lcov-report/utilities/budibaseDir.js.html +2 -2
- 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 +28 -19
- package/coverage/lcov-report/utilities/index.html +19 -19
- package/coverage/lcov-report/utilities/index.js.html +70 -37
- 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 +247 -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 +14 -5
- 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 +22 -22
- package/coverage/lcov.info +2735 -2313
- package/dist/api/controllers/apikeys.js +2 -2
- package/dist/api/controllers/application.js +4 -4
- package/dist/api/controllers/auth.js +1 -1
- package/dist/api/controllers/automation.js +7 -5
- package/dist/api/controllers/cloud.js +2 -2
- package/dist/api/controllers/datasource.js +29 -0
- package/dist/api/controllers/deploy/index.js +2 -2
- package/dist/api/controllers/dev.js +2 -2
- package/dist/api/controllers/hosting.js +2 -2
- package/dist/api/controllers/permission.js +2 -2
- 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} +88 -56
- package/dist/api/controllers/query/validation.js +38 -0
- package/dist/api/controllers/role.js +1 -1
- package/dist/api/controllers/routing.js +1 -1
- package/dist/api/controllers/row/internal.js +14 -6
- package/dist/api/controllers/row/internalSearch.js +3 -2
- package/dist/api/controllers/row/utils.js +13 -6
- package/dist/api/controllers/screen.js +1 -1
- package/dist/api/controllers/user.js +40 -4
- package/dist/api/controllers/webhook.js +5 -1
- package/dist/api/index.js +1 -1
- package/dist/api/routes/apikeys.js +1 -1
- package/dist/api/routes/application.js +1 -1
- package/dist/api/routes/automation.js +1 -1
- package/dist/api/routes/backup.js +1 -1
- package/dist/api/routes/cloud.js +1 -1
- package/dist/api/routes/component.js +1 -1
- package/dist/api/routes/datasource.js +1 -1
- package/dist/api/routes/deploy.js +1 -1
- package/dist/api/routes/dev.js +1 -1
- package/dist/api/routes/hosting.js +1 -1
- package/dist/api/routes/integration.js +1 -1
- package/dist/api/routes/layout.js +1 -1
- package/dist/api/routes/metadata.js +1 -1
- package/dist/api/routes/permission.js +1 -1
- package/dist/api/routes/query.js +6 -34
- package/dist/api/routes/role.js +1 -1
- package/dist/api/routes/routing.js +1 -1
- package/dist/api/routes/row.js +1 -1
- package/dist/api/routes/screen.js +1 -1
- package/dist/api/routes/script.js +1 -1
- package/dist/api/routes/static.js +1 -1
- package/dist/api/routes/table.js +1 -1
- package/dist/api/routes/templates.js +1 -1
- package/dist/api/routes/tests/utilities/TestFunctions.js +1 -1
- package/dist/api/routes/user.js +4 -2
- package/dist/api/routes/view.js +1 -1
- package/dist/api/routes/webhook.js +1 -1
- package/dist/app.js +1 -1
- package/dist/automations/bullboard.js +1 -1
- package/dist/automations/steps/executeQuery.js +9 -2
- package/dist/automations/steps/outgoingWebhook.js +2 -3
- package/dist/automations/utils.js +11 -1
- package/dist/constants/index.js +3 -3
- package/dist/constants/screens.js +1 -1
- package/dist/db/client.js +1 -1
- package/dist/db/utils.js +9 -1
- package/dist/definitions/datasource.js +6 -1
- package/dist/integrations/base/sqlTable.js +1 -1
- package/dist/integrations/rest.js +259 -120
- package/dist/integrations/s3.js +1 -1
- package/dist/integrations/utils.js +40 -37
- package/dist/middleware/authorized.js +2 -2
- package/dist/middleware/builder.js +2 -2
- package/dist/middleware/currentapp.js +6 -6
- package/dist/middleware/usageQuota.js +1 -1
- package/dist/package.json +11 -4
- package/dist/tests/utilities/TestConfiguration.js +55 -8
- package/dist/tests/utilities/structures.js +2 -2
- package/dist/threads/automation.js +2 -2
- package/dist/threads/query.js +195 -38
- package/dist/threads/utils.js +62 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utilities/budibaseDir.js +1 -1
- package/dist/utilities/fileSystem/utilities.js +2 -1
- package/dist/utilities/global.js +5 -5
- package/dist/utilities/index.js +11 -1
- package/dist/utilities/redis.js +1 -1
- package/dist/utilities/rowProcessor/index.js +76 -0
- package/dist/utilities/security.js +2 -2
- package/dist/utilities/usageQuota.js +2 -2
- package/dist/utilities/workerRequests.js +3 -3
- package/package.json +12 -5
- package/scripts/replicateApp.js +1 -1
- package/src/api/controllers/apikeys.js +2 -2
- package/src/api/controllers/application.js +7 -4
- package/src/api/controllers/auth.js +1 -1
- package/src/api/controllers/automation.js +8 -4
- package/src/api/controllers/cloud.js +5 -2
- package/src/api/controllers/datasource.js +34 -0
- package/src/api/controllers/deploy/index.js +2 -2
- package/src/api/controllers/dev.js +2 -2
- package/src/api/controllers/hosting.js +2 -2
- package/src/api/controllers/permission.js +2 -2
- 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 +196 -0
- package/src/api/controllers/query/validation.js +42 -0
- package/src/api/controllers/role.js +1 -1
- package/src/api/controllers/routing.js +1 -1
- package/src/api/controllers/row/internal.js +14 -5
- package/src/api/controllers/row/internalSearch.js +3 -2
- package/src/api/controllers/row/utils.js +11 -8
- package/src/api/controllers/screen.js +1 -1
- package/src/api/controllers/user.js +39 -3
- package/src/api/controllers/webhook.js +5 -1
- package/src/api/index.js +1 -1
- package/src/api/routes/apikeys.js +1 -1
- package/src/api/routes/application.js +1 -1
- package/src/api/routes/automation.js +1 -1
- package/src/api/routes/backup.js +1 -1
- package/src/api/routes/cloud.js +1 -1
- package/src/api/routes/component.js +1 -1
- package/src/api/routes/datasource.js +1 -1
- package/src/api/routes/deploy.js +1 -1
- package/src/api/routes/dev.js +1 -1
- package/src/api/routes/hosting.js +1 -1
- package/src/api/routes/integration.js +1 -1
- package/src/api/routes/layout.js +1 -1
- package/src/api/routes/metadata.js +1 -1
- package/src/api/routes/permission.js +4 -1
- package/src/api/routes/query.js +14 -36
- package/src/api/routes/role.js +1 -1
- package/src/api/routes/routing.js +1 -1
- package/src/api/routes/row.js +1 -1
- package/src/api/routes/screen.js +1 -1
- package/src/api/routes/script.js +1 -1
- package/src/api/routes/static.js +1 -1
- package/src/api/routes/table.js +1 -1
- package/src/api/routes/templates.js +1 -1
- package/src/api/routes/tests/datasource.spec.js +45 -0
- package/src/api/routes/tests/permissions.spec.js +1 -1
- package/src/api/routes/tests/query.spec.js +70 -1
- package/src/api/routes/tests/role.spec.js +2 -2
- package/src/api/routes/tests/routing.spec.js +1 -1
- package/src/api/routes/tests/user.spec.js +1 -1
- package/src/api/routes/tests/utilities/TestFunctions.js +1 -1
- package/src/api/routes/user.js +11 -1
- package/src/api/routes/view.js +1 -1
- package/src/api/routes/webhook.js +1 -1
- package/src/app.ts +1 -1
- package/src/automations/bullboard.js +1 -1
- package/src/automations/steps/executeQuery.js +10 -2
- package/src/automations/steps/outgoingWebhook.js +2 -3
- package/src/automations/utils.js +12 -1
- package/src/constants/index.js +3 -3
- package/src/constants/screens.js +1 -1
- package/src/db/client.js +1 -1
- package/src/db/utils.js +10 -1
- package/src/definitions/common.ts +2 -16
- package/src/definitions/datasource.ts +98 -1
- package/src/integrations/base/IntegrationBase.ts +4 -4
- package/src/integrations/base/sqlTable.ts +1 -1
- package/src/integrations/rest.ts +311 -138
- package/src/integrations/s3.ts +1 -1
- package/src/integrations/tests/rest.spec.js +432 -21
- package/src/integrations/utils.ts +8 -7
- package/src/middleware/authorized.js +2 -2
- package/src/middleware/builder.js +2 -2
- package/src/middleware/currentapp.js +11 -7
- package/src/middleware/tests/authorized.spec.js +2 -2
- package/src/middleware/tests/currentapp.spec.js +35 -41
- package/src/middleware/tests/usageQuota.spec.js +1 -1
- package/src/middleware/usageQuota.js +1 -1
- package/src/tests/utilities/TestConfiguration.js +65 -8
- package/src/tests/utilities/structures.js +2 -2
- package/src/threads/automation.js +2 -2
- package/src/threads/query.js +204 -39
- package/src/threads/utils.js +66 -1
- package/src/utilities/budibaseDir.js +1 -1
- package/src/utilities/fileSystem/utilities.js +3 -1
- package/src/utilities/global.js +8 -5
- package/src/utilities/index.js +12 -1
- package/src/utilities/redis.js +1 -1
- package/src/utilities/rowProcessor/index.js +79 -0
- package/src/utilities/security.js +5 -2
- package/src/utilities/usageQuota.js +2 -2
- package/src/utilities/workerRequests.js +3 -3
- package/builder/assets/index.9ac33cf1.js +0 -1316
- package/src/api/controllers/query.js +0 -161
|
@@ -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
|
|
|
@@ -218,8 +218,42 @@
|
|
|
218
218
|
<a name='L159'></a><a href='#L159'>159</a>
|
|
219
219
|
<a name='L160'></a><a href='#L160'>160</a>
|
|
220
220
|
<a name='L161'></a><a href='#L161'>161</a>
|
|
221
|
-
<a name='L162'></a><a href='#L162'>162</a
|
|
222
|
-
<
|
|
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>
|
|
256
|
+
<a name='L197'></a><a href='#L197'>197</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">34x</span>
|
|
223
257
|
<span class="cline-any cline-neutral"> </span>
|
|
224
258
|
<span class="cline-any cline-neutral"> </span>
|
|
225
259
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -228,10 +262,10 @@
|
|
|
228
262
|
<span class="cline-any cline-yes">34x</span>
|
|
229
263
|
<span class="cline-any cline-yes">34x</span>
|
|
230
264
|
<span class="cline-any cline-yes">34x</span>
|
|
231
|
-
<span class="cline-any cline-
|
|
265
|
+
<span class="cline-any cline-yes">34x</span>
|
|
232
266
|
<span class="cline-any cline-yes">34x</span>
|
|
233
267
|
<span class="cline-any cline-neutral"> </span>
|
|
234
|
-
<span class="cline-any cline-
|
|
268
|
+
<span class="cline-any cline-yes">34x</span>
|
|
235
269
|
<span class="cline-any cline-neutral"> </span>
|
|
236
270
|
<span class="cline-any cline-neutral"> </span>
|
|
237
271
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -253,63 +287,62 @@
|
|
|
253
287
|
<span class="cline-any cline-neutral"> </span>
|
|
254
288
|
<span class="cline-any cline-neutral"> </span>
|
|
255
289
|
<span class="cline-any cline-neutral"> </span>
|
|
290
|
+
<span class="cline-any cline-neutral"> </span>
|
|
256
291
|
<span class="cline-any cline-yes">2x</span>
|
|
257
292
|
<span class="cline-any cline-neutral"> </span>
|
|
258
293
|
<span class="cline-any cline-neutral"> </span>
|
|
259
294
|
<span class="cline-any cline-yes">34x</span>
|
|
260
|
-
<span class="cline-any cline-
|
|
261
|
-
<span class="cline-any cline-
|
|
295
|
+
<span class="cline-any cline-no"> </span>
|
|
296
|
+
<span class="cline-any cline-no"> </span>
|
|
262
297
|
<span class="cline-any cline-neutral"> </span>
|
|
263
|
-
<span class="cline-any cline-
|
|
264
|
-
<span class="cline-any cline-
|
|
298
|
+
<span class="cline-any cline-no"> </span>
|
|
299
|
+
<span class="cline-any cline-no"> </span>
|
|
265
300
|
<span class="cline-any cline-neutral"> </span>
|
|
266
301
|
<span class="cline-any cline-neutral"> </span>
|
|
267
|
-
<span class="cline-any cline-
|
|
268
|
-
<span class="cline-any cline-
|
|
302
|
+
<span class="cline-any cline-no"> </span>
|
|
303
|
+
<span class="cline-any cline-neutral"> </span>
|
|
304
|
+
<span class="cline-any cline-no"> </span>
|
|
305
|
+
<span class="cline-any cline-no"> </span>
|
|
306
|
+
<span class="cline-any cline-neutral"> </span>
|
|
269
307
|
<span class="cline-any cline-neutral"> </span>
|
|
270
|
-
<span class="cline-any cline-yes">20x</span>
|
|
271
|
-
<span class="cline-any cline-yes">20x</span>
|
|
272
308
|
<span class="cline-any cline-neutral"> </span>
|
|
273
309
|
<span class="cline-any cline-neutral"> </span>
|
|
274
310
|
<span class="cline-any cline-neutral"> </span>
|
|
275
|
-
<span class="cline-any cline-yes">4x</span>
|
|
276
311
|
<span class="cline-any cline-neutral"> </span>
|
|
277
312
|
<span class="cline-any cline-neutral"> </span>
|
|
278
|
-
<span class="cline-any cline-yes">4x</span>
|
|
279
|
-
<span class="cline-any cline-no"> </span>
|
|
280
|
-
<span class="cline-any cline-no"> </span>
|
|
281
313
|
<span class="cline-any cline-neutral"> </span>
|
|
282
|
-
<span class="cline-any cline-no"> </span>
|
|
283
314
|
<span class="cline-any cline-neutral"> </span>
|
|
284
315
|
<span class="cline-any cline-no"> </span>
|
|
285
316
|
<span class="cline-any cline-no"> </span>
|
|
286
|
-
<span class="cline-any cline-neutral"> </span>
|
|
287
317
|
<span class="cline-any cline-no"> </span>
|
|
288
|
-
<span class="cline-any cline-
|
|
318
|
+
<span class="cline-any cline-no"> </span>
|
|
289
319
|
<span class="cline-any cline-neutral"> </span>
|
|
290
320
|
<span class="cline-any cline-neutral"> </span>
|
|
291
321
|
<span class="cline-any cline-no"> </span>
|
|
292
322
|
<span class="cline-any cline-neutral"> </span>
|
|
293
323
|
<span class="cline-any cline-neutral"> </span>
|
|
324
|
+
<span class="cline-any cline-no"> </span>
|
|
294
325
|
<span class="cline-any cline-neutral"> </span>
|
|
295
|
-
<span class="cline-any cline-
|
|
296
|
-
<span class="cline-any cline-neutral"> </span>
|
|
326
|
+
<span class="cline-any cline-no"> </span>
|
|
297
327
|
<span class="cline-any cline-neutral"> </span>
|
|
298
328
|
<span class="cline-any cline-neutral"> </span>
|
|
299
329
|
<span class="cline-any cline-neutral"> </span>
|
|
300
330
|
<span class="cline-any cline-no"> </span>
|
|
301
|
-
<span class="cline-any cline-no"> </span>
|
|
302
331
|
<span class="cline-any cline-neutral"> </span>
|
|
303
332
|
<span class="cline-any cline-neutral"> </span>
|
|
333
|
+
<span class="cline-any cline-yes">34x</span>
|
|
334
|
+
<span class="cline-any cline-yes">28x</span>
|
|
335
|
+
<span class="cline-any cline-yes">28x</span>
|
|
304
336
|
<span class="cline-any cline-neutral"> </span>
|
|
337
|
+
<span class="cline-any cline-yes">28x</span>
|
|
338
|
+
<span class="cline-any cline-yes">28x</span>
|
|
305
339
|
<span class="cline-any cline-neutral"> </span>
|
|
306
340
|
<span class="cline-any cline-neutral"> </span>
|
|
307
|
-
<span class="cline-any cline-
|
|
341
|
+
<span class="cline-any cline-yes">28x</span>
|
|
342
|
+
<span class="cline-any cline-yes">28x</span>
|
|
308
343
|
<span class="cline-any cline-neutral"> </span>
|
|
309
|
-
<span class="cline-any cline-
|
|
310
|
-
<span class="cline-any cline-
|
|
311
|
-
<span class="cline-any cline-neutral"> </span>
|
|
312
|
-
<span class="cline-any cline-yes">4x</span>
|
|
344
|
+
<span class="cline-any cline-yes">28x</span>
|
|
345
|
+
<span class="cline-any cline-yes">28x</span>
|
|
313
346
|
<span class="cline-any cline-neutral"> </span>
|
|
314
347
|
<span class="cline-any cline-neutral"> </span>
|
|
315
348
|
<span class="cline-any cline-yes">34x</span>
|
|
@@ -324,22 +357,28 @@
|
|
|
324
357
|
<span class="cline-any cline-neutral"> </span>
|
|
325
358
|
<span class="cline-any cline-neutral"> </span>
|
|
326
359
|
<span class="cline-any cline-yes">34x</span>
|
|
327
|
-
<span class="cline-any cline-yes">
|
|
360
|
+
<span class="cline-any cline-yes">8x</span>
|
|
328
361
|
<span class="cline-any cline-neutral"> </span>
|
|
329
|
-
<span class="cline-any cline-yes">
|
|
362
|
+
<span class="cline-any cline-yes">8x</span>
|
|
330
363
|
<span class="cline-any cline-neutral"> </span>
|
|
331
|
-
<span class="cline-any cline-yes">2x</span>
|
|
332
|
-
<span class="cline-any cline-yes">2x</span>
|
|
333
364
|
<span class="cline-any cline-neutral"> </span>
|
|
334
|
-
<span class="cline-any cline-yes">2x</span>
|
|
335
|
-
<span class="cline-any cline-yes">2x</span>
|
|
336
365
|
<span class="cline-any cline-neutral"> </span>
|
|
366
|
+
<span class="cline-any cline-yes">8x</span>
|
|
337
367
|
<span class="cline-any cline-neutral"> </span>
|
|
368
|
+
<span class="cline-any cline-yes">8x</span>
|
|
369
|
+
<span class="cline-any cline-yes">8x</span>
|
|
338
370
|
<span class="cline-any cline-neutral"> </span>
|
|
339
371
|
<span class="cline-any cline-neutral"> </span>
|
|
340
372
|
<span class="cline-any cline-neutral"> </span>
|
|
341
373
|
<span class="cline-any cline-neutral"> </span>
|
|
342
|
-
<span class="cline-any cline-
|
|
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-neutral"> </span>
|
|
379
|
+
<span class="cline-any cline-yes">7x</span>
|
|
380
|
+
<span class="cline-any cline-neutral"> </span>
|
|
381
|
+
<span class="cline-any cline-neutral"> </span>
|
|
343
382
|
<span class="cline-any cline-neutral"> </span>
|
|
344
383
|
<span class="cline-any cline-neutral"> </span>
|
|
345
384
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -348,51 +387,81 @@
|
|
|
348
387
|
<span class="cline-any cline-neutral"> </span>
|
|
349
388
|
<span class="cline-any cline-neutral"> </span>
|
|
350
389
|
<span class="cline-any cline-neutral"> </span>
|
|
351
|
-
<span class="cline-any cline-
|
|
390
|
+
<span class="cline-any cline-neutral"> </span>
|
|
352
391
|
<span class="cline-any cline-yes">2x</span>
|
|
353
392
|
<span class="cline-any cline-neutral"> </span>
|
|
354
393
|
<span class="cline-any cline-yes">2x</span>
|
|
355
394
|
<span class="cline-any cline-yes">2x</span>
|
|
356
395
|
<span class="cline-any cline-neutral"> </span>
|
|
396
|
+
<span class="cline-any cline-neutral"> </span>
|
|
397
|
+
<span class="cline-any cline-yes">2x</span>
|
|
357
398
|
<span class="cline-any cline-yes">2x</span>
|
|
358
399
|
<span class="cline-any cline-neutral"> </span>
|
|
359
400
|
<span class="cline-any cline-neutral"> </span>
|
|
360
401
|
<span class="cline-any cline-neutral"> </span>
|
|
361
402
|
<span class="cline-any cline-neutral"> </span>
|
|
362
403
|
<span class="cline-any cline-neutral"> </span>
|
|
363
|
-
<span class="cline-any cline-yes">2x</span>
|
|
364
|
-
<span class="cline-any cline-yes">2x</span>
|
|
365
|
-
<span class="cline-any cline-neutral"> </span>
|
|
366
404
|
<span class="cline-any cline-neutral"> </span>
|
|
367
405
|
<span class="cline-any cline-neutral"> </span>
|
|
368
406
|
<span class="cline-any cline-neutral"> </span>
|
|
369
407
|
<span class="cline-any cline-neutral"> </span>
|
|
370
408
|
<span class="cline-any cline-yes">1x</span>
|
|
409
|
+
<span class="cline-any cline-yes">1x</span>
|
|
410
|
+
<span class="cline-any cline-neutral"> </span>
|
|
411
|
+
<span class="cline-any cline-no"> </span>
|
|
412
|
+
<span class="cline-any cline-neutral"> </span>
|
|
371
413
|
<span class="cline-any cline-neutral"> </span>
|
|
372
414
|
<span class="cline-any cline-yes">1x</span>
|
|
373
415
|
<span class="cline-any cline-neutral"> </span>
|
|
374
416
|
<span class="cline-any cline-neutral"> </span>
|
|
375
417
|
<span class="cline-any cline-neutral"> </span>
|
|
376
418
|
<span class="cline-any cline-yes">34x</span>
|
|
419
|
+
<span class="cline-any cline-yes">2x</span>
|
|
420
|
+
<span class="cline-any cline-neutral"> </span>
|
|
421
|
+
<span class="cline-any cline-neutral"> </span>
|
|
422
|
+
<span class="cline-any cline-yes">34x</span>
|
|
423
|
+
<span class="cline-any cline-no"> </span>
|
|
424
|
+
<span class="cline-any cline-neutral"> </span>
|
|
425
|
+
<span class="cline-any cline-neutral"> </span>
|
|
426
|
+
<span class="cline-any cline-yes">34x</span>
|
|
427
|
+
<span class="cline-any cline-yes">2x</span>
|
|
428
|
+
<span class="cline-any cline-yes">2x</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">2x</span>
|
|
432
|
+
<span class="cline-any cline-neutral"> </span>
|
|
377
433
|
<span class="cline-any cline-yes">1x</span>
|
|
378
434
|
<span class="cline-any cline-yes">1x</span>
|
|
379
435
|
<span class="cline-any cline-yes">1x</span>
|
|
436
|
+
<span class="cline-any cline-neutral"> </span>
|
|
437
|
+
<span class="cline-any cline-neutral"> </span>
|
|
438
|
+
<span class="cline-any cline-yes">1x</span>
|
|
439
|
+
<span class="cline-any cline-yes">1x</span>
|
|
440
|
+
<span class="cline-any cline-neutral"> </span>
|
|
380
441
|
<span class="cline-any cline-yes">1x</span>
|
|
381
442
|
<span class="cline-any cline-neutral"> </span>
|
|
382
|
-
<span class="cline-any cline-neutral"> </span
|
|
383
|
-
|
|
443
|
+
<span class="cline-any cline-neutral"> </span>
|
|
444
|
+
<span class="cline-any cline-neutral"> </span>
|
|
445
|
+
<span class="cline-any cline-yes">34x</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-yes">2x</span>
|
|
450
|
+
<span class="cline-any cline-yes">2x</span>
|
|
451
|
+
<span class="cline-any cline-neutral"> </span>
|
|
452
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">const CouchDB = require("../../../db")
|
|
384
453
|
const {
|
|
385
454
|
generateQueryID,
|
|
386
455
|
getQueryParams,
|
|
387
456
|
isProdAppID,
|
|
388
|
-
} = require("
|
|
389
|
-
const { BaseQueryVerbs } = require("
|
|
390
|
-
const { Thread, ThreadType } = require("
|
|
391
|
-
const
|
|
457
|
+
} = require("../../../db/utils")
|
|
458
|
+
const { BaseQueryVerbs } = require("../../../constants")
|
|
459
|
+
const { Thread, ThreadType } = require("../../../threads")
|
|
460
|
+
const { save: saveDatasource } = require("../datasource")
|
|
461
|
+
const { RestImporter } = require("./import")
|
|
462
|
+
const { invalidateDynamicVariables } = require("../../../threads/utils")
|
|
392
463
|
|
|
393
|
-
const Runner = new Thread(ThreadType.QUERY, {
|
|
394
|
-
timeoutMs: env.QUERY_THREAD_TIMEOUT || 10000,
|
|
395
|
-
})
|
|
464
|
+
const Runner = new Thread(ThreadType.QUERY, { timeoutMs: 10000 })
|
|
396
465
|
|
|
397
466
|
// simple function to append "readable" to all read queries
|
|
398
467
|
function enrichQueries(input) {
|
|
@@ -414,9 +483,49 @@ exports.fetch = async function (ctx) {
|
|
|
414
483
|
include_docs: true,
|
|
415
484
|
})
|
|
416
485
|
)
|
|
486
|
+
|
|
417
487
|
ctx.body = enrichQueries(body.rows.map(row => row.doc))
|
|
418
488
|
}
|
|
419
489
|
|
|
490
|
+
exports.import = <span class="fstat-no" title="function not covered" >as</span>ync ctx => {
|
|
491
|
+
const body = <span class="cstat-no" title="statement not covered" >ctx.request.body</span>
|
|
492
|
+
const data = <span class="cstat-no" title="statement not covered" >body.data</span>
|
|
493
|
+
|
|
494
|
+
const importer = <span class="cstat-no" title="statement not covered" >new RestImporter(data)</span>
|
|
495
|
+
<span class="cstat-no" title="statement not covered" > await importer.init()</span>
|
|
496
|
+
|
|
497
|
+
let datasourceId
|
|
498
|
+
<span class="cstat-no" title="statement not covered" > if (!body.datasourceId) {</span>
|
|
499
|
+
// construct new datasource
|
|
500
|
+
const info = <span class="cstat-no" title="statement not covered" >await importer.getInfo()</span>
|
|
501
|
+
let datasource = <span class="cstat-no" title="statement not covered" >{</span>
|
|
502
|
+
type: "datasource",
|
|
503
|
+
source: "REST",
|
|
504
|
+
config: {
|
|
505
|
+
url: info.url,
|
|
506
|
+
defaultHeaders: [],
|
|
507
|
+
},
|
|
508
|
+
name: info.name,
|
|
509
|
+
}
|
|
510
|
+
// save the datasource
|
|
511
|
+
const datasourceCtx = <span class="cstat-no" title="statement not covered" >{ ...ctx }</span>
|
|
512
|
+
<span class="cstat-no" title="statement not covered" > datasourceCtx.request.body.datasource = datasource</span>
|
|
513
|
+
<span class="cstat-no" title="statement not covered" > await saveDatasource(datasourceCtx)</span>
|
|
514
|
+
<span class="cstat-no" title="statement not covered" > datasourceId = datasourceCtx.body.datasource._id</span>
|
|
515
|
+
} else {
|
|
516
|
+
// use existing datasource
|
|
517
|
+
<span class="cstat-no" title="statement not covered" > datasourceId = body.datasourceId</span>
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
const importResult = <span class="cstat-no" title="statement not covered" >await importer.importQueries(ctx.appId, datasourceId)</span>
|
|
521
|
+
|
|
522
|
+
<span class="cstat-no" title="statement not covered" > ctx.body = {</span>
|
|
523
|
+
...importResult,
|
|
524
|
+
datasourceId,
|
|
525
|
+
}
|
|
526
|
+
<span class="cstat-no" title="statement not covered" > ctx.status = 200</span>
|
|
527
|
+
}
|
|
528
|
+
|
|
420
529
|
exports.save = async function (ctx) {
|
|
421
530
|
const db = new CouchDB(ctx.appId)
|
|
422
531
|
const query = ctx.request.body
|
|
@@ -432,47 +541,6 @@ exports.save = async function (ctx) {
|
|
|
432
541
|
ctx.message = `Query ${query.name} saved successfully.`
|
|
433
542
|
}
|
|
434
543
|
|
|
435
|
-
async function enrichQueryFields(fields, parameters = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
|
|
436
|
-
const enrichedQuery = {}
|
|
437
|
-
|
|
438
|
-
// enrich the fields with dynamic parameters
|
|
439
|
-
for (let key of Object.keys(fields)) {
|
|
440
|
-
<span class="cstat-no" title="statement not covered" > if (fields[key] == null) {</span>
|
|
441
|
-
<span class="cstat-no" title="statement not covered" > continue</span>
|
|
442
|
-
}
|
|
443
|
-
<span class="cstat-no" title="statement not covered" > if (typeof fields[key] === "object") {</span>
|
|
444
|
-
// enrich nested fields object
|
|
445
|
-
<span class="cstat-no" title="statement not covered" > enrichedQuery[key] = await enrichQueryFields(fields[key], parameters)</span>
|
|
446
|
-
} else <span class="cstat-no" title="statement not covered" >if (typeof fields[key] === "string") {</span>
|
|
447
|
-
// enrich string value as normal
|
|
448
|
-
<span class="cstat-no" title="statement not covered" > enrichedQuery[key] = await processString(fields[key], parameters, {</span>
|
|
449
|
-
noHelpers: true,
|
|
450
|
-
})
|
|
451
|
-
} else {
|
|
452
|
-
<span class="cstat-no" title="statement not covered" > enrichedQuery[key] = fields[key]</span>
|
|
453
|
-
}
|
|
454
|
-
}
|
|
455
|
-
|
|
456
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (
|
|
457
|
-
enrichedQuery.json ||
|
|
458
|
-
enrichedQuery.customData ||
|
|
459
|
-
enrichedQuery.requestBody
|
|
460
|
-
) {
|
|
461
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
462
|
-
<span class="cstat-no" title="statement not covered" > enrichedQuery.json = JSON.parse(</span>
|
|
463
|
-
enrichedQuery.json ||
|
|
464
|
-
enrichedQuery.customData ||
|
|
465
|
-
enrichedQuery.requestBody
|
|
466
|
-
)
|
|
467
|
-
} catch (err) {
|
|
468
|
-
<span class="cstat-no" title="statement not covered" > throw { message: `JSON Invalid - error: ${err}` }</span>
|
|
469
|
-
}
|
|
470
|
-
<span class="cstat-no" title="statement not covered" > delete enrichedQuery.customData</span>
|
|
471
|
-
}
|
|
472
|
-
|
|
473
|
-
return enrichedQuery
|
|
474
|
-
}
|
|
475
|
-
|
|
476
544
|
exports.find = async function (ctx) {
|
|
477
545
|
const db = new CouchDB(ctx.appId)
|
|
478
546
|
const query = enrichQueries(await db.get(ctx.params.queryId))
|
|
@@ -488,54 +556,91 @@ exports.preview = async function (ctx) {
|
|
|
488
556
|
const db = new CouchDB(ctx.appId)
|
|
489
557
|
|
|
490
558
|
const datasource = await db.get(ctx.request.body.datasourceId)
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
const
|
|
559
|
+
// preview may not have a queryId as it hasn't been saved, but if it does
|
|
560
|
+
// this stops dynamic variables from calling the same query
|
|
561
|
+
const { fields, parameters, queryVerb, transformer, queryId } =
|
|
562
|
+
ctx.request.body
|
|
494
563
|
|
|
495
564
|
try {
|
|
496
|
-
const { rows, keys } = await Runner.run({
|
|
565
|
+
const { rows, keys, info, extra } = await Runner.run({
|
|
566
|
+
appId: ctx.appId,
|
|
497
567
|
datasource,
|
|
498
568
|
queryVerb,
|
|
499
|
-
|
|
569
|
+
fields,
|
|
570
|
+
parameters,
|
|
500
571
|
transformer,
|
|
572
|
+
queryId,
|
|
501
573
|
})
|
|
502
574
|
|
|
503
575
|
ctx.body = {
|
|
504
576
|
rows,
|
|
505
577
|
schemaFields: [...new Set(keys)],
|
|
578
|
+
info,
|
|
579
|
+
extra,
|
|
506
580
|
}
|
|
507
581
|
} catch (err) {
|
|
508
582
|
ctx.throw(400, err)
|
|
509
583
|
}
|
|
510
584
|
}
|
|
511
585
|
|
|
512
|
-
|
|
586
|
+
async function execute(ctx, opts = <span class="branch-0 cbranch-no" title="branch not covered" >{ rowsOnly: false })</span> {
|
|
513
587
|
const db = new CouchDB(ctx.appId)
|
|
514
588
|
|
|
515
589
|
const query = await db.get(ctx.params.queryId)
|
|
516
590
|
const datasource = await db.get(query.datasourceId)
|
|
517
|
-
|
|
518
|
-
const enrichedQuery = await enrichQueryFields(
|
|
519
|
-
query.fields,
|
|
520
|
-
ctx.request.body.parameters
|
|
521
|
-
)
|
|
522
591
|
|
|
523
592
|
// call the relevant CRUD method on the integration class
|
|
524
593
|
try {
|
|
525
|
-
const { rows } = await Runner.run({
|
|
594
|
+
const { rows, pagination, extra } = await Runner.run({
|
|
595
|
+
appId: ctx.appId,
|
|
526
596
|
datasource,
|
|
527
597
|
queryVerb: query.queryVerb,
|
|
528
|
-
|
|
598
|
+
fields: query.fields,
|
|
599
|
+
pagination: ctx.request.body.pagination,
|
|
600
|
+
parameters: ctx.request.body.parameters,
|
|
529
601
|
transformer: query.transformer,
|
|
602
|
+
queryId: ctx.params.queryId,
|
|
530
603
|
})
|
|
531
|
-
|
|
604
|
+
if (opts && opts.rowsOnly) {
|
|
605
|
+
ctx.body = rows
|
|
606
|
+
} else <span class="missing-if-branch" title="else path not taken" >E</span>{
|
|
607
|
+
<span class="cstat-no" title="statement not covered" > ctx.body = { data: rows, pagination, ...extra }</span>
|
|
608
|
+
}
|
|
532
609
|
} catch (err) {
|
|
533
610
|
ctx.throw(400, err)
|
|
534
611
|
}
|
|
535
612
|
}
|
|
536
613
|
|
|
614
|
+
exports.executeV1 = async function (ctx) {
|
|
615
|
+
return execute(ctx, { rowsOnly: true })
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
exports.executeV2 = <span class="fstat-no" title="function not covered" >as</span>ync function (ctx) {
|
|
619
|
+
<span class="cstat-no" title="statement not covered" > return execute(ctx, { rowsOnly: false })</span>
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
const removeDynamicVariables = async (db, queryId) => {
|
|
623
|
+
const query = await db.get(queryId)
|
|
624
|
+
const datasource = await db.get(query.datasourceId)
|
|
625
|
+
const dynamicVariables = datasource.config.dynamicVariables
|
|
626
|
+
|
|
627
|
+
if (dynamicVariables) {
|
|
628
|
+
// delete dynamic variables from the datasource
|
|
629
|
+
const newVariables = dynamicVariables.filter(dv => dv.queryId !== queryId)
|
|
630
|
+
datasource.config.dynamicVariables = newVariables
|
|
631
|
+
await db.put(datasource)
|
|
632
|
+
|
|
633
|
+
// invalidate the deleted variables
|
|
634
|
+
const variablesToDelete = dynamicVariables.filter(
|
|
635
|
+
dv => dv.queryId === queryId
|
|
636
|
+
)
|
|
637
|
+
await invalidateDynamicVariables(variablesToDelete)
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
|
|
537
641
|
exports.destroy = async function (ctx) {
|
|
538
642
|
const db = new CouchDB(ctx.appId)
|
|
643
|
+
await removeDynamicVariables(db, ctx.params.queryId)
|
|
539
644
|
await db.remove(ctx.params.queryId, ctx.params.revId)
|
|
540
645
|
ctx.message = `Query deleted.`
|
|
541
646
|
ctx.status = 200
|
|
@@ -547,17 +652,17 @@ exports.destroy = async function (ctx) {
|
|
|
547
652
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
548
653
|
Code coverage generated by
|
|
549
654
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
550
|
-
at
|
|
655
|
+
at Mon Jan 17 2022 08:48:35 GMT+0000 (Coordinated Universal Time)
|
|
551
656
|
</div>
|
|
552
657
|
</div>
|
|
553
|
-
<script src="
|
|
658
|
+
<script src="../../../prettify.js"></script>
|
|
554
659
|
<script>
|
|
555
660
|
window.onload = function () {
|
|
556
661
|
prettyPrint();
|
|
557
662
|
};
|
|
558
663
|
</script>
|
|
559
|
-
<script src="
|
|
560
|
-
<script src="
|
|
664
|
+
<script src="../../../sorter.js"></script>
|
|
665
|
+
<script src="../../../block-navigation.js"></script>
|
|
561
666
|
</body>
|
|
562
667
|
</html>
|
|
563
668
|
|