@budibase/server 1.0.49 → 1.0.50-alpha.3
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__/arangojs.ts +1 -1
- package/__mocks__/aws-sdk.ts +4 -4
- package/__mocks__/mongodb.ts +4 -5
- package/__mocks__/mssql.ts +3 -3
- package/__mocks__/node-fetch.ts +2 -1
- package/__mocks__/pg.ts +3 -5
- package/builder/assets/{index.2c37968e.js → index.9fe798bd.js} +252 -249
- package/builder/assets/index.c0cc369d.css +6 -0
- package/builder/assets/{vendor.f9faf6ab.js → vendor.5ad9695a.js} +202 -106
- package/builder/index.html +3 -3
- package/coverage/clover.xml +3105 -2814
- package/coverage/coverage-final.json +106 -101
- 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 +257 -152
- package/coverage/lcov-report/api/controllers/auth.js.html +22 -13
- package/coverage/lcov-report/api/controllers/automation.js.html +39 -69
- package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
- package/coverage/lcov-report/api/controllers/cloud.js.html +8 -11
- package/coverage/lcov-report/api/controllers/component.js.html +13 -16
- package/coverage/lcov-report/api/controllers/datasource.js.html +81 -51
- package/coverage/lcov-report/api/controllers/dev.js.html +6 -6
- package/coverage/lcov-report/api/controllers/index.html +78 -78
- package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
- package/coverage/lcov-report/api/controllers/layout.js.html +9 -9
- package/coverage/lcov-report/api/controllers/metadata.js.html +6 -21
- package/coverage/lcov-report/api/controllers/migrations.js.html +119 -0
- package/coverage/lcov-report/api/controllers/permission.js.html +19 -19
- package/coverage/lcov-report/api/controllers/query/index.html +10 -10
- package/coverage/lcov-report/api/controllers/query/index.js.html +38 -35
- package/coverage/lcov-report/api/controllers/query/validation.js.html +6 -6
- package/coverage/lcov-report/api/controllers/role.js.html +16 -16
- package/coverage/lcov-report/api/controllers/routing.js.html +7 -10
- package/coverage/lcov-report/api/controllers/row/external.js.html +48 -141
- package/coverage/lcov-report/api/controllers/row/index.html +55 -40
- package/coverage/lcov-report/api/controllers/row/index.js.html +26 -26
- package/coverage/lcov-report/api/controllers/row/internal.js.html +118 -226
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +52 -34
- package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +548 -0
- package/coverage/lcov-report/api/controllers/row/utils.js.html +47 -62
- package/coverage/lcov-report/api/controllers/screen.js.html +15 -21
- package/coverage/lcov-report/api/controllers/script.js.html +4 -4
- package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +599 -0
- package/coverage/lcov-report/api/controllers/table/external.js.html +25 -34
- package/coverage/lcov-report/api/controllers/table/index.html +58 -43
- package/coverage/lcov-report/api/controllers/table/index.js.html +58 -82
- package/coverage/lcov-report/api/controllers/table/internal.js.html +81 -66
- package/coverage/lcov-report/api/controllers/table/utils.js.html +218 -110
- package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
- package/coverage/lcov-report/api/controllers/user.js.html +79 -76
- package/coverage/lcov-report/api/controllers/view/exporters.js.html +4 -4
- package/coverage/lcov-report/api/controllers/view/index.html +16 -16
- package/coverage/lcov-report/api/controllers/view/index.js.html +27 -33
- package/coverage/lcov-report/api/controllers/view/utils.js.html +35 -20
- package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +7 -7
- package/coverage/lcov-report/api/controllers/webhook.js.html +34 -28
- package/coverage/lcov-report/api/index.html +1 -1
- package/coverage/lcov-report/api/index.js.html +8 -8
- 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/index.html +18 -18
- package/coverage/lcov-report/api/routes/index.js.html +3 -3
- 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/{hosting.js.html → migrations.js.html} +17 -14
- package/coverage/lcov-report/api/routes/permission.js.html +1 -1
- package/coverage/lcov-report/api/routes/query.js.html +1 -1
- package/coverage/lcov-report/api/routes/role.js.html +1 -1
- package/coverage/lcov-report/api/routes/routing.js.html +1 -1
- package/coverage/lcov-report/api/routes/row.js.html +1 -1
- package/coverage/lcov-report/api/routes/screen.js.html +1 -1
- package/coverage/lcov-report/api/routes/script.js.html +1 -1
- package/coverage/lcov-report/api/routes/static.js.html +17 -2
- package/coverage/lcov-report/api/routes/table.js.html +1 -1
- package/coverage/lcov-report/api/routes/templates.js.html +1 -1
- package/coverage/lcov-report/api/routes/user.js.html +1 -1
- package/coverage/lcov-report/api/routes/view.js.html +1 -1
- package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/actions.js.html +24 -24
- package/coverage/lcov-report/automations/automationUtils.js.html +7 -10
- package/coverage/lcov-report/automations/bullboard.js.html +16 -16
- package/coverage/lcov-report/automations/index.html +18 -18
- package/coverage/lcov-report/automations/index.js.html +1 -1
- package/coverage/lcov-report/automations/steps/bash.js.html +6 -6
- package/coverage/lcov-report/automations/steps/createRow.js.html +13 -22
- package/coverage/lcov-report/automations/steps/delay.js.html +4 -4
- package/coverage/lcov-report/automations/steps/deleteRow.js.html +11 -20
- package/coverage/lcov-report/automations/steps/discord.js.html +7 -7
- package/coverage/lcov-report/automations/steps/executeQuery.js.html +6 -6
- package/coverage/lcov-report/automations/steps/executeScript.js.html +6 -6
- package/coverage/lcov-report/automations/steps/filter.js.html +7 -7
- package/coverage/lcov-report/automations/steps/index.html +13 -13
- package/coverage/lcov-report/automations/steps/integromat.js.html +5 -5
- package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +8 -8
- package/coverage/lcov-report/automations/steps/queryRows.js.html +10 -10
- package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +5 -5
- package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -3
- package/coverage/lcov-report/automations/steps/slack.js.html +5 -5
- package/coverage/lcov-report/automations/steps/updateRow.js.html +7 -7
- package/coverage/lcov-report/automations/steps/utils.js.html +3 -3
- package/coverage/lcov-report/automations/steps/zapier.js.html +5 -5
- package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
- package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
- package/coverage/lcov-report/automations/triggers.js.html +61 -55
- package/coverage/lcov-report/automations/utils.js.html +54 -42
- package/coverage/lcov-report/constants/index.html +5 -5
- package/coverage/lcov-report/constants/index.js.html +53 -26
- package/coverage/lcov-report/constants/layouts.js.html +5 -5
- package/coverage/lcov-report/constants/screens.js.html +4 -4
- package/coverage/lcov-report/db/client.js.html +18 -18
- package/coverage/lcov-report/db/inMemoryView.js.html +7 -7
- 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 +25 -37
- package/coverage/lcov-report/db/linkedRows/index.html +27 -27
- package/coverage/lcov-report/db/linkedRows/index.js.html +51 -96
- package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +42 -42
- package/coverage/lcov-report/db/newid.js.html +4 -4
- package/coverage/lcov-report/db/utils.js.html +87 -87
- 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 +5 -5
- package/coverage/lcov-report/events/utils.js.html +3 -3
- package/coverage/lcov-report/index.html +135 -120
- 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 +173 -65
- package/coverage/lcov-report/middleware/builder.js.html +10 -10
- package/coverage/lcov-report/middleware/currentapp.js.html +95 -83
- package/coverage/lcov-report/middleware/index.html +38 -38
- package/coverage/lcov-report/middleware/joi-validator.js.html +3 -3
- package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
- package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
- package/coverage/lcov-report/middleware/usageQuota.js.html +281 -53
- package/coverage/lcov-report/middleware/utils.js.html +2 -2
- package/coverage/lcov-report/threads/automation.js.html +30 -24
- package/coverage/lcov-report/threads/index.html +26 -26
- package/coverage/lcov-report/threads/index.js.html +10 -10
- package/coverage/lcov-report/threads/query.js.html +39 -24
- package/coverage/lcov-report/threads/utils.js.html +14 -14
- package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
- package/coverage/lcov-report/utilities/budibaseDir.js.html +7 -7
- package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
- package/coverage/lcov-report/utilities/csvParser.js.html +6 -6
- package/coverage/lcov-report/utilities/global.js.html +58 -49
- package/coverage/lcov-report/utilities/index.html +37 -37
- package/coverage/lcov-report/utilities/index.js.html +43 -73
- package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +8 -8
- 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 +7 -7
- package/coverage/lcov-report/utilities/rowProcessor/index.html +27 -27
- package/coverage/lcov-report/utilities/rowProcessor/index.js.html +97 -103
- package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +75 -27
- package/coverage/lcov-report/utilities/scriptRunner.js.html +5 -5
- package/coverage/lcov-report/utilities/security.js.html +8 -8
- package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/index.html +141 -0
- package/coverage/lcov-report/utilities/usageQuota/index.js.html +359 -0
- package/coverage/lcov-report/utilities/usageQuota/rows.js.html +305 -0
- package/coverage/lcov-report/{api/controllers/hosting.js.html → utilities/usageQuota/usageQuoteReset.js.html} +36 -48
- package/coverage/lcov-report/utilities/users.js.html +9 -9
- package/coverage/lcov-report/utilities/workerRequests.js.html +43 -112
- package/coverage/lcov.info +5010 -4425
- package/dist/api/controllers/application.js +90 -60
- package/dist/api/controllers/auth.js +8 -5
- package/dist/api/controllers/automation.js +14 -19
- package/dist/api/controllers/cloud.js +2 -3
- package/dist/api/controllers/component.js +3 -4
- package/dist/api/controllers/datasource.js +20 -10
- package/dist/api/controllers/deploy/Deployment.js +3 -6
- package/dist/api/controllers/deploy/index.js +12 -13
- package/dist/api/controllers/dev.js +5 -5
- package/dist/api/controllers/layout.js +3 -3
- package/dist/api/controllers/metadata.js +4 -4
- package/dist/api/controllers/migrations.js +21 -0
- package/dist/api/controllers/permission.js +4 -4
- package/dist/api/controllers/query/import/index.js +4 -6
- package/dist/api/controllers/query/index.js +11 -10
- package/dist/api/controllers/role.js +5 -5
- package/dist/api/controllers/routing.js +5 -6
- package/dist/api/controllers/row/ExternalRequest.js +90 -67
- package/dist/api/controllers/row/external.js +14 -22
- package/dist/api/controllers/row/internal.js +55 -93
- package/dist/api/controllers/row/internalSearch.js +23 -17
- package/dist/api/controllers/row/staticFormula.js +147 -0
- package/dist/api/controllers/row/utils.js +13 -14
- package/dist/api/controllers/screen.js +5 -7
- package/dist/api/controllers/static/index.js +62 -16
- package/dist/api/controllers/table/bulkFormula.js +159 -0
- package/dist/api/controllers/table/external.js +7 -10
- package/dist/api/controllers/table/index.js +16 -13
- package/dist/api/controllers/table/internal.js +22 -16
- package/dist/api/controllers/table/utils.js +62 -35
- package/dist/api/controllers/user.js +43 -43
- package/dist/api/controllers/view/index.js +8 -10
- package/dist/api/controllers/view/utils.js +9 -4
- package/dist/api/controllers/webhook.js +10 -8
- package/dist/api/routes/index.js +2 -2
- package/dist/api/routes/migrations.js +9 -0
- package/dist/api/routes/static.js +2 -1
- package/dist/api/routes/tests/utilities/TestFunctions.js +37 -17
- package/dist/app.js +35 -5
- package/dist/automations/automationUtils.js +2 -3
- package/dist/automations/steps/createRow.js +3 -5
- package/dist/automations/steps/deleteRow.js +1 -4
- package/dist/automations/steps/updateRow.js +1 -1
- package/dist/automations/triggers.js +27 -25
- package/dist/automations/utils.js +10 -5
- package/dist/constants/index.js +7 -0
- package/dist/db/linkedRows/LinkController.js +3 -7
- package/dist/db/linkedRows/index.js +16 -27
- package/dist/db/linkedRows/linkUtils.js +6 -6
- package/dist/db/views/staticViews.js +9 -10
- package/dist/definitions/datasource.js +1 -0
- package/dist/environment.js +4 -1
- package/dist/integrations/base/sql.js +62 -21
- package/dist/integrations/googlesheets.js +340 -0
- package/dist/integrations/index.js +3 -0
- package/dist/integrations/utils.js +60 -9
- package/dist/middleware/authorized.js +57 -30
- package/dist/middleware/builder.js +2 -2
- package/dist/middleware/currentapp.js +41 -37
- package/dist/middleware/usageQuota.js +82 -15
- package/dist/migrations/functions/appUrls.js +46 -0
- package/dist/migrations/functions/quotas1.js +50 -0
- package/dist/migrations/functions/usageQuotas/index.js +20 -0
- package/dist/migrations/functions/usageQuotas/syncApps.js +29 -0
- package/dist/migrations/functions/usageQuotas/syncRows.js +33 -0
- package/dist/migrations/functions/userEmailViewCasing.js +24 -0
- package/dist/migrations/index.js +62 -0
- package/dist/package.json +8 -5
- package/dist/tests/utilities/TestConfiguration.js +80 -50
- package/dist/threads/automation.js +13 -11
- package/dist/threads/query.js +15 -11
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utilities/fileSystem/index.js +4 -3
- package/dist/utilities/global.js +15 -12
- package/dist/utilities/index.js +7 -17
- package/dist/utilities/routing/index.js +5 -5
- package/dist/utilities/rowProcessor/index.js +23 -17
- package/dist/utilities/rowProcessor/utils.js +14 -4
- package/dist/utilities/{usageQuota.js → usageQuota/index.js} +45 -31
- package/dist/utilities/usageQuota/rows.js +78 -0
- package/dist/utilities/usageQuota/usageQuoteReset.js +16 -0
- package/dist/utilities/users.js +3 -3
- package/dist/utilities/workerRequests.js +4 -24
- package/nodemon.json +1 -1
- package/package.json +9 -6
- package/scripts/integrations/mssql/data/Dockerfile +1 -1
- package/scripts/integrations/mssql/data/setup.sql +17 -4
- package/scripts/integrations/postgres/init.sql +11 -6
- package/scripts/likeCypress.ts +1 -1
- package/src/api/controllers/application.js +85 -50
- package/src/api/controllers/auth.js +8 -5
- package/src/api/controllers/automation.js +13 -23
- package/src/api/controllers/cloud.js +2 -3
- package/src/api/controllers/component.js +3 -4
- package/src/api/controllers/datasource.js +21 -11
- package/src/api/controllers/deploy/Deployment.js +3 -7
- package/src/api/controllers/deploy/index.js +20 -13
- package/src/api/controllers/dev.js +5 -5
- package/src/api/controllers/layout.js +3 -3
- package/src/api/controllers/metadata.js +4 -9
- package/src/api/controllers/migrations.js +13 -0
- package/src/api/controllers/permission.js +4 -4
- package/src/api/controllers/query/import/index.ts +4 -6
- package/src/api/controllers/query/import/tests/index.spec.js +2 -1
- package/src/api/controllers/query/index.js +11 -10
- package/src/api/controllers/role.js +5 -5
- package/src/api/controllers/routing.js +5 -6
- package/src/api/controllers/row/ExternalRequest.ts +67 -43
- package/src/api/controllers/row/external.js +27 -58
- package/src/api/controllers/row/internal.js +54 -90
- package/src/api/controllers/row/internalSearch.js +23 -17
- package/src/api/controllers/row/staticFormula.js +156 -0
- package/src/api/controllers/row/utils.js +13 -18
- package/src/api/controllers/screen.js +5 -7
- package/src/api/controllers/static/index.js +66 -15
- package/src/api/controllers/table/bulkFormula.js +173 -0
- package/src/api/controllers/table/external.js +7 -10
- package/src/api/controllers/table/index.js +20 -28
- package/src/api/controllers/table/internal.js +24 -19
- package/src/api/controllers/table/utils.js +78 -42
- package/src/api/controllers/user.js +46 -45
- package/src/api/controllers/view/index.js +8 -10
- package/src/api/controllers/view/utils.js +9 -4
- package/src/api/controllers/webhook.js +10 -8
- package/src/api/routes/index.js +2 -2
- package/src/api/routes/migrations.js +14 -0
- package/src/api/routes/static.js +5 -0
- package/src/api/routes/tests/application.spec.js +2 -2
- package/src/api/routes/tests/auth.spec.js +1 -2
- package/src/api/routes/tests/automation.spec.js +1 -0
- package/src/api/routes/tests/misc.spec.js +0 -1
- package/src/api/routes/tests/routing.spec.js +21 -12
- package/src/api/routes/tests/row.spec.js +7 -4
- package/src/api/routes/tests/static.spec.js +98 -0
- package/src/api/routes/tests/utilities/TestFunctions.js +39 -17
- package/src/app.ts +18 -5
- package/src/automations/automationUtils.js +2 -3
- package/src/automations/steps/createRow.js +2 -5
- package/src/automations/steps/deleteRow.js +1 -4
- package/src/automations/steps/updateRow.js +1 -1
- package/src/automations/triggers.js +33 -31
- package/src/automations/utils.js +9 -5
- package/src/constants/index.js +9 -0
- package/src/db/linkedRows/LinkController.js +3 -7
- package/src/db/linkedRows/index.js +16 -31
- package/src/db/linkedRows/linkUtils.js +6 -6
- package/src/db/tests/linkController.spec.js +0 -1
- package/src/db/tests/linkTests.spec.js +5 -6
- package/src/db/views/staticViews.js +8 -10
- package/src/definitions/common.ts +3 -0
- package/src/definitions/datasource.ts +3 -0
- package/src/environment.js +4 -1
- package/src/integrations/base/sql.ts +75 -29
- package/src/integrations/googlesheets.ts +353 -0
- package/src/integrations/index.ts +3 -0
- package/src/integrations/tests/sql.spec.js +16 -0
- package/src/integrations/utils.ts +75 -12
- package/src/middleware/authorized.js +66 -30
- package/src/middleware/builder.js +2 -2
- package/src/middleware/currentapp.js +50 -46
- package/src/middleware/tests/authorized.spec.js +13 -6
- package/src/middleware/tests/currentapp.spec.js +6 -0
- package/src/middleware/tests/usageQuota.spec.js +18 -24
- package/src/middleware/usageQuota.js +93 -17
- package/src/migrations/functions/appUrls.ts +34 -0
- package/src/migrations/functions/quotas1.ts +20 -0
- package/src/migrations/functions/tests/appUrls.spec.js +29 -0
- package/src/migrations/functions/tests/quotas1.spec.js +27 -0
- package/src/migrations/functions/tests/userEmailViewCasing.spec.js +25 -0
- package/src/migrations/functions/usageQuotas/index.ts +8 -0
- package/src/migrations/functions/usageQuotas/syncApps.ts +18 -0
- package/src/migrations/functions/usageQuotas/syncRows.ts +22 -0
- package/src/migrations/functions/usageQuotas/tests/syncApps.spec.js +37 -0
- package/src/migrations/functions/usageQuotas/tests/syncRows.spec.js +43 -0
- package/src/migrations/functions/userEmailViewCasing.ts +13 -0
- package/src/migrations/index.ts +56 -0
- package/src/module.d.ts +3 -0
- package/src/tests/utilities/TestConfiguration.js +82 -55
- package/src/threads/automation.js +17 -15
- package/src/threads/query.js +17 -12
- package/src/utilities/fileSystem/index.js +4 -3
- package/src/utilities/global.js +15 -12
- package/src/utilities/index.js +7 -17
- package/src/utilities/routing/index.js +5 -5
- package/src/utilities/rowProcessor/index.js +25 -27
- package/src/utilities/rowProcessor/utils.js +23 -7
- package/src/utilities/tests/usageQuota/usageQuota.spec.js +72 -0
- package/src/utilities/usageQuota/index.js +93 -0
- package/src/utilities/usageQuota/rows.js +75 -0
- package/src/utilities/usageQuota/usageQuoteReset.js +18 -0
- package/src/utilities/users.js +3 -3
- package/src/utilities/workerRequests.js +4 -27
- package/tsconfig.json +4 -2
- package/builder/assets/index.39e01193.css +0 -1
- package/dist/api/controllers/hosting.js +0 -30
- package/dist/api/routes/hosting.js +0 -11
- package/src/api/controllers/hosting.js +0 -22
- package/src/api/routes/hosting.js +0 -13
- package/src/api/routes/tests/hosting.spec.js +0 -36
- package/src/utilities/usageQuota.js +0 -73
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
const CouchDB = require("../../db")
|
|
2
1
|
const {
|
|
3
2
|
generateDatasourceID,
|
|
4
3
|
getDatasourceParams,
|
|
@@ -11,12 +10,11 @@ const { BuildSchemaErrors, InvalidColumns } = require("../../constants")
|
|
|
11
10
|
const { integrations } = require("../../integrations")
|
|
12
11
|
const { getDatasourceAndQuery } = require("./row/utils")
|
|
13
12
|
const { invalidateDynamicVariables } = require("../../threads/utils")
|
|
13
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
14
14
|
|
|
15
15
|
exports.fetch = async function (ctx) {
|
|
16
|
-
const database = new CouchDB(ctx.appId)
|
|
17
|
-
|
|
18
16
|
// Get internal tables
|
|
19
|
-
const db =
|
|
17
|
+
const db = getAppDB()
|
|
20
18
|
const internalTables = await db.allDocs(
|
|
21
19
|
getTableParams(null, {
|
|
22
20
|
include_docs: true,
|
|
@@ -31,18 +29,25 @@ exports.fetch = async function (ctx) {
|
|
|
31
29
|
|
|
32
30
|
// Get external datasources
|
|
33
31
|
const datasources = (
|
|
34
|
-
await
|
|
32
|
+
await db.allDocs(
|
|
35
33
|
getDatasourceParams(null, {
|
|
36
34
|
include_docs: true,
|
|
37
35
|
})
|
|
38
36
|
)
|
|
39
37
|
).rows.map(row => row.doc)
|
|
40
38
|
|
|
39
|
+
for (let datasource of datasources) {
|
|
40
|
+
if (datasource.config && datasource.config.auth) {
|
|
41
|
+
// strip secrets from response so they don't show in the network request
|
|
42
|
+
delete datasource.config.auth
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
41
46
|
ctx.body = [bbInternalDb, ...datasources]
|
|
42
47
|
}
|
|
43
48
|
|
|
44
49
|
exports.buildSchemaFromDb = async function (ctx) {
|
|
45
|
-
const db =
|
|
50
|
+
const db = getAppDB()
|
|
46
51
|
const datasource = await db.get(ctx.params.datasourceId)
|
|
47
52
|
|
|
48
53
|
const { tables, error } = await buildSchemaHelper(datasource)
|
|
@@ -91,11 +96,16 @@ const invalidateVariables = async (existingDatasource, updatedDatasource) => {
|
|
|
91
96
|
}
|
|
92
97
|
|
|
93
98
|
exports.update = async function (ctx) {
|
|
94
|
-
const db =
|
|
99
|
+
const db = getAppDB()
|
|
95
100
|
const datasourceId = ctx.params.datasourceId
|
|
96
101
|
let datasource = await db.get(datasourceId)
|
|
102
|
+
const auth = datasource.config.auth
|
|
97
103
|
await invalidateVariables(datasource, ctx.request.body)
|
|
98
104
|
datasource = { ...datasource, ...ctx.request.body }
|
|
105
|
+
if (auth && !ctx.request.body.auth) {
|
|
106
|
+
// don't strip auth config from DB
|
|
107
|
+
datasource.config.auth = auth
|
|
108
|
+
}
|
|
99
109
|
|
|
100
110
|
const response = await db.put(datasource)
|
|
101
111
|
datasource._rev = response.rev
|
|
@@ -114,7 +124,7 @@ exports.update = async function (ctx) {
|
|
|
114
124
|
}
|
|
115
125
|
|
|
116
126
|
exports.save = async function (ctx) {
|
|
117
|
-
const db =
|
|
127
|
+
const db = getAppDB()
|
|
118
128
|
const plus = ctx.request.body.datasource.plus
|
|
119
129
|
const fetchSchema = ctx.request.body.fetchSchema
|
|
120
130
|
|
|
@@ -150,7 +160,7 @@ exports.save = async function (ctx) {
|
|
|
150
160
|
}
|
|
151
161
|
|
|
152
162
|
exports.destroy = async function (ctx) {
|
|
153
|
-
const db =
|
|
163
|
+
const db = getAppDB()
|
|
154
164
|
|
|
155
165
|
// Delete all queries for the datasource
|
|
156
166
|
const queries = await db.allDocs(
|
|
@@ -172,7 +182,7 @@ exports.destroy = async function (ctx) {
|
|
|
172
182
|
}
|
|
173
183
|
|
|
174
184
|
exports.find = async function (ctx) {
|
|
175
|
-
const database =
|
|
185
|
+
const database = getAppDB()
|
|
176
186
|
ctx.body = await database.get(ctx.params.datasourceId)
|
|
177
187
|
}
|
|
178
188
|
|
|
@@ -180,7 +190,7 @@ exports.find = async function (ctx) {
|
|
|
180
190
|
exports.query = async function (ctx) {
|
|
181
191
|
const queryJson = ctx.request.body
|
|
182
192
|
try {
|
|
183
|
-
ctx.body = await getDatasourceAndQuery(
|
|
193
|
+
ctx.body = await getDatasourceAndQuery(queryJson)
|
|
184
194
|
} catch (err) {
|
|
185
195
|
ctx.throw(400, err)
|
|
186
196
|
}
|
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
const newid = require("../../../db/newid")
|
|
2
|
+
const { getAppId } = require("@budibase/backend-core/context")
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* This is used to pass around information about the deployment that is occurring
|
|
5
6
|
*/
|
|
6
7
|
class Deployment {
|
|
7
|
-
constructor(
|
|
8
|
-
this.appId = appId
|
|
8
|
+
constructor(id = null) {
|
|
9
9
|
this._id = id || newid()
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
getAppId() {
|
|
13
|
-
return this.appId
|
|
14
|
-
}
|
|
15
|
-
|
|
16
12
|
setVerification(verification) {
|
|
17
13
|
if (!verification) {
|
|
18
14
|
return
|
|
@@ -43,7 +39,7 @@ class Deployment {
|
|
|
43
39
|
getJSON() {
|
|
44
40
|
const obj = {
|
|
45
41
|
_id: this._id,
|
|
46
|
-
appId:
|
|
42
|
+
appId: getAppId(),
|
|
47
43
|
status: this.status,
|
|
48
44
|
}
|
|
49
45
|
if (this.err) {
|
|
@@ -1,12 +1,20 @@
|
|
|
1
|
-
const CouchDB = require("../../../db")
|
|
2
1
|
const Deployment = require("./Deployment")
|
|
3
|
-
const {
|
|
2
|
+
const {
|
|
3
|
+
Replication,
|
|
4
|
+
getProdAppID,
|
|
5
|
+
getDevelopmentAppID,
|
|
6
|
+
} = require("@budibase/backend-core/db")
|
|
4
7
|
const { DocumentTypes, getAutomationParams } = require("../../../db/utils")
|
|
5
8
|
const {
|
|
6
9
|
disableAllCrons,
|
|
7
10
|
enableCronTrigger,
|
|
8
11
|
} = require("../../../automations/utils")
|
|
9
12
|
const { app: appCache } = require("@budibase/backend-core/cache")
|
|
13
|
+
const {
|
|
14
|
+
getAppId,
|
|
15
|
+
getAppDB,
|
|
16
|
+
getProdAppDB,
|
|
17
|
+
} = require("@budibase/backend-core/context")
|
|
10
18
|
|
|
11
19
|
// the max time we can wait for an invalidation to complete before considering it failed
|
|
12
20
|
const MAX_PENDING_TIME_MS = 30 * 60000
|
|
@@ -34,9 +42,8 @@ async function checkAllDeployments(deployments) {
|
|
|
34
42
|
}
|
|
35
43
|
|
|
36
44
|
async function storeDeploymentHistory(deployment) {
|
|
37
|
-
const appId = deployment.getAppId()
|
|
38
45
|
const deploymentJSON = deployment.getJSON()
|
|
39
|
-
const db =
|
|
46
|
+
const db = getAppDB()
|
|
40
47
|
|
|
41
48
|
let deploymentDoc
|
|
42
49
|
try {
|
|
@@ -64,7 +71,7 @@ async function storeDeploymentHistory(deployment) {
|
|
|
64
71
|
}
|
|
65
72
|
|
|
66
73
|
async function initDeployedApp(prodAppId) {
|
|
67
|
-
const db =
|
|
74
|
+
const db = getProdAppDB()
|
|
68
75
|
console.log("Reading automation docs")
|
|
69
76
|
const automations = (
|
|
70
77
|
await db.allDocs(
|
|
@@ -88,10 +95,12 @@ async function initDeployedApp(prodAppId) {
|
|
|
88
95
|
|
|
89
96
|
async function deployApp(deployment) {
|
|
90
97
|
try {
|
|
91
|
-
const
|
|
98
|
+
const appId = getAppId()
|
|
99
|
+
const devAppId = getDevelopmentAppID(appId)
|
|
100
|
+
const productionAppId = getProdAppID(appId)
|
|
92
101
|
|
|
93
102
|
const replication = new Replication({
|
|
94
|
-
source:
|
|
103
|
+
source: devAppId,
|
|
95
104
|
target: productionAppId,
|
|
96
105
|
})
|
|
97
106
|
|
|
@@ -99,7 +108,7 @@ async function deployApp(deployment) {
|
|
|
99
108
|
|
|
100
109
|
await replication.replicate()
|
|
101
110
|
console.log("replication complete.. replacing app meta doc")
|
|
102
|
-
const db =
|
|
111
|
+
const db = getProdAppDB()
|
|
103
112
|
const appDoc = await db.get(DocumentTypes.APP_METADATA)
|
|
104
113
|
appDoc.appId = productionAppId
|
|
105
114
|
appDoc.instance._id = productionAppId
|
|
@@ -122,8 +131,7 @@ async function deployApp(deployment) {
|
|
|
122
131
|
|
|
123
132
|
exports.fetchDeployments = async function (ctx) {
|
|
124
133
|
try {
|
|
125
|
-
const
|
|
126
|
-
const db = new CouchDB(appId)
|
|
134
|
+
const db = getAppDB()
|
|
127
135
|
const deploymentDoc = await db.get(DocumentTypes.DEPLOYMENTS)
|
|
128
136
|
const { updated, deployments } = await checkAllDeployments(
|
|
129
137
|
deploymentDoc,
|
|
@@ -140,8 +148,7 @@ exports.fetchDeployments = async function (ctx) {
|
|
|
140
148
|
|
|
141
149
|
exports.deploymentProgress = async function (ctx) {
|
|
142
150
|
try {
|
|
143
|
-
const
|
|
144
|
-
const db = new CouchDB(appId)
|
|
151
|
+
const db = getAppDB()
|
|
145
152
|
const deploymentDoc = await db.get(DocumentTypes.DEPLOYMENTS)
|
|
146
153
|
ctx.body = deploymentDoc[ctx.params.deploymentId]
|
|
147
154
|
} catch (err) {
|
|
@@ -153,7 +160,7 @@ exports.deploymentProgress = async function (ctx) {
|
|
|
153
160
|
}
|
|
154
161
|
|
|
155
162
|
exports.deployApp = async function (ctx) {
|
|
156
|
-
let deployment = new Deployment(
|
|
163
|
+
let deployment = new Deployment()
|
|
157
164
|
console.log("Deployment object created")
|
|
158
165
|
deployment.setStatus(DeploymentStatus.PENDING)
|
|
159
166
|
console.log("Deployment object set to pending")
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
const fetch = require("node-fetch")
|
|
2
|
-
const CouchDB = require("../../db")
|
|
3
2
|
const env = require("../../environment")
|
|
4
3
|
const { checkSlashesInUrl } = require("../../utilities")
|
|
5
4
|
const { request } = require("../../utilities/workerRequests")
|
|
6
5
|
const { clearLock } = require("../../utilities/redis")
|
|
7
|
-
const { Replication } = require("@budibase/backend-core/db")
|
|
6
|
+
const { Replication, getProdAppID } = require("@budibase/backend-core/db")
|
|
8
7
|
const { DocumentTypes } = require("../../db/utils")
|
|
9
8
|
const { app: appCache } = require("@budibase/backend-core/cache")
|
|
9
|
+
const { getProdAppDB, getAppDB } = require("@budibase/backend-core/context")
|
|
10
10
|
|
|
11
11
|
async function redirect(ctx, method, path = "global") {
|
|
12
12
|
const { devPath } = ctx.params
|
|
@@ -77,11 +77,11 @@ exports.clearLock = async ctx => {
|
|
|
77
77
|
|
|
78
78
|
exports.revert = async ctx => {
|
|
79
79
|
const { appId } = ctx.params
|
|
80
|
-
const productionAppId = appId
|
|
80
|
+
const productionAppId = getProdAppID(appId)
|
|
81
81
|
|
|
82
82
|
// App must have been deployed first
|
|
83
83
|
try {
|
|
84
|
-
const db =
|
|
84
|
+
const db = getProdAppDB({ skip_setup: true })
|
|
85
85
|
const info = await db.info()
|
|
86
86
|
if (info.error) throw info.error
|
|
87
87
|
const deploymentDoc = await db.get(DocumentTypes.DEPLOYMENTS)
|
|
@@ -103,7 +103,7 @@ exports.revert = async ctx => {
|
|
|
103
103
|
|
|
104
104
|
await replication.rollback()
|
|
105
105
|
// update appID in reverted app to be dev version again
|
|
106
|
-
const db =
|
|
106
|
+
const db = getAppDB()
|
|
107
107
|
const appDoc = await db.get(DocumentTypes.APP_METADATA)
|
|
108
108
|
appDoc.appId = appId
|
|
109
109
|
appDoc.instance._id = appId
|
|
@@ -2,11 +2,11 @@ const {
|
|
|
2
2
|
EMPTY_LAYOUT,
|
|
3
3
|
BASE_LAYOUT_PROP_IDS,
|
|
4
4
|
} = require("../../constants/layouts")
|
|
5
|
-
const CouchDB = require("../../db")
|
|
6
5
|
const { generateLayoutID, getScreenParams } = require("../../db/utils")
|
|
6
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
7
7
|
|
|
8
8
|
exports.save = async function (ctx) {
|
|
9
|
-
const db =
|
|
9
|
+
const db = getAppDB()
|
|
10
10
|
let layout = ctx.request.body
|
|
11
11
|
|
|
12
12
|
if (!layout.props) {
|
|
@@ -26,7 +26,7 @@ exports.save = async function (ctx) {
|
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
exports.destroy = async function (ctx) {
|
|
29
|
-
const db =
|
|
29
|
+
const db = getAppDB()
|
|
30
30
|
const layoutId = ctx.params.layoutId,
|
|
31
31
|
layoutRev = ctx.params.layoutRev
|
|
32
32
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const { MetadataTypes } = require("../../constants")
|
|
2
|
-
const CouchDB = require("../../db")
|
|
3
2
|
const { generateMetadataID } = require("../../db/utils")
|
|
4
3
|
const { saveEntityMetadata, deleteEntityMetadata } = require("../../utilities")
|
|
4
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
5
5
|
|
|
6
6
|
exports.getTypes = async ctx => {
|
|
7
7
|
ctx.body = {
|
|
@@ -14,17 +14,12 @@ exports.saveMetadata = async ctx => {
|
|
|
14
14
|
if (type === MetadataTypes.AUTOMATION_TEST_HISTORY) {
|
|
15
15
|
ctx.throw(400, "Cannot save automation history type")
|
|
16
16
|
}
|
|
17
|
-
ctx.body = await saveEntityMetadata(
|
|
18
|
-
ctx.appId,
|
|
19
|
-
type,
|
|
20
|
-
entityId,
|
|
21
|
-
ctx.request.body
|
|
22
|
-
)
|
|
17
|
+
ctx.body = await saveEntityMetadata(type, entityId, ctx.request.body)
|
|
23
18
|
}
|
|
24
19
|
|
|
25
20
|
exports.deleteMetadata = async ctx => {
|
|
26
21
|
const { type, entityId } = ctx.params
|
|
27
|
-
await deleteEntityMetadata(
|
|
22
|
+
await deleteEntityMetadata(type, entityId)
|
|
28
23
|
ctx.body = {
|
|
29
24
|
message: "Metadata deleted successfully",
|
|
30
25
|
}
|
|
@@ -32,7 +27,7 @@ exports.deleteMetadata = async ctx => {
|
|
|
32
27
|
|
|
33
28
|
exports.getMetadata = async ctx => {
|
|
34
29
|
const { type, entityId } = ctx.params
|
|
35
|
-
const db =
|
|
30
|
+
const db = getAppDB()
|
|
36
31
|
const id = generateMetadataID(type, entityId)
|
|
37
32
|
try {
|
|
38
33
|
ctx.body = await db.get(id)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const { migrate, MIGRATIONS } = require("../../migrations")
|
|
2
|
+
|
|
3
|
+
exports.migrate = async ctx => {
|
|
4
|
+
const options = ctx.request.body
|
|
5
|
+
// don't await as can take a while, just return
|
|
6
|
+
migrate(options)
|
|
7
|
+
ctx.status = 200
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
exports.fetchDefinitions = async ctx => {
|
|
11
|
+
ctx.body = MIGRATIONS
|
|
12
|
+
ctx.status = 200
|
|
13
|
+
}
|
|
@@ -6,12 +6,12 @@ const {
|
|
|
6
6
|
getBuiltinRoles,
|
|
7
7
|
} = require("@budibase/backend-core/roles")
|
|
8
8
|
const { getRoleParams } = require("../../db/utils")
|
|
9
|
-
const CouchDB = require("../../db")
|
|
10
9
|
const {
|
|
11
10
|
CURRENTLY_SUPPORTED_LEVELS,
|
|
12
11
|
getBasePermissions,
|
|
13
12
|
} = require("../../utilities/security")
|
|
14
13
|
const { removeFromArray } = require("../../utilities")
|
|
14
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
15
15
|
|
|
16
16
|
const PermissionUpdateType = {
|
|
17
17
|
REMOVE: "remove",
|
|
@@ -35,7 +35,7 @@ async function updatePermissionOnRole(
|
|
|
35
35
|
{ roleId, resourceId, level },
|
|
36
36
|
updateType
|
|
37
37
|
) {
|
|
38
|
-
const db =
|
|
38
|
+
const db = getAppDB()
|
|
39
39
|
const remove = updateType === PermissionUpdateType.REMOVE
|
|
40
40
|
const isABuiltin = isBuiltin(roleId)
|
|
41
41
|
const dbRoleId = getDBRoleID(roleId)
|
|
@@ -106,7 +106,7 @@ exports.fetchLevels = function (ctx) {
|
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
exports.fetch = async function (ctx) {
|
|
109
|
-
const db =
|
|
109
|
+
const db = getAppDB()
|
|
110
110
|
const roles = await getAllDBRoles(db)
|
|
111
111
|
let permissions = {}
|
|
112
112
|
// create an object with structure role ID -> resource ID -> level
|
|
@@ -133,7 +133,7 @@ exports.fetch = async function (ctx) {
|
|
|
133
133
|
|
|
134
134
|
exports.getResourcePerms = async function (ctx) {
|
|
135
135
|
const resourceId = ctx.params.resourceId
|
|
136
|
-
const db =
|
|
136
|
+
const db = getAppDB()
|
|
137
137
|
const body = await db.allDocs(
|
|
138
138
|
getRoleParams(null, {
|
|
139
139
|
include_docs: true,
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import CouchDB from "../../../../db"
|
|
2
1
|
import { queryValidation } from "../validation"
|
|
3
2
|
import { generateQueryID } from "../../../../db/utils"
|
|
4
3
|
import { ImportInfo, ImportSource } from "./sources/base"
|
|
5
4
|
import { OpenAPI2 } from "./sources/openapi2"
|
|
6
5
|
import { Query } from "./../../../../definitions/common"
|
|
7
6
|
import { Curl } from "./sources/curl"
|
|
7
|
+
// @ts-ignore
|
|
8
|
+
import { getAppDB } from "@budibase/backend-core/context"
|
|
8
9
|
interface ImportResult {
|
|
9
10
|
errorQueries: Query[]
|
|
10
11
|
queries: Query[]
|
|
@@ -33,10 +34,7 @@ export class RestImporter {
|
|
|
33
34
|
return this.source.getInfo()
|
|
34
35
|
}
|
|
35
36
|
|
|
36
|
-
importQueries = async (
|
|
37
|
-
appId: string,
|
|
38
|
-
datasourceId: string
|
|
39
|
-
): Promise<ImportResult> => {
|
|
37
|
+
importQueries = async (datasourceId: string): Promise<ImportResult> => {
|
|
40
38
|
// constuct the queries
|
|
41
39
|
let queries = await this.source.getQueries(datasourceId)
|
|
42
40
|
|
|
@@ -58,7 +56,7 @@ export class RestImporter {
|
|
|
58
56
|
})
|
|
59
57
|
|
|
60
58
|
// persist queries
|
|
61
|
-
const db =
|
|
59
|
+
const db = getAppDB()
|
|
62
60
|
const response = await db.bulkDocs(queries)
|
|
63
61
|
|
|
64
62
|
// create index to seperate queries and errors
|
|
@@ -6,6 +6,7 @@ const db = jest.fn(() => {
|
|
|
6
6
|
}
|
|
7
7
|
})
|
|
8
8
|
jest.mock("../../../../../db", () => db)
|
|
9
|
+
require("@budibase/backend-core").init(require("../../../../../db"))
|
|
9
10
|
|
|
10
11
|
const { RestImporter } = require("../index")
|
|
11
12
|
|
|
@@ -77,7 +78,7 @@ describe("Rest Importer", () => {
|
|
|
77
78
|
const testImportQueries = async (key, data, assertions) => {
|
|
78
79
|
await init(data)
|
|
79
80
|
bulkDocs.mockReturnValue([])
|
|
80
|
-
const importResult = await restImporter.importQueries("
|
|
81
|
+
const importResult = await restImporter.importQueries("datasourceId")
|
|
81
82
|
expect(importResult.errorQueries.length).toBe(0)
|
|
82
83
|
expect(importResult.queries.length).toBe(assertions[key].count)
|
|
83
84
|
expect(bulkDocs).toHaveBeenCalledTimes(1)
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
const CouchDB = require("../../../db")
|
|
2
1
|
const {
|
|
3
2
|
generateQueryID,
|
|
4
3
|
getQueryParams,
|
|
@@ -10,6 +9,7 @@ const { save: saveDatasource } = require("../datasource")
|
|
|
10
9
|
const { RestImporter } = require("./import")
|
|
11
10
|
const { invalidateDynamicVariables } = require("../../../threads/utils")
|
|
12
11
|
const environment = require("../../../environment")
|
|
12
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
13
13
|
|
|
14
14
|
const Runner = new Thread(ThreadType.QUERY, {
|
|
15
15
|
timeoutMs: environment.QUERY_THREAD_TIMEOUT || 10000,
|
|
@@ -28,7 +28,7 @@ function enrichQueries(input) {
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
exports.fetch = async function (ctx) {
|
|
31
|
-
const db =
|
|
31
|
+
const db = getAppDB()
|
|
32
32
|
|
|
33
33
|
const body = await db.allDocs(
|
|
34
34
|
getQueryParams(null, {
|
|
@@ -69,7 +69,7 @@ exports.import = async ctx => {
|
|
|
69
69
|
datasourceId = body.datasourceId
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
const importResult = await importer.importQueries(
|
|
72
|
+
const importResult = await importer.importQueries(datasourceId)
|
|
73
73
|
|
|
74
74
|
ctx.body = {
|
|
75
75
|
...importResult,
|
|
@@ -79,7 +79,7 @@ exports.import = async ctx => {
|
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
exports.save = async function (ctx) {
|
|
82
|
-
const db =
|
|
82
|
+
const db = getAppDB()
|
|
83
83
|
const query = ctx.request.body
|
|
84
84
|
|
|
85
85
|
if (!query._id) {
|
|
@@ -94,7 +94,7 @@ exports.save = async function (ctx) {
|
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
exports.find = async function (ctx) {
|
|
97
|
-
const db =
|
|
97
|
+
const db = getAppDB()
|
|
98
98
|
const query = enrichQueries(await db.get(ctx.params.queryId))
|
|
99
99
|
// remove properties that could be dangerous in real app
|
|
100
100
|
if (isProdAppID(ctx.appId)) {
|
|
@@ -105,7 +105,7 @@ exports.find = async function (ctx) {
|
|
|
105
105
|
}
|
|
106
106
|
|
|
107
107
|
exports.preview = async function (ctx) {
|
|
108
|
-
const db =
|
|
108
|
+
const db = getAppDB()
|
|
109
109
|
|
|
110
110
|
const datasource = await db.get(ctx.request.body.datasourceId)
|
|
111
111
|
// preview may not have a queryId as it hasn't been saved, but if it does
|
|
@@ -136,7 +136,7 @@ exports.preview = async function (ctx) {
|
|
|
136
136
|
}
|
|
137
137
|
|
|
138
138
|
async function execute(ctx, opts = { rowsOnly: false }) {
|
|
139
|
-
const db =
|
|
139
|
+
const db = getAppDB()
|
|
140
140
|
|
|
141
141
|
const query = await db.get(ctx.params.queryId)
|
|
142
142
|
const datasource = await db.get(query.datasourceId)
|
|
@@ -181,7 +181,8 @@ exports.executeV2 = async function (ctx) {
|
|
|
181
181
|
return execute(ctx, { rowsOnly: false })
|
|
182
182
|
}
|
|
183
183
|
|
|
184
|
-
const removeDynamicVariables = async
|
|
184
|
+
const removeDynamicVariables = async queryId => {
|
|
185
|
+
const db = getAppDB()
|
|
185
186
|
const query = await db.get(queryId)
|
|
186
187
|
const datasource = await db.get(query.datasourceId)
|
|
187
188
|
const dynamicVariables = datasource.config.dynamicVariables
|
|
@@ -202,8 +203,8 @@ const removeDynamicVariables = async (db, queryId) => {
|
|
|
202
203
|
}
|
|
203
204
|
|
|
204
205
|
exports.destroy = async function (ctx) {
|
|
205
|
-
const db =
|
|
206
|
-
await removeDynamicVariables(
|
|
206
|
+
const db = getAppDB()
|
|
207
|
+
await removeDynamicVariables(ctx.params.queryId)
|
|
207
208
|
await db.remove(ctx.params.queryId, ctx.params.revId)
|
|
208
209
|
ctx.message = `Query deleted.`
|
|
209
210
|
ctx.status = 200
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
const CouchDB = require("../../db")
|
|
2
1
|
const {
|
|
3
2
|
Role,
|
|
4
3
|
getRole,
|
|
@@ -10,6 +9,7 @@ const {
|
|
|
10
9
|
getUserMetadataParams,
|
|
11
10
|
InternalTables,
|
|
12
11
|
} = require("../../db/utils")
|
|
12
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
13
13
|
|
|
14
14
|
const UpdateRolesOptions = {
|
|
15
15
|
CREATED: "created",
|
|
@@ -40,15 +40,15 @@ async function updateRolesOnUserTable(db, roleId, updateOption) {
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
exports.fetch = async function (ctx) {
|
|
43
|
-
ctx.body = await getAllRoles(
|
|
43
|
+
ctx.body = await getAllRoles()
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
exports.find = async function (ctx) {
|
|
47
|
-
ctx.body = await getRole(ctx.
|
|
47
|
+
ctx.body = await getRole(ctx.params.roleId)
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
exports.save = async function (ctx) {
|
|
51
|
-
const db =
|
|
51
|
+
const db = getAppDB()
|
|
52
52
|
let { _id, name, inherits, permissionId } = ctx.request.body
|
|
53
53
|
if (!_id) {
|
|
54
54
|
_id = generateRoleID()
|
|
@@ -69,7 +69,7 @@ exports.save = async function (ctx) {
|
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
exports.destroy = async function (ctx) {
|
|
72
|
-
const db =
|
|
72
|
+
const db = getAppDB()
|
|
73
73
|
const roleId = ctx.params.roleId
|
|
74
74
|
if (isBuiltin(roleId)) {
|
|
75
75
|
ctx.throw(400, "Cannot delete builtin role.")
|
|
@@ -39,12 +39,11 @@ Routing.prototype.addScreenId = function (fullpath, roleId, screenId) {
|
|
|
39
39
|
|
|
40
40
|
/**
|
|
41
41
|
* Gets the full routing structure by querying the routing view and processing the result into the tree.
|
|
42
|
-
* @param {string} appId The application to produce the routing structure for.
|
|
43
42
|
* @returns {Promise<object>} The routing structure, this is the full structure designed for use in the builder,
|
|
44
43
|
* if the client routing is required then the updateRoutingStructureForUserRole should be used.
|
|
45
44
|
*/
|
|
46
|
-
async function getRoutingStructure(
|
|
47
|
-
const screenRoutes = await getRoutingInfo(
|
|
45
|
+
async function getRoutingStructure() {
|
|
46
|
+
const screenRoutes = await getRoutingInfo()
|
|
48
47
|
const routing = new Routing()
|
|
49
48
|
|
|
50
49
|
for (let screenRoute of screenRoutes) {
|
|
@@ -57,13 +56,13 @@ async function getRoutingStructure(appId) {
|
|
|
57
56
|
}
|
|
58
57
|
|
|
59
58
|
exports.fetch = async ctx => {
|
|
60
|
-
ctx.body = await getRoutingStructure(
|
|
59
|
+
ctx.body = await getRoutingStructure()
|
|
61
60
|
}
|
|
62
61
|
|
|
63
62
|
exports.clientFetch = async ctx => {
|
|
64
|
-
const routing = await getRoutingStructure(
|
|
63
|
+
const routing = await getRoutingStructure()
|
|
65
64
|
let roleId = ctx.user.role._id
|
|
66
|
-
const roleIds = await getUserRoleHierarchy(
|
|
65
|
+
const roleIds = await getUserRoleHierarchy(roleId)
|
|
67
66
|
for (let topLevel of Object.values(routing.routes)) {
|
|
68
67
|
for (let subpathKey of Object.keys(topLevel.subpaths)) {
|
|
69
68
|
let found = false
|