@budibase/server 1.0.49-alpha.1 → 1.0.49-alpha.13
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.ba78c49d.css → index.83c0944f.css} +1 -1
- package/builder/assets/{index.ed1cf508.js → index.f686d3cd.js} +184 -184
- package/builder/index.html +2 -2
- package/coverage/clover.xml +2656 -2712
- package/coverage/coverage-final.json +104 -105
- 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 +157 -136
- package/coverage/lcov-report/api/controllers/auth.js.html +11 -14
- 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 +10 -13
- package/coverage/lcov-report/api/controllers/datasource.js.html +31 -37
- package/coverage/lcov-report/api/controllers/dev.js.html +6 -6
- package/coverage/lcov-report/api/controllers/index.html +69 -54
- 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/{migrations/usageQuotas/syncApps.js.html → api/controllers/migrations.js.html} +30 -45
- 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 +28 -28
- package/coverage/lcov-report/api/controllers/row/index.js.html +13 -13
- package/coverage/lcov-report/api/controllers/row/internal.js.html +60 -105
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +25 -31
- package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +21 -24
- package/coverage/lcov-report/api/controllers/row/utils.js.html +27 -24
- 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 +27 -57
- package/coverage/lcov-report/api/controllers/table/external.js.html +25 -34
- package/coverage/lcov-report/api/controllers/table/index.html +37 -37
- package/coverage/lcov-report/api/controllers/table/index.js.html +20 -20
- package/coverage/lcov-report/api/controllers/table/internal.js.html +45 -54
- package/coverage/lcov-report/api/controllers/table/utils.js.html +67 -103
- package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
- package/coverage/lcov-report/api/controllers/user.js.html +43 -52
- 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 +3 -3
- 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 +22 -7
- package/coverage/lcov-report/api/routes/index.js.html +10 -4
- 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/{migrations/usageQuotas/index.js.html → api/routes/migrations.js.html} +25 -55
- package/coverage/lcov-report/api/routes/permission.js.html +1 -1
- package/coverage/lcov-report/api/routes/query.js.html +1 -1
- package/coverage/lcov-report/api/routes/role.js.html +1 -1
- package/coverage/lcov-report/api/routes/routing.js.html +1 -1
- package/coverage/lcov-report/api/routes/row.js.html +1 -1
- package/coverage/lcov-report/api/routes/screen.js.html +1 -1
- package/coverage/lcov-report/api/routes/script.js.html +1 -1
- package/coverage/lcov-report/api/routes/static.js.html +1 -1
- package/coverage/lcov-report/api/routes/table.js.html +1 -1
- package/coverage/lcov-report/api/routes/templates.js.html +1 -1
- package/coverage/lcov-report/api/routes/user.js.html +1 -1
- package/coverage/lcov-report/api/routes/view.js.html +1 -1
- package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/actions.js.html +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 +7 -10
- package/coverage/lcov-report/automations/steps/delay.js.html +4 -4
- package/coverage/lcov-report/automations/steps/deleteRow.js.html +7 -7
- 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 +1 -1
- 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 +1 -1
- package/coverage/lcov-report/constants/index.js.html +26 -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 +1 -1
- package/coverage/lcov-report/db/index.js.html +3 -3
- package/coverage/lcov-report/db/linkedRows/LinkController.js.html +15 -27
- package/coverage/lcov-report/db/linkedRows/index.html +27 -27
- package/coverage/lcov-report/db/linkedRows/index.js.html +40 -82
- package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +40 -40
- package/coverage/lcov-report/db/newid.js.html +4 -4
- package/coverage/lcov-report/db/utils.js.html +74 -74
- 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 +97 -112
- 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 +21 -15
- package/coverage/lcov-report/middleware/builder.js.html +3 -3
- package/coverage/lcov-report/middleware/currentapp.js.html +72 -60
- package/coverage/lcov-report/middleware/index.html +28 -28
- 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 +29 -35
- 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 +25 -25
- package/coverage/lcov-report/threads/index.js.html +10 -10
- package/coverage/lcov-report/threads/query.js.html +26 -47
- 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 +57 -48
- package/coverage/lcov-report/utilities/index.html +27 -27
- package/coverage/lcov-report/utilities/index.js.html +42 -72
- 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 +11 -11
- package/coverage/lcov-report/utilities/rowProcessor/index.js.html +32 -74
- package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +4 -4
- 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 +1 -1
- package/coverage/lcov-report/utilities/usageQuota/index.js.html +13 -10
- package/coverage/lcov-report/utilities/usageQuota/rows.js.html +5 -2
- package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
- package/coverage/lcov-report/utilities/users.js.html +9 -9
- package/coverage/lcov-report/utilities/workerRequests.js.html +16 -16
- package/coverage/lcov.info +4018 -4092
- package/dist/api/controllers/application.js +49 -48
- package/dist/api/controllers/auth.js +4 -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 +9 -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 +29 -44
- package/dist/api/controllers/row/internalSearch.js +11 -13
- package/dist/api/controllers/row/staticFormula.js +11 -11
- package/dist/api/controllers/row/utils.js +7 -6
- package/dist/api/controllers/screen.js +5 -7
- package/dist/api/controllers/static/index.js +4 -4
- package/dist/api/controllers/table/bulkFormula.js +14 -15
- package/dist/api/controllers/table/external.js +7 -10
- package/dist/api/controllers/table/index.js +5 -5
- package/dist/api/controllers/table/internal.js +16 -19
- package/dist/api/controllers/table/utils.js +29 -31
- package/dist/api/controllers/user.js +16 -20
- 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 -0
- package/dist/api/routes/migrations.js +9 -0
- 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 +1 -1
- package/dist/automations/steps/updateRow.js +1 -1
- package/dist/automations/triggers.js +27 -25
- package/dist/automations/utils.js +10 -5
- package/dist/db/linkedRows/LinkController.js +3 -7
- package/dist/db/linkedRows/index.js +16 -26
- package/dist/db/linkedRows/linkUtils.js +6 -6
- package/dist/db/views/staticViews.js +9 -10
- package/dist/environment.js +3 -1
- package/dist/integrations/base/sql.js +49 -15
- package/dist/integrations/utils.js +3 -0
- package/dist/middleware/authorized.js +5 -3
- package/dist/middleware/builder.js +2 -2
- package/dist/middleware/currentapp.js +41 -37
- package/dist/middleware/usageQuota.js +2 -4
- package/dist/migrations/functions/appUrls.js +46 -0
- package/dist/migrations/functions/quotas1.js +50 -0
- package/dist/migrations/{usageQuotas → functions/usageQuotas}/index.js +6 -10
- package/dist/migrations/{usageQuotas → functions/usageQuotas}/syncApps.js +12 -9
- package/dist/migrations/{usageQuotas → functions/usageQuotas}/syncRows.js +16 -12
- package/dist/migrations/functions/userEmailViewCasing.js +24 -0
- package/dist/migrations/index.js +62 -0
- package/dist/package.json +4 -4
- package/dist/tests/utilities/TestConfiguration.js +70 -44
- package/dist/threads/automation.js +13 -11
- package/dist/threads/query.js +13 -19
- 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 +9 -10
- package/dist/utilities/usageQuota/index.js +1 -0
- package/dist/utilities/usageQuota/rows.js +1 -0
- package/dist/utilities/users.js +3 -3
- package/dist/utilities/workerRequests.js +4 -4
- package/package.json +5 -5
- 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 +38 -31
- package/src/api/controllers/auth.js +4 -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 +9 -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 +29 -44
- package/src/api/controllers/row/internalSearch.js +11 -13
- package/src/api/controllers/row/staticFormula.js +10 -11
- package/src/api/controllers/row/utils.js +7 -6
- package/src/api/controllers/screen.js +5 -7
- package/src/api/controllers/static/index.js +4 -4
- package/src/api/controllers/table/bulkFormula.js +13 -23
- package/src/api/controllers/table/external.js +7 -10
- package/src/api/controllers/table/index.js +5 -5
- package/src/api/controllers/table/internal.js +18 -21
- package/src/api/controllers/table/utils.js +29 -41
- package/src/api/controllers/user.js +17 -20
- 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 -0
- package/src/api/routes/migrations.js +14 -0
- 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/utilities/TestFunctions.js +39 -17
- package/src/app.ts +18 -5
- package/src/automations/automationUtils.js +2 -3
- package/src/automations/steps/createRow.js +0 -1
- package/src/automations/steps/updateRow.js +1 -1
- package/src/automations/triggers.js +33 -31
- package/src/automations/utils.js +9 -5
- package/src/db/linkedRows/LinkController.js +3 -7
- package/src/db/linkedRows/index.js +16 -30
- 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/environment.js +3 -1
- package/src/integrations/base/sql.ts +61 -22
- package/src/integrations/utils.ts +4 -1
- package/src/middleware/authorized.js +5 -3
- package/src/middleware/builder.js +2 -2
- package/src/middleware/currentapp.js +50 -46
- package/src/middleware/tests/authorized.spec.js +7 -2
- package/src/middleware/tests/currentapp.spec.js +6 -0
- package/src/middleware/usageQuota.js +2 -4
- 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/{tests/usageQuotas/index.spec.js → functions/tests/quotas1.spec.js} +5 -5
- package/src/migrations/functions/tests/userEmailViewCasing.spec.js +25 -0
- package/src/migrations/functions/usageQuotas/index.ts +8 -0
- package/src/migrations/{usageQuotas/syncApps.js → functions/usageQuotas/syncApps.ts} +6 -6
- package/src/migrations/functions/usageQuotas/syncRows.ts +22 -0
- package/src/migrations/{tests/usageQuotas → functions/usageQuotas/tests}/syncApps.spec.js +4 -4
- package/src/migrations/{tests/usageQuotas → functions/usageQuotas/tests}/syncRows.spec.js +4 -4
- 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 +73 -50
- package/src/threads/automation.js +17 -15
- package/src/threads/query.js +14 -21
- 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 +9 -23
- package/src/utilities/usageQuota/index.js +1 -0
- package/src/utilities/usageQuota/rows.js +1 -0
- package/src/utilities/users.js +3 -3
- package/src/utilities/workerRequests.js +4 -4
- package/tsconfig.json +2 -1
- package/coverage/lcov-report/migrations/usageQuotas/index.html +0 -141
- package/coverage/lcov-report/migrations/usageQuotas/syncRows.js.html +0 -143
- package/src/migrations/usageQuotas/index.js +0 -24
- package/src/migrations/usageQuotas/syncRows.js +0 -21
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
const CouchDB = require("../../../db")
|
|
2
1
|
const {
|
|
3
2
|
buildExternalTableId,
|
|
4
3
|
breakExternalTableId,
|
|
@@ -19,6 +18,7 @@ const { makeExternalQuery } = require("../../../integrations/base/utils")
|
|
|
19
18
|
const { cloneDeep } = require("lodash/fp")
|
|
20
19
|
const csvParser = require("../../../utilities/csvParser")
|
|
21
20
|
const { handleRequest } = require("../row/external")
|
|
21
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
22
22
|
|
|
23
23
|
async function makeTableRequest(
|
|
24
24
|
datasource,
|
|
@@ -159,7 +159,6 @@ function isRelationshipSetup(column) {
|
|
|
159
159
|
}
|
|
160
160
|
|
|
161
161
|
exports.save = async function (ctx) {
|
|
162
|
-
const appId = ctx.appId
|
|
163
162
|
const table = ctx.request.body
|
|
164
163
|
// can't do this right now
|
|
165
164
|
delete table.dataImport
|
|
@@ -176,14 +175,14 @@ exports.save = async function (ctx) {
|
|
|
176
175
|
|
|
177
176
|
let oldTable
|
|
178
177
|
if (ctx.request.body && ctx.request.body._id) {
|
|
179
|
-
oldTable = await getTable(
|
|
178
|
+
oldTable = await getTable(ctx.request.body._id)
|
|
180
179
|
}
|
|
181
180
|
|
|
182
181
|
if (hasTypeChanged(tableToSave, oldTable)) {
|
|
183
182
|
ctx.throw(400, "A column type has changed.")
|
|
184
183
|
}
|
|
185
184
|
|
|
186
|
-
const db =
|
|
185
|
+
const db = getAppDB()
|
|
187
186
|
const datasource = await db.get(datasourceId)
|
|
188
187
|
const oldTables = cloneDeep(datasource.entities)
|
|
189
188
|
const tables = datasource.entities
|
|
@@ -267,14 +266,13 @@ exports.save = async function (ctx) {
|
|
|
267
266
|
}
|
|
268
267
|
|
|
269
268
|
exports.destroy = async function (ctx) {
|
|
270
|
-
const
|
|
271
|
-
const tableToDelete = await getTable(appId, ctx.params.tableId)
|
|
269
|
+
const tableToDelete = await getTable(ctx.params.tableId)
|
|
272
270
|
if (!tableToDelete || !tableToDelete.created) {
|
|
273
271
|
ctx.throw(400, "Cannot delete tables which weren't created in Budibase.")
|
|
274
272
|
}
|
|
275
273
|
const datasourceId = getDatasourceId(tableToDelete)
|
|
276
274
|
|
|
277
|
-
const db =
|
|
275
|
+
const db = getAppDB()
|
|
278
276
|
const datasource = await db.get(datasourceId)
|
|
279
277
|
const tables = datasource.entities
|
|
280
278
|
|
|
@@ -290,8 +288,7 @@ exports.destroy = async function (ctx) {
|
|
|
290
288
|
}
|
|
291
289
|
|
|
292
290
|
exports.bulkImport = async function (ctx) {
|
|
293
|
-
const
|
|
294
|
-
const table = await getTable(appId, ctx.params.tableId)
|
|
291
|
+
const table = await getTable(ctx.params.tableId)
|
|
295
292
|
const { dataImport } = ctx.request.body
|
|
296
293
|
if (!dataImport || !dataImport.schema || !dataImport.csvString) {
|
|
297
294
|
ctx.throw(400, "Provided data import information is invalid.")
|
|
@@ -300,7 +297,7 @@ exports.bulkImport = async function (ctx) {
|
|
|
300
297
|
...dataImport,
|
|
301
298
|
existingTable: table,
|
|
302
299
|
})
|
|
303
|
-
await handleRequest(
|
|
300
|
+
await handleRequest(DataSourceOperation.BULK_CREATE, table._id, {
|
|
304
301
|
rows,
|
|
305
302
|
})
|
|
306
303
|
return table
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
const CouchDB = require("../../../db")
|
|
2
1
|
const internal = require("./internal")
|
|
3
2
|
const external = require("./external")
|
|
4
3
|
const csvParser = require("../../../utilities/csvParser")
|
|
5
4
|
const { isExternalTable, isSQL } = require("../../../integrations/utils")
|
|
6
5
|
const { getDatasourceParams } = require("../../../db/utils")
|
|
6
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
7
7
|
const { getTable, getAllInternalTables } = require("./utils")
|
|
8
8
|
|
|
9
9
|
function pickApi({ tableId, table }) {
|
|
@@ -20,9 +20,9 @@ function pickApi({ tableId, table }) {
|
|
|
20
20
|
|
|
21
21
|
// covers both internal and external
|
|
22
22
|
exports.fetch = async function (ctx) {
|
|
23
|
-
const db =
|
|
23
|
+
const db = getAppDB()
|
|
24
24
|
|
|
25
|
-
const internal = await getAllInternalTables(
|
|
25
|
+
const internal = await getAllInternalTables()
|
|
26
26
|
|
|
27
27
|
const externalTables = await db.allDocs(
|
|
28
28
|
getDatasourceParams("plus", {
|
|
@@ -49,7 +49,7 @@ exports.fetch = async function (ctx) {
|
|
|
49
49
|
|
|
50
50
|
exports.find = async function (ctx) {
|
|
51
51
|
const tableId = ctx.params.id
|
|
52
|
-
ctx.body = await getTable(
|
|
52
|
+
ctx.body = await getTable(tableId)
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
exports.save = async function (ctx) {
|
|
@@ -88,7 +88,7 @@ exports.validateCSVSchema = async function (ctx) {
|
|
|
88
88
|
const { csvString, schema = {}, tableId } = ctx.request.body
|
|
89
89
|
let existingTable
|
|
90
90
|
if (tableId) {
|
|
91
|
-
existingTable = await getTable(
|
|
91
|
+
existingTable = await getTable(tableId)
|
|
92
92
|
}
|
|
93
93
|
let result = await csvParser.parse(csvString, schema)
|
|
94
94
|
if (existingTable) {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
const CouchDB = require("../../../db")
|
|
2
1
|
const linkRows = require("../../../db/linkedRows")
|
|
3
2
|
const { getRowParams, generateTableID } = require("../../../db/utils")
|
|
4
3
|
const { FieldTypes } = require("../../../constants")
|
|
@@ -9,12 +8,13 @@ const {
|
|
|
9
8
|
handleDataImport,
|
|
10
9
|
} = require("./utils")
|
|
11
10
|
const usageQuota = require("../../../utilities/usageQuota")
|
|
11
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
12
|
+
const env = require("../../../environment")
|
|
12
13
|
const { cleanupAttachments } = require("../../../utilities/rowProcessor")
|
|
13
14
|
const { runStaticFormulaChecks } = require("./bulkFormula")
|
|
14
15
|
|
|
15
16
|
exports.save = async function (ctx) {
|
|
16
|
-
const
|
|
17
|
-
const db = new CouchDB(appId)
|
|
17
|
+
const db = getAppDB()
|
|
18
18
|
const { dataImport, ...rest } = ctx.request.body
|
|
19
19
|
let tableToSave = {
|
|
20
20
|
type: "table",
|
|
@@ -36,8 +36,7 @@ exports.save = async function (ctx) {
|
|
|
36
36
|
// saving a table is a complex operation, involving many different steps, this
|
|
37
37
|
// has been broken out into a utility to make it more obvious/easier to manipulate
|
|
38
38
|
const tableSaveFunctions = new TableSaveFunctions({
|
|
39
|
-
|
|
40
|
-
ctx,
|
|
39
|
+
user: ctx.user,
|
|
41
40
|
oldTable,
|
|
42
41
|
dataImport,
|
|
43
42
|
})
|
|
@@ -82,7 +81,6 @@ exports.save = async function (ctx) {
|
|
|
82
81
|
// update linked rows
|
|
83
82
|
try {
|
|
84
83
|
const linkResp = await linkRows.updateLinks({
|
|
85
|
-
appId,
|
|
86
84
|
eventType: oldTable
|
|
87
85
|
? linkRows.EventType.TABLE_UPDATED
|
|
88
86
|
: linkRows.EventType.TABLE_SAVE,
|
|
@@ -107,13 +105,12 @@ exports.save = async function (ctx) {
|
|
|
107
105
|
|
|
108
106
|
tableToSave = await tableSaveFunctions.after(tableToSave)
|
|
109
107
|
// has to run after, make sure it has _id
|
|
110
|
-
await runStaticFormulaChecks(
|
|
108
|
+
await runStaticFormulaChecks(tableToSave, { oldTable })
|
|
111
109
|
return tableToSave
|
|
112
110
|
}
|
|
113
111
|
|
|
114
112
|
exports.destroy = async function (ctx) {
|
|
115
|
-
const
|
|
116
|
-
const db = new CouchDB(appId)
|
|
113
|
+
const db = getAppDB()
|
|
117
114
|
const tableToDelete = await db.get(ctx.params.tableId)
|
|
118
115
|
|
|
119
116
|
// Delete all rows for that table
|
|
@@ -127,7 +124,6 @@ exports.destroy = async function (ctx) {
|
|
|
127
124
|
|
|
128
125
|
// update linked rows
|
|
129
126
|
await linkRows.updateLinks({
|
|
130
|
-
appId,
|
|
131
127
|
eventType: linkRows.EventType.TABLE_DELETE,
|
|
132
128
|
table: tableToDelete,
|
|
133
129
|
})
|
|
@@ -136,24 +132,25 @@ exports.destroy = async function (ctx) {
|
|
|
136
132
|
await db.remove(tableToDelete)
|
|
137
133
|
|
|
138
134
|
// remove table search index
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
135
|
+
if (!env.isTest()) {
|
|
136
|
+
const currentIndexes = await db.getIndexes()
|
|
137
|
+
const existingIndex = currentIndexes.indexes.find(
|
|
138
|
+
existing => existing.name === `search:${ctx.params.tableId}`
|
|
139
|
+
)
|
|
140
|
+
if (existingIndex) {
|
|
141
|
+
await db.deleteIndex(existingIndex)
|
|
142
|
+
}
|
|
145
143
|
}
|
|
146
144
|
|
|
147
145
|
// has to run after, make sure it has _id
|
|
148
|
-
await runStaticFormulaChecks(
|
|
149
|
-
await cleanupAttachments(
|
|
146
|
+
await runStaticFormulaChecks(tableToDelete, { deletion: true })
|
|
147
|
+
await cleanupAttachments(tableToDelete, { rows })
|
|
150
148
|
return tableToDelete
|
|
151
149
|
}
|
|
152
150
|
|
|
153
151
|
exports.bulkImport = async function (ctx) {
|
|
154
|
-
const
|
|
155
|
-
const table = await getTable(appId, ctx.params.tableId)
|
|
152
|
+
const table = await getTable(ctx.params.tableId)
|
|
156
153
|
const { dataImport } = ctx.request.body
|
|
157
|
-
await handleDataImport(
|
|
154
|
+
await handleDataImport(ctx.user, table, dataImport)
|
|
158
155
|
return table
|
|
159
156
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
const CouchDB = require("../../../db")
|
|
2
1
|
const csvParser = require("../../../utilities/csvParser")
|
|
3
2
|
const {
|
|
4
3
|
getRowParams,
|
|
@@ -26,10 +25,11 @@ const {
|
|
|
26
25
|
const { getViews, saveView } = require("../view/utils")
|
|
27
26
|
const viewTemplate = require("../view/viewBuilder")
|
|
28
27
|
const usageQuota = require("../../../utilities/usageQuota")
|
|
28
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
29
29
|
const { cloneDeep } = require("lodash/fp")
|
|
30
30
|
|
|
31
|
-
exports.clearColumns = async (
|
|
32
|
-
const db =
|
|
31
|
+
exports.clearColumns = async (table, columnNames) => {
|
|
32
|
+
const db = getAppDB()
|
|
33
33
|
const rows = await db.allDocs(
|
|
34
34
|
getRowParams(table._id, null, {
|
|
35
35
|
include_docs: true,
|
|
@@ -43,7 +43,8 @@ exports.clearColumns = async (appId, table, columnNames) => {
|
|
|
43
43
|
)
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
exports.checkForColumnUpdates = async (
|
|
46
|
+
exports.checkForColumnUpdates = async (oldTable, updatedTable) => {
|
|
47
|
+
const db = getAppDB()
|
|
47
48
|
let updatedRows = []
|
|
48
49
|
const rename = updatedTable._rename
|
|
49
50
|
let deletedColumns = []
|
|
@@ -73,9 +74,9 @@ exports.checkForColumnUpdates = async (appId, db, oldTable, updatedTable) => {
|
|
|
73
74
|
})
|
|
74
75
|
|
|
75
76
|
// cleanup any attachments from object storage for deleted attachment columns
|
|
76
|
-
await cleanupAttachments(
|
|
77
|
+
await cleanupAttachments(updatedTable, { oldTable, rows: rawRows })
|
|
77
78
|
// Update views
|
|
78
|
-
await exports.checkForViewUpdates(
|
|
79
|
+
await exports.checkForViewUpdates(updatedTable, rename, deletedColumns)
|
|
79
80
|
delete updatedTable._rename
|
|
80
81
|
}
|
|
81
82
|
return { rows: updatedRows, table: updatedTable }
|
|
@@ -102,12 +103,12 @@ exports.makeSureTableUpToDate = (table, tableToSave) => {
|
|
|
102
103
|
return tableToSave
|
|
103
104
|
}
|
|
104
105
|
|
|
105
|
-
exports.handleDataImport = async (
|
|
106
|
+
exports.handleDataImport = async (user, table, dataImport) => {
|
|
106
107
|
if (!dataImport || !dataImport.csvString) {
|
|
107
108
|
return table
|
|
108
109
|
}
|
|
109
110
|
|
|
110
|
-
const db =
|
|
111
|
+
const db = getAppDB()
|
|
111
112
|
// Populate the table with rows imported from CSV in a bulk update
|
|
112
113
|
const data = await csvParser.transform({
|
|
113
114
|
...dataImport,
|
|
@@ -152,8 +153,8 @@ exports.handleDataImport = async (appId, user, table, dataImport) => {
|
|
|
152
153
|
return table
|
|
153
154
|
}
|
|
154
155
|
|
|
155
|
-
exports.handleSearchIndexes = async
|
|
156
|
-
const db =
|
|
156
|
+
exports.handleSearchIndexes = async table => {
|
|
157
|
+
const db = getAppDB()
|
|
157
158
|
// create relevant search indexes
|
|
158
159
|
if (table.indexes && table.indexes.length > 0) {
|
|
159
160
|
const currentIndexes = await db.getIndexes()
|
|
@@ -210,12 +211,9 @@ exports.checkStaticTables = table => {
|
|
|
210
211
|
}
|
|
211
212
|
|
|
212
213
|
class TableSaveFunctions {
|
|
213
|
-
constructor({
|
|
214
|
-
this.db =
|
|
215
|
-
this.
|
|
216
|
-
if (this.ctx && this.ctx.user) {
|
|
217
|
-
this.appId = this.ctx.appId
|
|
218
|
-
}
|
|
214
|
+
constructor({ user, oldTable, dataImport }) {
|
|
215
|
+
this.db = getAppDB()
|
|
216
|
+
this.user = user
|
|
219
217
|
this.oldTable = oldTable
|
|
220
218
|
this.dataImport = dataImport
|
|
221
219
|
// any rows that need updated
|
|
@@ -233,25 +231,15 @@ class TableSaveFunctions {
|
|
|
233
231
|
|
|
234
232
|
// when confirmed valid
|
|
235
233
|
async mid(table) {
|
|
236
|
-
let response = await exports.checkForColumnUpdates(
|
|
237
|
-
this.appId,
|
|
238
|
-
this.db,
|
|
239
|
-
this.oldTable,
|
|
240
|
-
table
|
|
241
|
-
)
|
|
234
|
+
let response = await exports.checkForColumnUpdates(this.oldTable, table)
|
|
242
235
|
this.rows = this.rows.concat(response.rows)
|
|
243
236
|
return table
|
|
244
237
|
}
|
|
245
238
|
|
|
246
239
|
// after saving
|
|
247
240
|
async after(table) {
|
|
248
|
-
table = await exports.handleSearchIndexes(
|
|
249
|
-
table = await exports.handleDataImport(
|
|
250
|
-
this.appId,
|
|
251
|
-
this.ctx.user,
|
|
252
|
-
table,
|
|
253
|
-
this.dataImport
|
|
254
|
-
)
|
|
241
|
+
table = await exports.handleSearchIndexes(table)
|
|
242
|
+
table = await exports.handleDataImport(this.user, table, this.dataImport)
|
|
255
243
|
return table
|
|
256
244
|
}
|
|
257
245
|
|
|
@@ -260,8 +248,8 @@ class TableSaveFunctions {
|
|
|
260
248
|
}
|
|
261
249
|
}
|
|
262
250
|
|
|
263
|
-
exports.getAllInternalTables = async
|
|
264
|
-
const db =
|
|
251
|
+
exports.getAllInternalTables = async () => {
|
|
252
|
+
const db = getAppDB()
|
|
265
253
|
const internalTables = await db.allDocs(
|
|
266
254
|
getTableParams(null, {
|
|
267
255
|
include_docs: true,
|
|
@@ -274,8 +262,8 @@ exports.getAllInternalTables = async appId => {
|
|
|
274
262
|
}))
|
|
275
263
|
}
|
|
276
264
|
|
|
277
|
-
exports.getAllExternalTables = async
|
|
278
|
-
const db =
|
|
265
|
+
exports.getAllExternalTables = async datasourceId => {
|
|
266
|
+
const db = getAppDB()
|
|
279
267
|
const datasource = await db.get(datasourceId)
|
|
280
268
|
if (!datasource || !datasource.entities) {
|
|
281
269
|
throw "Datasource is not configured fully."
|
|
@@ -283,25 +271,25 @@ exports.getAllExternalTables = async (appId, datasourceId) => {
|
|
|
283
271
|
return datasource.entities
|
|
284
272
|
}
|
|
285
273
|
|
|
286
|
-
exports.getExternalTable = async (
|
|
287
|
-
const entities = await exports.getAllExternalTables(
|
|
274
|
+
exports.getExternalTable = async (datasourceId, tableName) => {
|
|
275
|
+
const entities = await exports.getAllExternalTables(datasourceId)
|
|
288
276
|
return entities[tableName]
|
|
289
277
|
}
|
|
290
278
|
|
|
291
|
-
exports.getTable = async
|
|
292
|
-
const db =
|
|
279
|
+
exports.getTable = async tableId => {
|
|
280
|
+
const db = getAppDB()
|
|
293
281
|
if (isExternalTable(tableId)) {
|
|
294
282
|
let { datasourceId, tableName } = breakExternalTableId(tableId)
|
|
295
283
|
const datasource = await db.get(datasourceId)
|
|
296
|
-
const table = await exports.getExternalTable(
|
|
284
|
+
const table = await exports.getExternalTable(datasourceId, tableName)
|
|
297
285
|
return { ...table, sql: isSQL(datasource) }
|
|
298
286
|
} else {
|
|
299
287
|
return db.get(tableId)
|
|
300
288
|
}
|
|
301
289
|
}
|
|
302
290
|
|
|
303
|
-
exports.checkForViewUpdates = async (
|
|
304
|
-
const views = await getViews(
|
|
291
|
+
exports.checkForViewUpdates = async (table, rename, deletedColumns) => {
|
|
292
|
+
const views = await getViews()
|
|
305
293
|
const tableViews = views.filter(view => view.meta.tableId === table._id)
|
|
306
294
|
|
|
307
295
|
// Check each table view to see if impacted by this table action
|
|
@@ -363,7 +351,7 @@ exports.checkForViewUpdates = async (db, table, rename, deletedColumns) => {
|
|
|
363
351
|
// Update view if required
|
|
364
352
|
if (needsUpdated) {
|
|
365
353
|
const newViewTemplate = viewTemplate(view.meta)
|
|
366
|
-
await saveView(
|
|
354
|
+
await saveView(null, view.name, newViewTemplate)
|
|
367
355
|
if (!newViewTemplate.meta.schema) {
|
|
368
356
|
newViewTemplate.meta.schema = table.schema
|
|
369
357
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
const CouchDB = require("../../db")
|
|
2
1
|
const {
|
|
3
2
|
generateUserMetadataID,
|
|
4
3
|
getUserMetadataParams,
|
|
@@ -11,12 +10,14 @@ const { isEqual } = require("lodash")
|
|
|
11
10
|
const { BUILTIN_ROLE_IDS } = require("@budibase/backend-core/roles")
|
|
12
11
|
const {
|
|
13
12
|
getDevelopmentAppID,
|
|
14
|
-
|
|
13
|
+
getProdAppIDs,
|
|
14
|
+
dbExists,
|
|
15
15
|
} = require("@budibase/backend-core/db")
|
|
16
|
-
const { doesDatabaseExist } = require("../../utilities")
|
|
17
16
|
const { UserStatus } = require("@budibase/backend-core/constants")
|
|
17
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
18
18
|
|
|
19
|
-
async function rawMetadata(
|
|
19
|
+
async function rawMetadata() {
|
|
20
|
+
const db = getAppDB()
|
|
20
21
|
return (
|
|
21
22
|
await db.allDocs(
|
|
22
23
|
getUserMetadataParams(null, {
|
|
@@ -54,13 +55,10 @@ function combineMetadataAndUser(user, metadata) {
|
|
|
54
55
|
return null
|
|
55
56
|
}
|
|
56
57
|
|
|
57
|
-
exports.syncGlobalUsers = async
|
|
58
|
+
exports.syncGlobalUsers = async () => {
|
|
58
59
|
// sync user metadata
|
|
59
|
-
const db =
|
|
60
|
-
const [users, metadata] = await Promise.all([
|
|
61
|
-
getGlobalUsers(appId),
|
|
62
|
-
rawMetadata(db),
|
|
63
|
-
])
|
|
60
|
+
const db = getAppDB()
|
|
61
|
+
const [users, metadata] = await Promise.all([getGlobalUsers(), rawMetadata()])
|
|
64
62
|
const toWrite = []
|
|
65
63
|
for (let user of users) {
|
|
66
64
|
const combined = await combineMetadataAndUser(user, metadata)
|
|
@@ -94,7 +92,7 @@ exports.syncUser = async function (ctx) {
|
|
|
94
92
|
let prodAppIds
|
|
95
93
|
// if they are a builder then get all production app IDs
|
|
96
94
|
if ((user.builder && user.builder.global) || deleting) {
|
|
97
|
-
prodAppIds = await
|
|
95
|
+
prodAppIds = await getProdAppIDs()
|
|
98
96
|
} else {
|
|
99
97
|
prodAppIds = Object.entries(roles)
|
|
100
98
|
.filter(entry => entry[1] !== BUILTIN_ROLE_IDS.PUBLIC)
|
|
@@ -104,10 +102,10 @@ exports.syncUser = async function (ctx) {
|
|
|
104
102
|
const roleId = roles[prodAppId]
|
|
105
103
|
const devAppId = getDevelopmentAppID(prodAppId)
|
|
106
104
|
for (let appId of [prodAppId, devAppId]) {
|
|
107
|
-
if (!(await
|
|
105
|
+
if (!(await dbExists(appId))) {
|
|
108
106
|
continue
|
|
109
107
|
}
|
|
110
|
-
const db =
|
|
108
|
+
const db = getAppDB()
|
|
111
109
|
const metadataId = generateUserMetadataID(userId)
|
|
112
110
|
let metadata
|
|
113
111
|
try {
|
|
@@ -143,8 +141,8 @@ exports.syncUser = async function (ctx) {
|
|
|
143
141
|
}
|
|
144
142
|
|
|
145
143
|
exports.fetchMetadata = async function (ctx) {
|
|
146
|
-
const database =
|
|
147
|
-
const global = await getGlobalUsers(
|
|
144
|
+
const database = getAppDB()
|
|
145
|
+
const global = await getGlobalUsers()
|
|
148
146
|
const metadata = await rawMetadata(database)
|
|
149
147
|
const users = []
|
|
150
148
|
for (let user of global) {
|
|
@@ -173,8 +171,7 @@ exports.updateSelfMetadata = async function (ctx) {
|
|
|
173
171
|
}
|
|
174
172
|
|
|
175
173
|
exports.updateMetadata = async function (ctx) {
|
|
176
|
-
const
|
|
177
|
-
const db = new CouchDB(appId)
|
|
174
|
+
const db = getAppDB()
|
|
178
175
|
const user = ctx.request.body
|
|
179
176
|
// this isn't applicable to the user
|
|
180
177
|
delete user.roles
|
|
@@ -186,7 +183,7 @@ exports.updateMetadata = async function (ctx) {
|
|
|
186
183
|
}
|
|
187
184
|
|
|
188
185
|
exports.destroyMetadata = async function (ctx) {
|
|
189
|
-
const db =
|
|
186
|
+
const db = getAppDB()
|
|
190
187
|
try {
|
|
191
188
|
const dbUser = await db.get(ctx.params.id)
|
|
192
189
|
await db.remove(dbUser._id, dbUser._rev)
|
|
@@ -209,7 +206,7 @@ exports.setFlag = async function (ctx) {
|
|
|
209
206
|
ctx.throw(400, "Must supply a 'flag' field in request body.")
|
|
210
207
|
}
|
|
211
208
|
const flagDocId = generateUserFlagID(userId)
|
|
212
|
-
const db =
|
|
209
|
+
const db = getAppDB()
|
|
213
210
|
let doc
|
|
214
211
|
try {
|
|
215
212
|
doc = await db.get(flagDocId)
|
|
@@ -224,7 +221,7 @@ exports.setFlag = async function (ctx) {
|
|
|
224
221
|
exports.getFlags = async function (ctx) {
|
|
225
222
|
const userId = ctx.user._id
|
|
226
223
|
const docId = generateUserFlagID(userId)
|
|
227
|
-
const db =
|
|
224
|
+
const db = getAppDB()
|
|
228
225
|
let doc
|
|
229
226
|
try {
|
|
230
227
|
doc = await db.get(docId)
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
const CouchDB = require("../../../db")
|
|
2
1
|
const viewTemplate = require("./viewBuilder")
|
|
3
2
|
const { apiFileReturn } = require("../../../utilities/fileSystem")
|
|
4
3
|
const exporters = require("./exporters")
|
|
@@ -6,14 +5,14 @@ const { saveView, getView, getViews, deleteView } = require("./utils")
|
|
|
6
5
|
const { fetchView } = require("../row")
|
|
7
6
|
const { getTable } = require("../table/utils")
|
|
8
7
|
const { FieldTypes } = require("../../../constants")
|
|
8
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
9
9
|
|
|
10
10
|
exports.fetch = async ctx => {
|
|
11
|
-
|
|
12
|
-
ctx.body = await getViews(db)
|
|
11
|
+
ctx.body = await getViews()
|
|
13
12
|
}
|
|
14
13
|
|
|
15
14
|
exports.save = async ctx => {
|
|
16
|
-
const db =
|
|
15
|
+
const db = getAppDB()
|
|
17
16
|
const { originalName, ...viewToSave } = ctx.request.body
|
|
18
17
|
const view = viewTemplate(viewToSave)
|
|
19
18
|
|
|
@@ -21,7 +20,7 @@ exports.save = async ctx => {
|
|
|
21
20
|
ctx.throw(400, "Cannot create view without a name")
|
|
22
21
|
}
|
|
23
22
|
|
|
24
|
-
await saveView(
|
|
23
|
+
await saveView(originalName, viewToSave.name, view)
|
|
25
24
|
|
|
26
25
|
// add views to table document
|
|
27
26
|
const table = await db.get(ctx.request.body.tableId)
|
|
@@ -42,9 +41,9 @@ exports.save = async ctx => {
|
|
|
42
41
|
}
|
|
43
42
|
|
|
44
43
|
exports.destroy = async ctx => {
|
|
45
|
-
const db =
|
|
44
|
+
const db = getAppDB()
|
|
46
45
|
const viewName = decodeURI(ctx.params.viewName)
|
|
47
|
-
const view = await deleteView(
|
|
46
|
+
const view = await deleteView(viewName)
|
|
48
47
|
const table = await db.get(view.meta.tableId)
|
|
49
48
|
delete table.views[viewName]
|
|
50
49
|
await db.put(table)
|
|
@@ -53,9 +52,8 @@ exports.destroy = async ctx => {
|
|
|
53
52
|
}
|
|
54
53
|
|
|
55
54
|
exports.exportView = async ctx => {
|
|
56
|
-
const db = new CouchDB(ctx.appId)
|
|
57
55
|
const viewName = decodeURI(ctx.query.view)
|
|
58
|
-
const view = await getView(
|
|
56
|
+
const view = await getView(viewName)
|
|
59
57
|
|
|
60
58
|
const format = ctx.query.format
|
|
61
59
|
if (!format || !Object.values(exporters.ExportFormats).includes(format)) {
|
|
@@ -83,7 +81,7 @@ exports.exportView = async ctx => {
|
|
|
83
81
|
let schema = view && view.meta && view.meta.schema
|
|
84
82
|
if (!schema) {
|
|
85
83
|
const tableId = ctx.params.tableId || view.meta.tableId
|
|
86
|
-
const table = await getTable(
|
|
84
|
+
const table = await getTable(tableId)
|
|
87
85
|
schema = table.schema
|
|
88
86
|
}
|
|
89
87
|
|
|
@@ -6,8 +6,10 @@ const {
|
|
|
6
6
|
SEPARATOR,
|
|
7
7
|
} = require("../../../db/utils")
|
|
8
8
|
const env = require("../../../environment")
|
|
9
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
9
10
|
|
|
10
|
-
exports.getView = async
|
|
11
|
+
exports.getView = async viewName => {
|
|
12
|
+
const db = getAppDB()
|
|
11
13
|
if (env.SELF_HOSTED) {
|
|
12
14
|
const designDoc = await db.get("_design/database")
|
|
13
15
|
return designDoc.views[viewName]
|
|
@@ -22,7 +24,8 @@ exports.getView = async (db, viewName) => {
|
|
|
22
24
|
}
|
|
23
25
|
}
|
|
24
26
|
|
|
25
|
-
exports.getViews = async
|
|
27
|
+
exports.getViews = async () => {
|
|
28
|
+
const db = getAppDB()
|
|
26
29
|
const response = []
|
|
27
30
|
if (env.SELF_HOSTED) {
|
|
28
31
|
const designDoc = await db.get("_design/database")
|
|
@@ -54,7 +57,8 @@ exports.getViews = async db => {
|
|
|
54
57
|
return response
|
|
55
58
|
}
|
|
56
59
|
|
|
57
|
-
exports.saveView = async (
|
|
60
|
+
exports.saveView = async (originalName, viewName, viewTemplate) => {
|
|
61
|
+
const db = getAppDB()
|
|
58
62
|
if (env.SELF_HOSTED) {
|
|
59
63
|
const designDoc = await db.get("_design/database")
|
|
60
64
|
designDoc.views = {
|
|
@@ -91,7 +95,8 @@ exports.saveView = async (db, originalName, viewName, viewTemplate) => {
|
|
|
91
95
|
}
|
|
92
96
|
}
|
|
93
97
|
|
|
94
|
-
exports.deleteView = async
|
|
98
|
+
exports.deleteView = async viewName => {
|
|
99
|
+
const db = getAppDB()
|
|
95
100
|
if (env.SELF_HOSTED) {
|
|
96
101
|
const designDoc = await db.get("_design/database")
|
|
97
102
|
const view = designDoc.views[viewName]
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
const CouchDB = require("../../db")
|
|
2
1
|
const { generateWebhookID, getWebhookParams } = require("../../db/utils")
|
|
3
2
|
const toJsonSchema = require("to-json-schema")
|
|
4
3
|
const validate = require("jsonschema").validate
|
|
5
4
|
const triggers = require("../../automations/triggers")
|
|
6
|
-
const {
|
|
5
|
+
const { getProdAppID } = require("@budibase/backend-core/db")
|
|
6
|
+
const { getAppDB, updateAppId } = require("@budibase/backend-core/context")
|
|
7
7
|
|
|
8
8
|
const AUTOMATION_DESCRIPTION = "Generated from Webhook Schema"
|
|
9
9
|
|
|
@@ -23,7 +23,7 @@ exports.WebhookType = {
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
exports.fetch = async ctx => {
|
|
26
|
-
const db =
|
|
26
|
+
const db = getAppDB()
|
|
27
27
|
const response = await db.allDocs(
|
|
28
28
|
getWebhookParams(null, {
|
|
29
29
|
include_docs: true,
|
|
@@ -33,7 +33,7 @@ exports.fetch = async ctx => {
|
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
exports.save = async ctx => {
|
|
36
|
-
const db =
|
|
36
|
+
const db = getAppDB()
|
|
37
37
|
const webhook = ctx.request.body
|
|
38
38
|
webhook.appId = ctx.appId
|
|
39
39
|
|
|
@@ -52,12 +52,13 @@ exports.save = async ctx => {
|
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
exports.destroy = async ctx => {
|
|
55
|
-
const db =
|
|
55
|
+
const db = getAppDB()
|
|
56
56
|
ctx.body = await db.remove(ctx.params.id, ctx.params.rev)
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
exports.buildSchema = async ctx => {
|
|
60
|
-
|
|
60
|
+
updateAppId(ctx.params.instance)
|
|
61
|
+
const db = getAppDB()
|
|
61
62
|
const webhook = await db.get(ctx.params.id)
|
|
62
63
|
webhook.bodySchema = toJsonSchema(ctx.request.body)
|
|
63
64
|
// update the automation outputs
|
|
@@ -81,9 +82,10 @@ exports.buildSchema = async ctx => {
|
|
|
81
82
|
}
|
|
82
83
|
|
|
83
84
|
exports.trigger = async ctx => {
|
|
84
|
-
const prodAppId =
|
|
85
|
+
const prodAppId = getProdAppID(ctx.params.instance)
|
|
86
|
+
updateAppId(prodAppId)
|
|
85
87
|
try {
|
|
86
|
-
const db =
|
|
88
|
+
const db = getAppDB()
|
|
87
89
|
const webhook = await db.get(ctx.params.id)
|
|
88
90
|
// validate against the schema
|
|
89
91
|
if (webhook.bodySchema) {
|
package/src/api/routes/index.js
CHANGED
|
@@ -24,6 +24,7 @@ const backupRoutes = require("./backup")
|
|
|
24
24
|
const metadataRoutes = require("./metadata")
|
|
25
25
|
const devRoutes = require("./dev")
|
|
26
26
|
const cloudRoutes = require("./cloud")
|
|
27
|
+
const migrationRoutes = require("./migrations")
|
|
27
28
|
|
|
28
29
|
exports.mainRoutes = [
|
|
29
30
|
authRoutes,
|
|
@@ -53,6 +54,7 @@ exports.mainRoutes = [
|
|
|
53
54
|
// this could be breaking as koa may recognise other routes as this
|
|
54
55
|
tableRoutes,
|
|
55
56
|
rowRoutes,
|
|
57
|
+
migrationRoutes,
|
|
56
58
|
]
|
|
57
59
|
|
|
58
60
|
exports.staticRoutes = staticRoutes
|