@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
|
@@ -8,7 +8,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
-
const CouchDB = require("../../../db");
|
|
12
11
|
const { buildExternalTableId, breakExternalTableId, } = require("../../../integrations/utils");
|
|
13
12
|
const { getTable, generateForeignKey, generateJunctionTableName, foreignKeyStructure, hasTypeChanged, } = require("./utils");
|
|
14
13
|
const { DataSourceOperation, FieldTypes, RelationshipTypes, } = require("../../../constants");
|
|
@@ -16,6 +15,7 @@ const { makeExternalQuery } = require("../../../integrations/base/utils");
|
|
|
16
15
|
const { cloneDeep } = require("lodash/fp");
|
|
17
16
|
const csvParser = require("../../../utilities/csvParser");
|
|
18
17
|
const { handleRequest } = require("../row/external");
|
|
18
|
+
const { getAppDB } = require("@budibase/backend-core/context");
|
|
19
19
|
function makeTableRequest(datasource, operation, table, tables, oldTable = null) {
|
|
20
20
|
return __awaiter(this, void 0, void 0, function* () {
|
|
21
21
|
const json = {
|
|
@@ -134,7 +134,6 @@ function isRelationshipSetup(column) {
|
|
|
134
134
|
}
|
|
135
135
|
exports.save = function (ctx) {
|
|
136
136
|
return __awaiter(this, void 0, void 0, function* () {
|
|
137
|
-
const appId = ctx.appId;
|
|
138
137
|
const table = ctx.request.body;
|
|
139
138
|
// can't do this right now
|
|
140
139
|
delete table.dataImport;
|
|
@@ -146,12 +145,12 @@ exports.save = function (ctx) {
|
|
|
146
145
|
let tableToSave = Object.assign({ type: "table", _id: buildExternalTableId(datasourceId, table.name) }, table);
|
|
147
146
|
let oldTable;
|
|
148
147
|
if (ctx.request.body && ctx.request.body._id) {
|
|
149
|
-
oldTable = yield getTable(
|
|
148
|
+
oldTable = yield getTable(ctx.request.body._id);
|
|
150
149
|
}
|
|
151
150
|
if (hasTypeChanged(tableToSave, oldTable)) {
|
|
152
151
|
ctx.throw(400, "A column type has changed.");
|
|
153
152
|
}
|
|
154
|
-
const db =
|
|
153
|
+
const db = getAppDB();
|
|
155
154
|
const datasource = yield db.get(datasourceId);
|
|
156
155
|
const oldTables = cloneDeep(datasource.entities);
|
|
157
156
|
const tables = datasource.entities;
|
|
@@ -215,13 +214,12 @@ exports.save = function (ctx) {
|
|
|
215
214
|
};
|
|
216
215
|
exports.destroy = function (ctx) {
|
|
217
216
|
return __awaiter(this, void 0, void 0, function* () {
|
|
218
|
-
const
|
|
219
|
-
const tableToDelete = yield getTable(appId, ctx.params.tableId);
|
|
217
|
+
const tableToDelete = yield getTable(ctx.params.tableId);
|
|
220
218
|
if (!tableToDelete || !tableToDelete.created) {
|
|
221
219
|
ctx.throw(400, "Cannot delete tables which weren't created in Budibase.");
|
|
222
220
|
}
|
|
223
221
|
const datasourceId = getDatasourceId(tableToDelete);
|
|
224
|
-
const db =
|
|
222
|
+
const db = getAppDB();
|
|
225
223
|
const datasource = yield db.get(datasourceId);
|
|
226
224
|
const tables = datasource.entities;
|
|
227
225
|
const operation = DataSourceOperation.DELETE_TABLE;
|
|
@@ -234,14 +232,13 @@ exports.destroy = function (ctx) {
|
|
|
234
232
|
};
|
|
235
233
|
exports.bulkImport = function (ctx) {
|
|
236
234
|
return __awaiter(this, void 0, void 0, function* () {
|
|
237
|
-
const
|
|
238
|
-
const table = yield getTable(appId, ctx.params.tableId);
|
|
235
|
+
const table = yield getTable(ctx.params.tableId);
|
|
239
236
|
const { dataImport } = ctx.request.body;
|
|
240
237
|
if (!dataImport || !dataImport.schema || !dataImport.csvString) {
|
|
241
238
|
ctx.throw(400, "Provided data import information is invalid.");
|
|
242
239
|
}
|
|
243
240
|
const rows = yield csvParser.transform(Object.assign(Object.assign({}, dataImport), { existingTable: table }));
|
|
244
|
-
yield handleRequest(
|
|
241
|
+
yield handleRequest(DataSourceOperation.BULK_CREATE, table._id, {
|
|
245
242
|
rows,
|
|
246
243
|
});
|
|
247
244
|
return table;
|
|
@@ -8,12 +8,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
-
const CouchDB = require("../../../db");
|
|
12
11
|
const internal = require("./internal");
|
|
13
12
|
const external = require("./external");
|
|
14
13
|
const csvParser = require("../../../utilities/csvParser");
|
|
15
14
|
const { isExternalTable, isSQL } = require("../../../integrations/utils");
|
|
16
15
|
const { getDatasourceParams } = require("../../../db/utils");
|
|
16
|
+
const { getAppDB } = require("@budibase/backend-core/context");
|
|
17
17
|
const { getTable, getAllInternalTables } = require("./utils");
|
|
18
18
|
function pickApi({ tableId, table }) {
|
|
19
19
|
if (table && !tableId) {
|
|
@@ -30,8 +30,8 @@ function pickApi({ tableId, table }) {
|
|
|
30
30
|
// covers both internal and external
|
|
31
31
|
exports.fetch = function (ctx) {
|
|
32
32
|
return __awaiter(this, void 0, void 0, function* () {
|
|
33
|
-
const db =
|
|
34
|
-
const internal = yield getAllInternalTables(
|
|
33
|
+
const db = getAppDB();
|
|
34
|
+
const internal = yield getAllInternalTables();
|
|
35
35
|
const externalTables = yield db.allDocs(getDatasourceParams("plus", {
|
|
36
36
|
include_docs: true,
|
|
37
37
|
}));
|
|
@@ -50,7 +50,7 @@ exports.fetch = function (ctx) {
|
|
|
50
50
|
exports.find = function (ctx) {
|
|
51
51
|
return __awaiter(this, void 0, void 0, function* () {
|
|
52
52
|
const tableId = ctx.params.id;
|
|
53
|
-
ctx.body = yield getTable(
|
|
53
|
+
ctx.body = yield getTable(tableId);
|
|
54
54
|
});
|
|
55
55
|
};
|
|
56
56
|
exports.save = function (ctx) {
|
|
@@ -93,7 +93,7 @@ exports.validateCSVSchema = function (ctx) {
|
|
|
93
93
|
const { csvString, schema = {}, tableId } = ctx.request.body;
|
|
94
94
|
let existingTable;
|
|
95
95
|
if (tableId) {
|
|
96
|
-
existingTable = yield getTable(
|
|
96
|
+
existingTable = yield getTable(tableId);
|
|
97
97
|
}
|
|
98
98
|
let result = yield csvParser.parse(csvString, schema);
|
|
99
99
|
if (existingTable) {
|
|
@@ -19,18 +19,18 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
19
19
|
}
|
|
20
20
|
return t;
|
|
21
21
|
};
|
|
22
|
-
const CouchDB = require("../../../db");
|
|
23
22
|
const linkRows = require("../../../db/linkedRows");
|
|
24
23
|
const { getRowParams, generateTableID } = require("../../../db/utils");
|
|
25
24
|
const { FieldTypes } = require("../../../constants");
|
|
26
25
|
const { TableSaveFunctions, hasTypeChanged, getTable, handleDataImport, } = require("./utils");
|
|
27
26
|
const usageQuota = require("../../../utilities/usageQuota");
|
|
27
|
+
const { getAppDB } = require("@budibase/backend-core/context");
|
|
28
|
+
const env = require("../../../environment");
|
|
28
29
|
const { cleanupAttachments } = require("../../../utilities/rowProcessor");
|
|
29
30
|
const { runStaticFormulaChecks } = require("./bulkFormula");
|
|
30
31
|
exports.save = function (ctx) {
|
|
31
32
|
return __awaiter(this, void 0, void 0, function* () {
|
|
32
|
-
const
|
|
33
|
-
const db = new CouchDB(appId);
|
|
33
|
+
const db = getAppDB();
|
|
34
34
|
const _a = ctx.request.body, { dataImport } = _a, rest = __rest(_a, ["dataImport"]);
|
|
35
35
|
let tableToSave = Object.assign({ type: "table", _id: generateTableID(), views: {} }, rest);
|
|
36
36
|
// if the table obj had an _id then it will have been retrieved
|
|
@@ -44,8 +44,7 @@ exports.save = function (ctx) {
|
|
|
44
44
|
// saving a table is a complex operation, involving many different steps, this
|
|
45
45
|
// has been broken out into a utility to make it more obvious/easier to manipulate
|
|
46
46
|
const tableSaveFunctions = new TableSaveFunctions({
|
|
47
|
-
|
|
48
|
-
ctx,
|
|
47
|
+
user: ctx.user,
|
|
49
48
|
oldTable,
|
|
50
49
|
dataImport,
|
|
51
50
|
});
|
|
@@ -85,7 +84,6 @@ exports.save = function (ctx) {
|
|
|
85
84
|
// update linked rows
|
|
86
85
|
try {
|
|
87
86
|
const linkResp = yield linkRows.updateLinks({
|
|
88
|
-
appId,
|
|
89
87
|
eventType: oldTable
|
|
90
88
|
? linkRows.EventType.TABLE_UPDATED
|
|
91
89
|
: linkRows.EventType.TABLE_SAVE,
|
|
@@ -109,14 +107,13 @@ exports.save = function (ctx) {
|
|
|
109
107
|
tableToSave._rev = result.rev;
|
|
110
108
|
tableToSave = yield tableSaveFunctions.after(tableToSave);
|
|
111
109
|
// has to run after, make sure it has _id
|
|
112
|
-
yield runStaticFormulaChecks(
|
|
110
|
+
yield runStaticFormulaChecks(tableToSave, { oldTable });
|
|
113
111
|
return tableToSave;
|
|
114
112
|
});
|
|
115
113
|
};
|
|
116
114
|
exports.destroy = function (ctx) {
|
|
117
115
|
return __awaiter(this, void 0, void 0, function* () {
|
|
118
|
-
const
|
|
119
|
-
const db = new CouchDB(appId);
|
|
116
|
+
const db = getAppDB();
|
|
120
117
|
const tableToDelete = yield db.get(ctx.params.tableId);
|
|
121
118
|
// Delete all rows for that table
|
|
122
119
|
const rows = yield db.allDocs(getRowParams(ctx.params.tableId, null, {
|
|
@@ -126,30 +123,30 @@ exports.destroy = function (ctx) {
|
|
|
126
123
|
yield usageQuota.update(usageQuota.Properties.ROW, -rows.rows.length);
|
|
127
124
|
// update linked rows
|
|
128
125
|
yield linkRows.updateLinks({
|
|
129
|
-
appId,
|
|
130
126
|
eventType: linkRows.EventType.TABLE_DELETE,
|
|
131
127
|
table: tableToDelete,
|
|
132
128
|
});
|
|
133
129
|
// don't remove the table itself until very end
|
|
134
130
|
yield db.remove(tableToDelete);
|
|
135
131
|
// remove table search index
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
132
|
+
if (!env.isTest()) {
|
|
133
|
+
const currentIndexes = yield db.getIndexes();
|
|
134
|
+
const existingIndex = currentIndexes.indexes.find(existing => existing.name === `search:${ctx.params.tableId}`);
|
|
135
|
+
if (existingIndex) {
|
|
136
|
+
yield db.deleteIndex(existingIndex);
|
|
137
|
+
}
|
|
140
138
|
}
|
|
141
139
|
// has to run after, make sure it has _id
|
|
142
|
-
yield runStaticFormulaChecks(
|
|
143
|
-
yield cleanupAttachments(
|
|
140
|
+
yield runStaticFormulaChecks(tableToDelete, { deletion: true });
|
|
141
|
+
yield cleanupAttachments(tableToDelete, { rows });
|
|
144
142
|
return tableToDelete;
|
|
145
143
|
});
|
|
146
144
|
};
|
|
147
145
|
exports.bulkImport = function (ctx) {
|
|
148
146
|
return __awaiter(this, void 0, void 0, function* () {
|
|
149
|
-
const
|
|
150
|
-
const table = yield getTable(appId, ctx.params.tableId);
|
|
147
|
+
const table = yield getTable(ctx.params.tableId);
|
|
151
148
|
const { dataImport } = ctx.request.body;
|
|
152
|
-
yield handleDataImport(
|
|
149
|
+
yield handleDataImport(ctx.user, table, dataImport);
|
|
153
150
|
return table;
|
|
154
151
|
});
|
|
155
152
|
};
|
|
@@ -8,7 +8,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
-
const CouchDB = require("../../../db");
|
|
12
11
|
const csvParser = require("../../../utilities/csvParser");
|
|
13
12
|
const { getRowParams, generateRowID, InternalTables, getTableParams, BudibaseInternalDB, } = require("../../../db/utils");
|
|
14
13
|
const { isEqual } = require("lodash");
|
|
@@ -19,9 +18,10 @@ const { isExternalTable, breakExternalTableId, isSQL, } = require("../../../inte
|
|
|
19
18
|
const { getViews, saveView } = require("../view/utils");
|
|
20
19
|
const viewTemplate = require("../view/viewBuilder");
|
|
21
20
|
const usageQuota = require("../../../utilities/usageQuota");
|
|
21
|
+
const { getAppDB } = require("@budibase/backend-core/context");
|
|
22
22
|
const { cloneDeep } = require("lodash/fp");
|
|
23
|
-
exports.clearColumns = (
|
|
24
|
-
const db =
|
|
23
|
+
exports.clearColumns = (table, columnNames) => __awaiter(void 0, void 0, void 0, function* () {
|
|
24
|
+
const db = getAppDB();
|
|
25
25
|
const rows = yield db.allDocs(getRowParams(table._id, null, {
|
|
26
26
|
include_docs: true,
|
|
27
27
|
}));
|
|
@@ -30,7 +30,8 @@ exports.clearColumns = (appId, table, columnNames) => __awaiter(void 0, void 0,
|
|
|
30
30
|
return doc;
|
|
31
31
|
}));
|
|
32
32
|
});
|
|
33
|
-
exports.checkForColumnUpdates = (
|
|
33
|
+
exports.checkForColumnUpdates = (oldTable, updatedTable) => __awaiter(void 0, void 0, void 0, function* () {
|
|
34
|
+
const db = getAppDB();
|
|
34
35
|
let updatedRows = [];
|
|
35
36
|
const rename = updatedTable._rename;
|
|
36
37
|
let deletedColumns = [];
|
|
@@ -56,9 +57,9 @@ exports.checkForColumnUpdates = (appId, db, oldTable, updatedTable) => __awaiter
|
|
|
56
57
|
return row;
|
|
57
58
|
});
|
|
58
59
|
// cleanup any attachments from object storage for deleted attachment columns
|
|
59
|
-
yield cleanupAttachments(
|
|
60
|
+
yield cleanupAttachments(updatedTable, { oldTable, rows: rawRows });
|
|
60
61
|
// Update views
|
|
61
|
-
yield exports.checkForViewUpdates(
|
|
62
|
+
yield exports.checkForViewUpdates(updatedTable, rename, deletedColumns);
|
|
62
63
|
delete updatedTable._rename;
|
|
63
64
|
}
|
|
64
65
|
return { rows: updatedRows, table: updatedTable };
|
|
@@ -81,11 +82,11 @@ exports.makeSureTableUpToDate = (table, tableToSave) => {
|
|
|
81
82
|
}
|
|
82
83
|
return tableToSave;
|
|
83
84
|
};
|
|
84
|
-
exports.handleDataImport = (
|
|
85
|
+
exports.handleDataImport = (user, table, dataImport) => __awaiter(void 0, void 0, void 0, function* () {
|
|
85
86
|
if (!dataImport || !dataImport.csvString) {
|
|
86
87
|
return table;
|
|
87
88
|
}
|
|
88
|
-
const db =
|
|
89
|
+
const db = getAppDB();
|
|
89
90
|
// Populate the table with rows imported from CSV in a bulk update
|
|
90
91
|
const data = yield csvParser.transform(Object.assign(Object.assign({}, dataImport), { existingTable: table }));
|
|
91
92
|
let finalData = [];
|
|
@@ -120,8 +121,8 @@ exports.handleDataImport = (appId, user, table, dataImport) => __awaiter(void 0,
|
|
|
120
121
|
table._rev = response._rev;
|
|
121
122
|
return table;
|
|
122
123
|
});
|
|
123
|
-
exports.handleSearchIndexes = (
|
|
124
|
-
const db =
|
|
124
|
+
exports.handleSearchIndexes = (table) => __awaiter(void 0, void 0, void 0, function* () {
|
|
125
|
+
const db = getAppDB();
|
|
125
126
|
// create relevant search indexes
|
|
126
127
|
if (table.indexes && table.indexes.length > 0) {
|
|
127
128
|
const currentIndexes = yield db.getIndexes();
|
|
@@ -170,12 +171,9 @@ exports.checkStaticTables = table => {
|
|
|
170
171
|
return table;
|
|
171
172
|
};
|
|
172
173
|
class TableSaveFunctions {
|
|
173
|
-
constructor({
|
|
174
|
-
this.db =
|
|
175
|
-
this.
|
|
176
|
-
if (this.ctx && this.ctx.user) {
|
|
177
|
-
this.appId = this.ctx.appId;
|
|
178
|
-
}
|
|
174
|
+
constructor({ user, oldTable, dataImport }) {
|
|
175
|
+
this.db = getAppDB();
|
|
176
|
+
this.user = user;
|
|
179
177
|
this.oldTable = oldTable;
|
|
180
178
|
this.dataImport = dataImport;
|
|
181
179
|
// any rows that need updated
|
|
@@ -194,7 +192,7 @@ class TableSaveFunctions {
|
|
|
194
192
|
// when confirmed valid
|
|
195
193
|
mid(table) {
|
|
196
194
|
return __awaiter(this, void 0, void 0, function* () {
|
|
197
|
-
let response = yield exports.checkForColumnUpdates(this.
|
|
195
|
+
let response = yield exports.checkForColumnUpdates(this.oldTable, table);
|
|
198
196
|
this.rows = this.rows.concat(response.rows);
|
|
199
197
|
return table;
|
|
200
198
|
});
|
|
@@ -202,8 +200,8 @@ class TableSaveFunctions {
|
|
|
202
200
|
// after saving
|
|
203
201
|
after(table) {
|
|
204
202
|
return __awaiter(this, void 0, void 0, function* () {
|
|
205
|
-
table = yield exports.handleSearchIndexes(
|
|
206
|
-
table = yield exports.handleDataImport(this.
|
|
203
|
+
table = yield exports.handleSearchIndexes(table);
|
|
204
|
+
table = yield exports.handleDataImport(this.user, table, this.dataImport);
|
|
207
205
|
return table;
|
|
208
206
|
});
|
|
209
207
|
}
|
|
@@ -211,39 +209,39 @@ class TableSaveFunctions {
|
|
|
211
209
|
return this.rows;
|
|
212
210
|
}
|
|
213
211
|
}
|
|
214
|
-
exports.getAllInternalTables = (
|
|
215
|
-
const db =
|
|
212
|
+
exports.getAllInternalTables = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
213
|
+
const db = getAppDB();
|
|
216
214
|
const internalTables = yield db.allDocs(getTableParams(null, {
|
|
217
215
|
include_docs: true,
|
|
218
216
|
}));
|
|
219
217
|
return internalTables.rows.map(tableDoc => (Object.assign(Object.assign({}, tableDoc.doc), { type: "internal", sourceId: BudibaseInternalDB._id })));
|
|
220
218
|
});
|
|
221
|
-
exports.getAllExternalTables = (
|
|
222
|
-
const db =
|
|
219
|
+
exports.getAllExternalTables = (datasourceId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
220
|
+
const db = getAppDB();
|
|
223
221
|
const datasource = yield db.get(datasourceId);
|
|
224
222
|
if (!datasource || !datasource.entities) {
|
|
225
223
|
throw "Datasource is not configured fully.";
|
|
226
224
|
}
|
|
227
225
|
return datasource.entities;
|
|
228
226
|
});
|
|
229
|
-
exports.getExternalTable = (
|
|
230
|
-
const entities = yield exports.getAllExternalTables(
|
|
227
|
+
exports.getExternalTable = (datasourceId, tableName) => __awaiter(void 0, void 0, void 0, function* () {
|
|
228
|
+
const entities = yield exports.getAllExternalTables(datasourceId);
|
|
231
229
|
return entities[tableName];
|
|
232
230
|
});
|
|
233
|
-
exports.getTable = (
|
|
234
|
-
const db =
|
|
231
|
+
exports.getTable = (tableId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
232
|
+
const db = getAppDB();
|
|
235
233
|
if (isExternalTable(tableId)) {
|
|
236
234
|
let { datasourceId, tableName } = breakExternalTableId(tableId);
|
|
237
235
|
const datasource = yield db.get(datasourceId);
|
|
238
|
-
const table = yield exports.getExternalTable(
|
|
236
|
+
const table = yield exports.getExternalTable(datasourceId, tableName);
|
|
239
237
|
return Object.assign(Object.assign({}, table), { sql: isSQL(datasource) });
|
|
240
238
|
}
|
|
241
239
|
else {
|
|
242
240
|
return db.get(tableId);
|
|
243
241
|
}
|
|
244
242
|
});
|
|
245
|
-
exports.checkForViewUpdates = (
|
|
246
|
-
const views = yield getViews(
|
|
243
|
+
exports.checkForViewUpdates = (table, rename, deletedColumns) => __awaiter(void 0, void 0, void 0, function* () {
|
|
244
|
+
const views = yield getViews();
|
|
247
245
|
const tableViews = views.filter(view => view.meta.tableId === table._id);
|
|
248
246
|
// Check each table view to see if impacted by this table action
|
|
249
247
|
for (let view of tableViews) {
|
|
@@ -299,7 +297,7 @@ exports.checkForViewUpdates = (db, table, rename, deletedColumns) => __awaiter(v
|
|
|
299
297
|
// Update view if required
|
|
300
298
|
if (needsUpdated) {
|
|
301
299
|
const newViewTemplate = viewTemplate(view.meta);
|
|
302
|
-
yield saveView(
|
|
300
|
+
yield saveView(null, view.name, newViewTemplate);
|
|
303
301
|
if (!newViewTemplate.meta.schema) {
|
|
304
302
|
newViewTemplate.meta.schema = table.schema;
|
|
305
303
|
}
|
|
@@ -8,18 +8,18 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
-
const CouchDB = require("../../db");
|
|
12
11
|
const { generateUserMetadataID, getUserMetadataParams, generateUserFlagID, } = require("../../db/utils");
|
|
13
12
|
const { InternalTables } = require("../../db/utils");
|
|
14
13
|
const { getGlobalUsers, getRawGlobalUser } = require("../../utilities/global");
|
|
15
14
|
const { getFullUser } = require("../../utilities/users");
|
|
16
15
|
const { isEqual } = require("lodash");
|
|
17
16
|
const { BUILTIN_ROLE_IDS } = require("@budibase/backend-core/roles");
|
|
18
|
-
const { getDevelopmentAppID,
|
|
19
|
-
const { doesDatabaseExist } = require("../../utilities");
|
|
17
|
+
const { getDevelopmentAppID, getProdAppIDs, dbExists, } = require("@budibase/backend-core/db");
|
|
20
18
|
const { UserStatus } = require("@budibase/backend-core/constants");
|
|
21
|
-
|
|
19
|
+
const { getAppDB } = require("@budibase/backend-core/context");
|
|
20
|
+
function rawMetadata() {
|
|
22
21
|
return __awaiter(this, void 0, void 0, function* () {
|
|
22
|
+
const db = getAppDB();
|
|
23
23
|
return (yield db.allDocs(getUserMetadataParams(null, {
|
|
24
24
|
include_docs: true,
|
|
25
25
|
}))).rows.map(row => row.doc);
|
|
@@ -45,13 +45,10 @@ function combineMetadataAndUser(user, metadata) {
|
|
|
45
45
|
}
|
|
46
46
|
return null;
|
|
47
47
|
}
|
|
48
|
-
exports.syncGlobalUsers = (
|
|
48
|
+
exports.syncGlobalUsers = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
49
49
|
// sync user metadata
|
|
50
|
-
const db =
|
|
51
|
-
const [users, metadata] = yield Promise.all([
|
|
52
|
-
getGlobalUsers(appId),
|
|
53
|
-
rawMetadata(db),
|
|
54
|
-
]);
|
|
50
|
+
const db = getAppDB();
|
|
51
|
+
const [users, metadata] = yield Promise.all([getGlobalUsers(), rawMetadata()]);
|
|
55
52
|
const toWrite = [];
|
|
56
53
|
for (let user of users) {
|
|
57
54
|
const combined = yield combineMetadataAndUser(user, metadata);
|
|
@@ -86,7 +83,7 @@ exports.syncUser = function (ctx) {
|
|
|
86
83
|
let prodAppIds;
|
|
87
84
|
// if they are a builder then get all production app IDs
|
|
88
85
|
if ((user.builder && user.builder.global) || deleting) {
|
|
89
|
-
prodAppIds = yield
|
|
86
|
+
prodAppIds = yield getProdAppIDs();
|
|
90
87
|
}
|
|
91
88
|
else {
|
|
92
89
|
prodAppIds = Object.entries(roles)
|
|
@@ -97,10 +94,10 @@ exports.syncUser = function (ctx) {
|
|
|
97
94
|
const roleId = roles[prodAppId];
|
|
98
95
|
const devAppId = getDevelopmentAppID(prodAppId);
|
|
99
96
|
for (let appId of [prodAppId, devAppId]) {
|
|
100
|
-
if (!(yield
|
|
97
|
+
if (!(yield dbExists(appId))) {
|
|
101
98
|
continue;
|
|
102
99
|
}
|
|
103
|
-
const db =
|
|
100
|
+
const db = getAppDB();
|
|
104
101
|
const metadataId = generateUserMetadataID(userId);
|
|
105
102
|
let metadata;
|
|
106
103
|
try {
|
|
@@ -134,8 +131,8 @@ exports.syncUser = function (ctx) {
|
|
|
134
131
|
};
|
|
135
132
|
exports.fetchMetadata = function (ctx) {
|
|
136
133
|
return __awaiter(this, void 0, void 0, function* () {
|
|
137
|
-
const database =
|
|
138
|
-
const global = yield getGlobalUsers(
|
|
134
|
+
const database = getAppDB();
|
|
135
|
+
const global = yield getGlobalUsers();
|
|
139
136
|
const metadata = yield rawMetadata(database);
|
|
140
137
|
const users = [];
|
|
141
138
|
for (let user of global) {
|
|
@@ -162,8 +159,7 @@ exports.updateSelfMetadata = function (ctx) {
|
|
|
162
159
|
};
|
|
163
160
|
exports.updateMetadata = function (ctx) {
|
|
164
161
|
return __awaiter(this, void 0, void 0, function* () {
|
|
165
|
-
const
|
|
166
|
-
const db = new CouchDB(appId);
|
|
162
|
+
const db = getAppDB();
|
|
167
163
|
const user = ctx.request.body;
|
|
168
164
|
// this isn't applicable to the user
|
|
169
165
|
delete user.roles;
|
|
@@ -173,7 +169,7 @@ exports.updateMetadata = function (ctx) {
|
|
|
173
169
|
};
|
|
174
170
|
exports.destroyMetadata = function (ctx) {
|
|
175
171
|
return __awaiter(this, void 0, void 0, function* () {
|
|
176
|
-
const db =
|
|
172
|
+
const db = getAppDB();
|
|
177
173
|
try {
|
|
178
174
|
const dbUser = yield db.get(ctx.params.id);
|
|
179
175
|
yield db.remove(dbUser._id, dbUser._rev);
|
|
@@ -199,7 +195,7 @@ exports.setFlag = function (ctx) {
|
|
|
199
195
|
ctx.throw(400, "Must supply a 'flag' field in request body.");
|
|
200
196
|
}
|
|
201
197
|
const flagDocId = generateUserFlagID(userId);
|
|
202
|
-
const db =
|
|
198
|
+
const db = getAppDB();
|
|
203
199
|
let doc;
|
|
204
200
|
try {
|
|
205
201
|
doc = yield db.get(flagDocId);
|
|
@@ -216,7 +212,7 @@ exports.getFlags = function (ctx) {
|
|
|
216
212
|
return __awaiter(this, void 0, void 0, function* () {
|
|
217
213
|
const userId = ctx.user._id;
|
|
218
214
|
const docId = generateUserFlagID(userId);
|
|
219
|
-
const db =
|
|
215
|
+
const db = getAppDB();
|
|
220
216
|
let doc;
|
|
221
217
|
try {
|
|
222
218
|
doc = yield db.get(docId);
|
|
@@ -19,7 +19,6 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
19
19
|
}
|
|
20
20
|
return t;
|
|
21
21
|
};
|
|
22
|
-
const CouchDB = require("../../../db");
|
|
23
22
|
const viewTemplate = require("./viewBuilder");
|
|
24
23
|
const { apiFileReturn } = require("../../../utilities/fileSystem");
|
|
25
24
|
const exporters = require("./exporters");
|
|
@@ -27,18 +26,18 @@ const { saveView, getView, getViews, deleteView } = require("./utils");
|
|
|
27
26
|
const { fetchView } = require("../row");
|
|
28
27
|
const { getTable } = require("../table/utils");
|
|
29
28
|
const { FieldTypes } = require("../../../constants");
|
|
29
|
+
const { getAppDB } = require("@budibase/backend-core/context");
|
|
30
30
|
exports.fetch = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
|
|
31
|
-
|
|
32
|
-
ctx.body = yield getViews(db);
|
|
31
|
+
ctx.body = yield getViews();
|
|
33
32
|
});
|
|
34
33
|
exports.save = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
|
|
35
|
-
const db =
|
|
34
|
+
const db = getAppDB();
|
|
36
35
|
const _a = ctx.request.body, { originalName } = _a, viewToSave = __rest(_a, ["originalName"]);
|
|
37
36
|
const view = viewTemplate(viewToSave);
|
|
38
37
|
if (!viewToSave.name) {
|
|
39
38
|
ctx.throw(400, "Cannot create view without a name");
|
|
40
39
|
}
|
|
41
|
-
yield saveView(
|
|
40
|
+
yield saveView(originalName, viewToSave.name, view);
|
|
42
41
|
// add views to table document
|
|
43
42
|
const table = yield db.get(ctx.request.body.tableId);
|
|
44
43
|
if (!table.views)
|
|
@@ -54,18 +53,17 @@ exports.save = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
54
53
|
ctx.body = Object.assign(Object.assign({}, table.views[viewToSave.name]), { name: viewToSave.name });
|
|
55
54
|
});
|
|
56
55
|
exports.destroy = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
|
|
57
|
-
const db =
|
|
56
|
+
const db = getAppDB();
|
|
58
57
|
const viewName = decodeURI(ctx.params.viewName);
|
|
59
|
-
const view = yield deleteView(
|
|
58
|
+
const view = yield deleteView(viewName);
|
|
60
59
|
const table = yield db.get(view.meta.tableId);
|
|
61
60
|
delete table.views[viewName];
|
|
62
61
|
yield db.put(table);
|
|
63
62
|
ctx.body = view;
|
|
64
63
|
});
|
|
65
64
|
exports.exportView = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
|
|
66
|
-
const db = new CouchDB(ctx.appId);
|
|
67
65
|
const viewName = decodeURI(ctx.query.view);
|
|
68
|
-
const view = yield getView(
|
|
66
|
+
const view = yield getView(viewName);
|
|
69
67
|
const format = ctx.query.format;
|
|
70
68
|
if (!format || !Object.values(exporters.ExportFormats).includes(format)) {
|
|
71
69
|
ctx.throw(400, "Format must be specified, either csv or json");
|
|
@@ -90,7 +88,7 @@ exports.exportView = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
90
88
|
let schema = view && view.meta && view.meta.schema;
|
|
91
89
|
if (!schema) {
|
|
92
90
|
const tableId = ctx.params.tableId || view.meta.tableId;
|
|
93
|
-
const table = yield getTable(
|
|
91
|
+
const table = yield getTable(tableId);
|
|
94
92
|
schema = table.schema;
|
|
95
93
|
}
|
|
96
94
|
// remove any relationships
|
|
@@ -10,7 +10,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
const { ViewNames, generateMemoryViewID, getMemoryViewParams, DocumentTypes, SEPARATOR, } = require("../../../db/utils");
|
|
12
12
|
const env = require("../../../environment");
|
|
13
|
-
|
|
13
|
+
const { getAppDB } = require("@budibase/backend-core/context");
|
|
14
|
+
exports.getView = (viewName) => __awaiter(void 0, void 0, void 0, function* () {
|
|
15
|
+
const db = getAppDB();
|
|
14
16
|
if (env.SELF_HOSTED) {
|
|
15
17
|
const designDoc = yield db.get("_design/database");
|
|
16
18
|
return designDoc.views[viewName];
|
|
@@ -24,7 +26,8 @@ exports.getView = (db, viewName) => __awaiter(void 0, void 0, void 0, function*
|
|
|
24
26
|
return viewDoc.view;
|
|
25
27
|
}
|
|
26
28
|
});
|
|
27
|
-
exports.getViews = (
|
|
29
|
+
exports.getViews = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
30
|
+
const db = getAppDB();
|
|
28
31
|
const response = [];
|
|
29
32
|
if (env.SELF_HOSTED) {
|
|
30
33
|
const designDoc = yield db.get("_design/database");
|
|
@@ -46,7 +49,8 @@ exports.getViews = (db) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
46
49
|
}
|
|
47
50
|
return response;
|
|
48
51
|
});
|
|
49
|
-
exports.saveView = (
|
|
52
|
+
exports.saveView = (originalName, viewName, viewTemplate) => __awaiter(void 0, void 0, void 0, function* () {
|
|
53
|
+
const db = getAppDB();
|
|
50
54
|
if (env.SELF_HOSTED) {
|
|
51
55
|
const designDoc = yield db.get("_design/database");
|
|
52
56
|
designDoc.views = Object.assign(Object.assign({}, designDoc.views), { [viewName]: viewTemplate });
|
|
@@ -81,7 +85,8 @@ exports.saveView = (db, originalName, viewName, viewTemplate) => __awaiter(void
|
|
|
81
85
|
yield db.put(viewDoc);
|
|
82
86
|
}
|
|
83
87
|
});
|
|
84
|
-
exports.deleteView = (
|
|
88
|
+
exports.deleteView = (viewName) => __awaiter(void 0, void 0, void 0, function* () {
|
|
89
|
+
const db = getAppDB();
|
|
85
90
|
if (env.SELF_HOSTED) {
|
|
86
91
|
const designDoc = yield db.get("_design/database");
|
|
87
92
|
const view = designDoc.views[viewName];
|
|
@@ -8,12 +8,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
-
const CouchDB = require("../../db");
|
|
12
11
|
const { generateWebhookID, getWebhookParams } = require("../../db/utils");
|
|
13
12
|
const toJsonSchema = require("to-json-schema");
|
|
14
13
|
const validate = require("jsonschema").validate;
|
|
15
14
|
const triggers = require("../../automations/triggers");
|
|
16
|
-
const {
|
|
15
|
+
const { getProdAppID } = require("@budibase/backend-core/db");
|
|
16
|
+
const { getAppDB, updateAppId } = require("@budibase/backend-core/context");
|
|
17
17
|
const AUTOMATION_DESCRIPTION = "Generated from Webhook Schema";
|
|
18
18
|
function Webhook(name, type, target) {
|
|
19
19
|
this.live = true;
|
|
@@ -28,14 +28,14 @@ exports.WebhookType = {
|
|
|
28
28
|
AUTOMATION: "automation",
|
|
29
29
|
};
|
|
30
30
|
exports.fetch = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
|
|
31
|
-
const db =
|
|
31
|
+
const db = getAppDB();
|
|
32
32
|
const response = yield db.allDocs(getWebhookParams(null, {
|
|
33
33
|
include_docs: true,
|
|
34
34
|
}));
|
|
35
35
|
ctx.body = response.rows.map(row => row.doc);
|
|
36
36
|
});
|
|
37
37
|
exports.save = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
|
|
38
|
-
const db =
|
|
38
|
+
const db = getAppDB();
|
|
39
39
|
const webhook = ctx.request.body;
|
|
40
40
|
webhook.appId = ctx.appId;
|
|
41
41
|
// check that the webhook exists
|
|
@@ -53,11 +53,12 @@ exports.save = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
53
53
|
};
|
|
54
54
|
});
|
|
55
55
|
exports.destroy = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
|
|
56
|
-
const db =
|
|
56
|
+
const db = getAppDB();
|
|
57
57
|
ctx.body = yield db.remove(ctx.params.id, ctx.params.rev);
|
|
58
58
|
});
|
|
59
59
|
exports.buildSchema = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
|
|
60
|
-
|
|
60
|
+
updateAppId(ctx.params.instance);
|
|
61
|
+
const db = getAppDB();
|
|
61
62
|
const webhook = yield db.get(ctx.params.id);
|
|
62
63
|
webhook.bodySchema = toJsonSchema(ctx.request.body);
|
|
63
64
|
// update the automation outputs
|
|
@@ -80,9 +81,10 @@ exports.buildSchema = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
80
81
|
ctx.body = yield db.put(webhook);
|
|
81
82
|
});
|
|
82
83
|
exports.trigger = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
|
|
83
|
-
const prodAppId =
|
|
84
|
+
const prodAppId = getProdAppID(ctx.params.instance);
|
|
85
|
+
updateAppId(prodAppId);
|
|
84
86
|
try {
|
|
85
|
-
const db =
|
|
87
|
+
const db = getAppDB();
|
|
86
88
|
const webhook = yield db.get(ctx.params.id);
|
|
87
89
|
// validate against the schema
|
|
88
90
|
if (webhook.bodySchema) {
|
package/dist/api/routes/index.js
CHANGED
|
@@ -25,6 +25,7 @@ const backupRoutes = require("./backup");
|
|
|
25
25
|
const metadataRoutes = require("./metadata");
|
|
26
26
|
const devRoutes = require("./dev");
|
|
27
27
|
const cloudRoutes = require("./cloud");
|
|
28
|
+
const migrationRoutes = require("./migrations");
|
|
28
29
|
exports.mainRoutes = [
|
|
29
30
|
authRoutes,
|
|
30
31
|
deployRoutes,
|
|
@@ -53,5 +54,6 @@ 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
|
exports.staticRoutes = staticRoutes;
|