@budibase/server 2.1.32-alpha.7 → 2.1.32
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__/aws-sdk.ts +0 -14
- package/__mocks__/node-fetch.ts +1 -5
- package/builder/assets/{index.7176fd99.css → index.534f6c29.css} +1 -1
- package/builder/assets/{index.e0fdcf54.js → index.968304ca.js} +316 -316
- package/builder/index.html +2 -2
- package/coverage/clover.xml +3681 -10588
- package/coverage/coverage-final.json +77 -225
- package/coverage/lcov-report/{src/api/controllers/apikeys.ts.html → api/controllers/apikeys.js.html} +26 -26
- package/coverage/lcov-report/{src/api/controllers/automation.ts.html → api/controllers/automation.js.html} +75 -75
- package/coverage/lcov-report/{src/api/controllers/cloud.ts.html → api/controllers/cloud.js.html} +47 -47
- package/coverage/lcov-report/{src/api/controllers/datasource.ts.html → api/controllers/datasource.js.html} +87 -246
- package/coverage/lcov-report/{src/api/controllers/dev.ts.html → api/controllers/dev.js.html} +71 -53
- package/coverage/lcov-report/api/controllers/index.html +326 -0
- package/coverage/lcov-report/{src/api → api}/controllers/integration.js.html +10 -10
- package/coverage/lcov-report/{src/api/controllers/layout.ts.html → api/controllers/layout.js.html} +26 -26
- package/coverage/lcov-report/{src/api/controllers/metadata.ts.html → api/controllers/metadata.js.html} +23 -26
- package/coverage/lcov-report/{src/api → api}/controllers/migrations.js.html +10 -10
- package/coverage/lcov-report/{src/api/controllers/permission.ts.html → api/controllers/permission.js.html} +71 -80
- package/coverage/lcov-report/{src/utilities/routing → api/controllers/query}/index.html +8 -8
- package/coverage/lcov-report/{src/api/controllers/query/validation.ts.html → api/controllers/query/validation.js.html} +17 -17
- package/coverage/lcov-report/{src/api/controllers/role.ts.html → api/controllers/role.js.html} +56 -44
- package/coverage/lcov-report/{src/api/controllers/routing.ts.html → api/controllers/routing.js.html} +56 -65
- package/coverage/lcov-report/{src/api → api}/controllers/row/external.js.html +13 -13
- package/coverage/lcov-report/{src/api → api}/controllers/row/index.html +46 -76
- package/coverage/lcov-report/{src/api → api}/controllers/row/internal.js.html +29 -26
- package/coverage/lcov-report/{src/api/controllers/row/internalSearch.ts.html → api/controllers/row/internalSearch.js.html} +110 -182
- package/coverage/lcov-report/{src/api/controllers/row/staticFormula.ts.html → api/controllers/row/staticFormula.js.html} +54 -69
- package/coverage/lcov-report/{src/api/controllers/row/utils.ts.html → api/controllers/row/utils.js.html} +43 -64
- package/coverage/lcov-report/{src/api/controllers/script.ts.html → api/controllers/script.js.html} +14 -17
- package/coverage/lcov-report/{src/api/controllers/table/bulkFormula.ts.html → api/controllers/table/bulkFormula.js.html} +54 -96
- package/coverage/lcov-report/{src/api/controllers/table/external.ts.html → api/controllers/table/external.js.html} +100 -196
- package/coverage/lcov-report/{src/utilities/fileSystem → api/controllers/table}/index.html +44 -44
- package/coverage/lcov-report/{src/api/controllers/table/index.ts.html → api/controllers/table/index.js.html} +35 -35
- package/coverage/lcov-report/{src/api/controllers/templates.ts.html → api/controllers/templates.js.html} +25 -34
- package/coverage/lcov-report/{src/api/controllers/user.ts.html → api/controllers/user.js.html} +85 -79
- package/coverage/lcov-report/{src/api/controllers/view/exporters.ts.html → api/controllers/view/exporters.js.html} +14 -20
- package/coverage/lcov-report/{src/api → api}/controllers/view/index.html +30 -30
- package/coverage/lcov-report/{src/api/controllers/view/index.ts.html → api/controllers/view/index.js.html} +48 -75
- package/coverage/lcov-report/{src/api/controllers/view/utils.ts.html → api/controllers/view/utils.js.html} +43 -61
- package/coverage/lcov-report/{src/api → api}/controllers/view/viewBuilder.js.html +10 -10
- package/coverage/lcov-report/{src/api → api}/index.html +23 -23
- package/coverage/lcov-report/{src/api/index.ts.html → api/index.js.html} +56 -35
- package/coverage/lcov-report/{src/api/routes/analytics.ts.html → api/routes/analytics.js.html} +14 -14
- package/coverage/lcov-report/{src/middleware/selfhost.ts.html → api/routes/apikeys.js.html} +27 -27
- package/coverage/lcov-report/{src/api/routes/automation.ts.html → api/routes/automation.js.html} +42 -48
- package/coverage/lcov-report/{src/api/routes/backup.ts.html → api/routes/cloud.js.html} +21 -21
- package/coverage/lcov-report/{src/api/routes/component.ts.html → api/routes/component.js.html} +17 -17
- package/coverage/lcov-report/{src/api/routes/datasource.ts.html → api/routes/datasource.js.html} +33 -60
- package/coverage/lcov-report/{src/api/routes/cloud.ts.html → api/routes/deploy.js.html} +22 -25
- package/coverage/lcov-report/{src/api/routes/webhook.ts.html → api/routes/dev.js.html} +43 -46
- package/coverage/lcov-report/{src/api → api}/routes/index.html +47 -167
- package/coverage/lcov-report/{src/api/routes/apikeys.ts.html → api/routes/integration.js.html} +18 -18
- package/coverage/lcov-report/{src/api/routes/layout.ts.html → api/routes/layout.js.html} +18 -18
- package/coverage/lcov-report/{src/api/routes/metadata.ts.html → api/routes/metadata.js.html} +24 -24
- package/coverage/lcov-report/{src/sdk/index.ts.html → api/routes/migrations.js.html} +21 -24
- package/coverage/lcov-report/{src/api/routes/view.ts.html → api/routes/permission.js.html} +37 -40
- package/coverage/lcov-report/{src/api/routes/query.ts.html → api/routes/query.js.html} +42 -33
- package/coverage/lcov-report/api/routes/role.js.html +130 -0
- package/coverage/lcov-report/{src/api/routes/routing.ts.html → api/routes/routing.js.html} +17 -17
- package/coverage/lcov-report/api/routes/screen.js.html +139 -0
- package/coverage/lcov-report/{src/api/routes/script.ts.html → api/routes/script.js.html} +17 -17
- package/coverage/lcov-report/{src/api/routes/table.ts.html → api/routes/table.js.html} +33 -24
- package/coverage/lcov-report/{src/api/routes/templates.ts.html → api/routes/templates.js.html} +18 -18
- package/coverage/lcov-report/{src/api/routes/user.ts.html → api/routes/user.js.html} +35 -29
- package/coverage/lcov-report/{src/api → api}/routes/utils/index.html +15 -15
- package/coverage/lcov-report/{src/api/routes/utils/validators.ts.html → api/routes/utils/validators.js.html} +58 -46
- package/coverage/lcov-report/{src/definitions/automations.ts.html → api/routes/view.js.html} +41 -44
- package/coverage/lcov-report/{src/automations → automations}/actions.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/automationUtils.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/bullboard.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/index.html +24 -39
- package/coverage/lcov-report/{src/automations → automations}/index.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/steps/bash.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/steps/delay.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/steps/discord.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/steps/executeQuery.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/steps/executeScript.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/steps/filter.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/steps/index.html +26 -56
- package/coverage/lcov-report/{src/automations → automations}/steps/integromat.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/steps/loop.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/steps/outgoingWebhook.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/steps/queryRows.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/steps/sendSmtpEmail.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/steps/serverLog.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/steps/slack.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/steps/updateRow.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/steps/utils.js.html +19 -19
- package/coverage/lcov-report/{src/automations → automations}/steps/zapier.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/triggerInfo/app.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/triggerInfo/cron.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/triggerInfo/index.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/triggerInfo/index.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/triggerInfo/rowDeleted.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/triggerInfo/rowSaved.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/triggerInfo/rowUpdated.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/triggerInfo/webhook.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/triggers.js.html +23 -20
- package/coverage/lcov-report/{src/constants → constants}/index.html +14 -14
- package/coverage/lcov-report/{src/constants → constants}/index.js.html +22 -16
- package/coverage/lcov-report/{src/constants → constants}/layouts.js.html +10 -10
- package/coverage/lcov-report/{src/constants → constants}/screens.js.html +12 -12
- package/coverage/lcov-report/{src/db → db}/inMemoryView.js.html +13 -13
- package/coverage/lcov-report/{src/db → db}/index.html +27 -42
- package/coverage/lcov-report/{src/db → db}/index.js.html +18 -18
- package/coverage/lcov-report/{src/db → db}/linkedRows/LinkController.js.html +160 -22
- package/coverage/lcov-report/{src/db → db}/linkedRows/index.html +22 -37
- package/coverage/lcov-report/{src/db → db}/linkedRows/index.js.html +12 -12
- package/coverage/lcov-report/{src/db → db}/linkedRows/linkUtils.js.html +13 -13
- package/coverage/lcov-report/{src/db → db}/newid.js.html +10 -10
- package/coverage/lcov-report/{src/db/utils.ts.html → db/utils.js.html} +153 -105
- package/coverage/lcov-report/{src/events → events}/AutomationEmitter.js.html +10 -10
- package/coverage/lcov-report/{src/events → events}/index.html +10 -10
- package/coverage/lcov-report/{src/events → events}/index.js.html +10 -10
- package/coverage/lcov-report/{src/events → events}/utils.js.html +10 -10
- package/coverage/lcov-report/index.html +161 -671
- package/coverage/lcov-report/{src/integrations → integrations}/tests/TestConfiguration.js.html +10 -10
- package/coverage/lcov-report/{src/integrations → integrations}/tests/index.html +10 -10
- package/coverage/lcov-report/{src/middleware/appInfo.ts.html → middleware/appInfo.js.html} +28 -31
- package/coverage/lcov-report/{src/middleware/builder.ts.html → middleware/builder.js.html} +37 -43
- package/coverage/lcov-report/{src/middleware/currentapp.ts.html → middleware/currentapp.js.html} +68 -77
- package/coverage/lcov-report/{src/middleware → middleware}/index.html +63 -78
- package/coverage/lcov-report/{src/middleware/joi-validator.ts.html → middleware/joi-validator.js.html} +22 -25
- package/coverage/lcov-report/{src/middleware/publicApi.ts.html → middleware/publicApi.js.html} +24 -24
- package/coverage/lcov-report/{src/middleware/resourceId.ts.html → middleware/resourceId.js.html} +25 -40
- package/coverage/lcov-report/{src/tests/utilities/index.js.html → middleware/selfhost.js.html} +30 -33
- package/coverage/lcov-report/{src/middleware/utils.ts.html → middleware/utils.js.html} +13 -19
- package/coverage/lcov-report/{src/utilities/budibaseDir.ts.html → utilities/budibaseDir.js.html} +12 -12
- package/coverage/lcov-report/{src/utilities → utilities}/centralPath.js.html +10 -10
- package/coverage/lcov-report/{src/utilities → utilities}/csvParser.js.html +10 -10
- package/coverage/lcov-report/{src/utilities/global.ts.html → utilities/global.js.html} +74 -107
- package/coverage/lcov-report/{src/utilities → utilities}/index.html +61 -76
- package/coverage/lcov-report/{src/utilities/index.ts.html → utilities/index.js.html} +53 -77
- package/coverage/lcov-report/{src/utilities → utilities}/plugins.js.html +10 -10
- package/coverage/lcov-report/{src/utilities → utilities}/queue/inMemoryQueue.js.html +10 -10
- package/coverage/lcov-report/{src/utilities → utilities}/queue/index.html +10 -10
- package/coverage/lcov-report/{src/sdk → utilities/routing}/index.html +10 -10
- package/coverage/lcov-report/{src/api/routes/role.ts.html → utilities/routing/index.js.html} +42 -39
- package/coverage/lcov-report/{src/migrations → utilities/rowProcessor}/index.html +37 -22
- package/coverage/lcov-report/{src/utilities/rowProcessor/index.ts.html → utilities/rowProcessor/index.js.html} +344 -113
- package/coverage/lcov-report/{src/utilities/rowProcessor/utils.ts.html → utilities/rowProcessor/utils.js.html} +38 -50
- package/coverage/lcov-report/{src/utilities → utilities}/scriptRunner.js.html +10 -10
- package/coverage/lcov-report/{src/utilities/security.ts.html → utilities/security.js.html} +74 -56
- package/coverage/lcov-report/{src/utilities → utilities}/statusCodes.js.html +10 -10
- package/coverage/lcov-report/{src/utilities → utilities}/usageQuota/index.html +27 -27
- package/coverage/lcov-report/{src/utilities/usageQuota/rows.ts.html → utilities/usageQuota/rows.js.html} +46 -34
- package/coverage/lcov-report/{src/utilities → utilities}/usageQuota/usageQuoteReset.js.html +10 -10
- package/coverage/lcov-report/{src/utilities/users.ts.html → utilities/users.js.html} +35 -29
- package/coverage/lcov-report/{src/utilities/workerRequests.ts.html → utilities/workerRequests.js.html} +61 -76
- package/coverage/lcov.info +6772 -19273
- package/dist/api/controllers/apikeys.js +9 -12
- package/dist/api/controllers/application.js +45 -48
- package/dist/api/controllers/automation.js +84 -104
- package/dist/api/controllers/cloud.js +71 -84
- package/dist/api/controllers/component.js +2 -4
- package/dist/api/controllers/datasource.js +92 -144
- package/dist/api/controllers/deploy/Deployment.js +6 -10
- package/dist/api/controllers/deploy/index.js +16 -13
- package/dist/api/controllers/dev.js +81 -96
- package/dist/api/controllers/layout.js +15 -18
- package/dist/api/controllers/metadata.js +37 -51
- package/dist/api/controllers/permission.js +43 -52
- package/dist/api/controllers/plugin/index.js +7 -6
- package/dist/api/controllers/public/applications.js +9 -17
- package/dist/api/controllers/public/tables.js +9 -29
- package/dist/api/controllers/query/import/index.js +2 -1
- package/dist/api/controllers/query/index.js +13 -10
- package/dist/api/controllers/query/validation.js +33 -41
- package/dist/api/controllers/role.js +27 -29
- package/dist/api/controllers/routing.js +58 -71
- package/dist/api/controllers/row/ExternalRequest.js +8 -12
- package/dist/api/controllers/row/external.js +3 -3
- package/dist/api/controllers/row/index.js +7 -16
- package/dist/api/controllers/row/internal.js +12 -11
- package/dist/api/controllers/row/internalSearch.js +80 -95
- package/dist/api/controllers/row/staticFormula.js +75 -85
- package/dist/api/controllers/row/utils.js +84 -118
- package/dist/api/controllers/screen.js +66 -81
- package/dist/api/controllers/script.js +6 -13
- package/dist/api/controllers/static/index.js +11 -9
- package/dist/api/controllers/table/bulkFormula.js +35 -47
- package/dist/api/controllers/table/external.js +57 -67
- package/dist/api/controllers/table/index.js +33 -66
- package/dist/api/controllers/table/internal.js +6 -5
- package/dist/api/controllers/table/utils.js +35 -39
- package/dist/api/controllers/templates.js +10 -17
- package/dist/api/controllers/user.js +70 -82
- package/dist/api/controllers/view/exporters.js +4 -8
- package/dist/api/controllers/view/index.js +153 -201
- package/dist/api/controllers/view/utils.js +121 -151
- package/dist/api/index.js +34 -38
- package/dist/api/routes/analytics.js +3 -29
- package/dist/api/routes/apikeys.js +7 -33
- package/dist/api/routes/application.js +9 -8
- package/dist/api/routes/auth.js +2 -1
- package/dist/api/routes/automation.js +20 -46
- package/dist/api/routes/backup.js +4 -3
- package/dist/api/routes/cloud.js +6 -32
- package/dist/api/routes/component.js +6 -32
- package/dist/api/routes/datasource.js +13 -39
- package/dist/api/routes/deploy.js +8 -34
- package/dist/api/routes/dev.js +10 -36
- package/dist/api/routes/integration.js +7 -10
- package/dist/api/routes/layout.js +7 -33
- package/dist/api/routes/metadata.js +10 -36
- package/dist/api/routes/migrations.js +6 -32
- package/dist/api/routes/permission.js +12 -38
- package/dist/api/routes/plugin.js +5 -5
- package/dist/api/routes/public/index.js +9 -9
- package/dist/api/routes/query.js +15 -42
- package/dist/api/routes/role.js +10 -36
- package/dist/api/routes/routing.js +6 -32
- package/dist/api/routes/row.js +11 -12
- package/dist/api/routes/screen.js +9 -35
- package/dist/api/routes/script.js +6 -32
- package/dist/api/routes/static.js +9 -9
- package/dist/api/routes/table.js +13 -40
- package/dist/api/routes/templates.js +7 -33
- package/dist/api/routes/tests/utilities/TestFunctions.js +8 -6
- package/dist/api/routes/user.js +13 -40
- package/dist/api/routes/utils/validators.js +126 -142
- package/dist/api/routes/view.js +12 -38
- package/dist/api/routes/webhook.js +2 -1
- package/dist/app.js +4 -3
- package/dist/automations/tests/utilities/index.js +12 -21
- package/dist/automations/triggers.js +6 -5
- package/dist/automations/utils.js +8 -9
- package/dist/constants/index.js +5 -3
- package/dist/constants/screens.js +2 -2
- package/dist/db/inMemoryView.js +3 -3
- package/dist/db/linkedRows/LinkController.js +31 -4
- package/dist/db/linkedRows/index.js +2 -2
- package/dist/db/linkedRows/linkUtils.js +3 -3
- package/dist/db/utils.js +119 -146
- package/dist/db/views/staticViews.js +4 -4
- package/dist/integrations/elasticsearch.js +2 -26
- package/dist/integrations/googlesheets.js +6 -4
- package/dist/integrations/index.js +6 -15
- package/dist/integrations/s3.js +1 -157
- package/dist/middleware/appInfo.js +9 -14
- package/dist/middleware/authorized.js +21 -22
- package/dist/middleware/builder.js +40 -41
- package/dist/middleware/currentapp.js +37 -39
- package/dist/middleware/joi-validator.js +10 -17
- package/dist/middleware/publicApi.js +6 -5
- package/dist/middleware/resourceId.js +9 -16
- package/dist/middleware/selfhost.js +4 -5
- package/dist/middleware/utils.js +2 -5
- package/dist/migrations/functions/appUrls.js +2 -2
- package/dist/migrations/functions/backfill/global.js +1 -1
- package/dist/migrations/functions/usageQuotas/syncApps.js +4 -3
- package/dist/migrations/functions/usageQuotas/syncRows.js +4 -3
- package/dist/migrations/functions/userEmailViewCasing.js +3 -3
- package/dist/package.json +44 -10
- package/dist/sdk/app/backups/exports.js +2 -1
- package/dist/sdk/app/backups/imports.js +3 -2
- package/dist/sdk/app/tables/index.js +5 -5
- package/dist/startup.js +4 -4
- package/dist/tests/utilities/TestConfiguration.js +36 -30
- package/dist/tests/utilities/structures.js +4 -3
- package/dist/threads/automation.js +16 -15
- package/dist/threads/query.js +19 -17
- package/dist/threads/utils.js +9 -11
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utilities/budibaseDir.js +2 -4
- package/dist/utilities/fileSystem/clientLibrary.js +12 -12
- package/dist/utilities/fileSystem/index.js +3 -3
- package/dist/utilities/fileSystem/utilities.js +22 -0
- package/dist/utilities/global.js +66 -87
- package/dist/utilities/index.js +75 -102
- package/dist/utilities/redis.js +65 -100
- package/dist/utilities/routing/index.js +23 -27
- package/dist/utilities/rowProcessor/index.js +191 -124
- package/dist/utilities/rowProcessor/utils.js +26 -35
- package/dist/utilities/security.js +35 -39
- package/dist/utilities/usageQuota/rows.js +49 -56
- package/dist/utilities/users.js +28 -31
- package/dist/utilities/workerRequests.js +82 -115
- package/dist/watch.js +2 -1
- package/package.json +45 -11
- package/scripts/exportAppTemplate.js +2 -2
- package/{src/tests/jestSetup.ts → scripts/jestSetup.js} +2 -11
- package/scripts/localdomain.js +6 -34
- package/src/api/controllers/{apikeys.ts → apikeys.js} +10 -10
- package/src/api/controllers/application.ts +42 -56
- package/src/api/controllers/auth.ts +3 -4
- package/src/api/controllers/{automation.ts → automation.js} +48 -48
- package/src/api/controllers/{cloud.ts → cloud.js} +24 -24
- package/src/api/controllers/component.ts +1 -2
- package/src/api/controllers/{datasource.ts → datasource.js} +47 -100
- package/src/api/controllers/deploy/{Deployment.ts → Deployment.js} +10 -13
- package/src/api/controllers/deploy/index.ts +25 -13
- package/src/api/controllers/{dev.ts → dev.js} +37 -31
- package/src/api/controllers/{layout.ts → layout.js} +8 -8
- package/src/api/controllers/{metadata.ts → metadata.js} +10 -11
- package/src/api/controllers/{permission.ts → permission.js} +46 -49
- package/src/api/controllers/plugin/index.ts +5 -4
- package/src/api/controllers/public/applications.ts +9 -15
- package/src/api/controllers/public/tables.ts +2 -2
- package/src/api/controllers/query/import/index.ts +3 -2
- package/src/api/controllers/query/index.ts +14 -11
- package/src/api/controllers/query/{validation.ts → validation.js} +7 -7
- package/src/api/controllers/{role.ts → role.js} +25 -21
- package/src/api/controllers/{routing.ts → routing.js} +34 -37
- package/src/api/controllers/row/ExternalRequest.ts +11 -9
- package/src/api/controllers/row/external.js +3 -3
- package/src/api/controllers/row/index.ts +9 -17
- package/src/api/controllers/row/internal.js +12 -11
- package/src/api/controllers/row/{internalSearch.ts → internalSearch.js} +68 -92
- package/src/api/controllers/row/{staticFormula.ts → staticFormula.js} +23 -28
- package/src/api/controllers/row/{utils.ts → utils.js} +18 -25
- package/src/api/controllers/screen.ts +6 -10
- package/src/api/controllers/script.js +11 -0
- package/src/api/controllers/static/index.ts +13 -9
- package/src/api/controllers/table/{bulkFormula.ts → bulkFormula.js} +25 -39
- package/src/api/controllers/table/{external.ts → external.js} +54 -86
- package/src/api/controllers/table/{index.ts → index.js} +17 -17
- package/src/api/controllers/table/internal.ts +6 -5
- package/src/api/controllers/table/utils.ts +21 -26
- package/src/api/controllers/{templates.ts → templates.js} +7 -10
- package/src/api/controllers/{user.ts → user.js} +49 -47
- package/src/api/controllers/view/{exporters.ts → exporters.js} +3 -5
- package/src/api/controllers/view/{index.ts → index.js} +27 -36
- package/src/api/controllers/view/{utils.ts → utils.js} +20 -26
- package/src/api/{index.ts → index.js} +22 -15
- package/src/api/routes/analytics.js +9 -0
- package/src/api/routes/apikeys.js +12 -0
- package/src/api/routes/application.ts +9 -17
- package/src/api/routes/auth.ts +2 -2
- package/src/api/routes/automation.js +85 -0
- package/src/api/routes/backup.ts +4 -8
- package/src/api/routes/cloud.js +14 -0
- package/src/api/routes/component.js +14 -0
- package/src/api/routes/datasource.js +51 -0
- package/src/api/routes/deploy.js +17 -0
- package/src/api/routes/dev.js +26 -0
- package/src/api/routes/integration.js +12 -0
- package/src/api/routes/layout.js +16 -0
- package/src/api/routes/{metadata.ts → metadata.js} +13 -13
- package/src/api/routes/migrations.js +14 -0
- package/src/api/routes/permission.js +33 -0
- package/src/api/routes/plugin.ts +6 -14
- package/src/api/routes/public/index.ts +10 -10
- package/src/api/routes/public/tests/compare.spec.js +1 -1
- package/src/api/routes/{query.ts → query.js} +22 -19
- package/src/api/routes/role.js +15 -0
- package/src/api/routes/routing.js +14 -0
- package/src/api/routes/row.ts +15 -13
- package/src/api/routes/screen.js +18 -0
- package/src/api/routes/script.js +10 -0
- package/src/api/routes/static.ts +10 -7
- package/src/api/routes/{table.ts → table.js} +13 -10
- package/src/api/routes/templates.js +16 -0
- package/src/api/routes/tests/analytics.spec.js +1 -1
- package/src/api/routes/tests/backup.spec.js +1 -9
- package/src/api/routes/tests/permissions.spec.js +1 -2
- package/src/api/routes/tests/query.spec.js +10 -15
- package/src/api/routes/tests/role.spec.js +9 -7
- package/src/api/routes/tests/routing.spec.js +1 -2
- package/src/api/routes/tests/row.spec.js +4 -3
- package/src/api/routes/tests/static.spec.js +2 -2
- package/src/api/routes/tests/table.spec.js +35 -38
- package/src/api/routes/tests/user.spec.js +1 -2
- package/src/api/routes/tests/utilities/TestFunctions.ts +8 -6
- package/src/api/routes/user.js +53 -0
- package/src/api/routes/utils/{validators.ts → validators.js} +37 -33
- package/src/api/routes/view.js +31 -0
- package/src/api/routes/webhook.ts +2 -2
- package/src/app.ts +4 -3
- package/src/automations/tests/updateRow.spec.js +1 -0
- package/src/automations/tests/utilities/index.js +4 -10
- package/src/automations/triggers.js +6 -5
- package/src/automations/utils.ts +12 -9
- package/src/constants/index.js +5 -3
- package/src/constants/screens.js +2 -2
- package/src/db/inMemoryView.js +3 -3
- package/src/db/linkedRows/LinkController.js +50 -4
- package/src/db/linkedRows/index.js +2 -2
- package/src/db/linkedRows/linkUtils.js +3 -3
- package/src/db/tests/linkController.spec.js +57 -73
- package/src/db/tests/linkTests.spec.js +14 -17
- package/src/db/{utils.ts → utils.js} +93 -77
- package/src/db/views/staticViews.js +4 -4
- package/src/integrations/base/sql.ts +1 -1
- package/src/integrations/base/sqlTable.ts +1 -1
- package/src/integrations/elasticsearch.ts +2 -32
- package/src/integrations/googlesheets.ts +7 -4
- package/src/integrations/index.ts +41 -45
- package/src/integrations/s3.ts +3 -179
- package/src/integrations/tests/s3.spec.ts +1 -85
- package/src/middleware/appInfo.js +19 -0
- package/src/middleware/authorized.ts +28 -21
- package/src/middleware/{builder.ts → builder.js} +15 -17
- package/src/middleware/{currentapp.ts → currentapp.js} +39 -42
- package/src/middleware/{joi-validator.ts → joi-validator.js} +8 -9
- package/src/middleware/publicApi.js +21 -0
- package/src/middleware/{resourceId.ts → resourceId.js} +11 -16
- package/src/middleware/{selfhost.ts → selfhost.js} +2 -4
- package/src/middleware/tests/authorized.spec.js +6 -5
- package/src/middleware/tests/currentapp.spec.js +63 -118
- package/src/middleware/{utils.ts → utils.js} +1 -3
- package/src/migrations/functions/appUrls.ts +2 -2
- package/src/migrations/functions/backfill/app/tables.ts +5 -2
- package/src/migrations/functions/backfill/global.ts +1 -1
- package/src/migrations/functions/tests/appUrls.spec.js +4 -4
- package/src/migrations/functions/tests/userEmailViewCasing.spec.js +9 -14
- package/src/migrations/functions/usageQuotas/syncApps.ts +4 -3
- package/src/migrations/functions/usageQuotas/syncRows.ts +5 -4
- package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +7 -7
- package/src/migrations/functions/userEmailViewCasing.ts +3 -3
- package/src/module.d.ts +14 -0
- package/src/sdk/app/backups/exports.ts +3 -5
- package/src/sdk/app/backups/imports.ts +14 -7
- package/src/sdk/app/backups/statistics.ts +18 -9
- package/src/sdk/app/tables/index.ts +8 -7
- package/src/startup.ts +2 -2
- package/src/tests/utilities/TestConfiguration.js +36 -42
- package/src/tests/utilities/structures.js +4 -3
- package/src/threads/automation.ts +16 -15
- package/src/threads/query.ts +16 -11
- package/src/threads/utils.ts +5 -4
- package/src/utilities/budibaseDir.js +3 -0
- package/src/utilities/fileSystem/clientLibrary.js +12 -12
- package/src/utilities/fileSystem/index.js +8 -8
- package/src/utilities/fileSystem/utilities.js +36 -0
- package/src/utilities/global.js +127 -0
- package/src/utilities/{index.ts → index.js} +32 -40
- package/src/utilities/{redis.ts → redis.js} +20 -21
- package/src/utilities/routing/index.js +25 -0
- package/src/utilities/rowProcessor/{index.ts → index.js} +142 -65
- package/src/utilities/rowProcessor/{utils.ts → utils.js} +15 -19
- package/src/utilities/security.js +71 -0
- package/src/utilities/usageQuota/{rows.ts → rows.js} +18 -14
- package/src/utilities/{users.ts → users.js} +13 -11
- package/src/utilities/{workerRequests.ts → workerRequests.js} +38 -43
- package/src/watch.ts +3 -2
- package/tsconfig.json +1 -3
- package/coverage/lcov-report/src/api/controllers/analytics.ts.html +0 -190
- package/coverage/lcov-report/src/api/controllers/application.ts.html +0 -2038
- package/coverage/lcov-report/src/api/controllers/auth.ts.html +0 -301
- package/coverage/lcov-report/src/api/controllers/backup.ts.html +0 -148
- package/coverage/lcov-report/src/api/controllers/component.ts.html +0 -259
- package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +0 -259
- package/coverage/lcov-report/src/api/controllers/deploy/index.html +0 -131
- package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +0 -730
- package/coverage/lcov-report/src/api/controllers/index.html +0 -431
- package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +0 -130
- package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +0 -310
- package/coverage/lcov-report/src/api/controllers/plugin/index.html +0 -206
- package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +0 -484
- package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +0 -253
- package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +0 -97
- package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +0 -121
- package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +0 -142
- package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +0 -334
- package/coverage/lcov-report/src/api/controllers/public/index.html +0 -191
- package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +0 -181
- package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +0 -191
- package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +0 -124
- package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +0 -202
- package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +0 -178
- package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +0 -163
- package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +0 -181
- package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +0 -145
- package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +0 -328
- package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +0 -253
- package/coverage/lcov-report/src/api/controllers/public/users.ts.html +0 -268
- package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +0 -220
- package/coverage/lcov-report/src/api/controllers/query/import/index.html +0 -116
- package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +0 -373
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +0 -131
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +0 -379
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +0 -157
- package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +0 -403
- package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +0 -146
- package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +0 -586
- package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +0 -712
- package/coverage/lcov-report/src/api/controllers/query/index.html +0 -131
- package/coverage/lcov-report/src/api/controllers/query/index.ts.html +0 -976
- package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +0 -2320
- package/coverage/lcov-report/src/api/controllers/row/index.ts.html +0 -541
- package/coverage/lcov-report/src/api/controllers/screen.ts.html +0 -463
- package/coverage/lcov-report/src/api/controllers/static/index.html +0 -116
- package/coverage/lcov-report/src/api/controllers/static/index.ts.html +0 -688
- package/coverage/lcov-report/src/api/controllers/table/index.html +0 -176
- package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +0 -661
- package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +0 -1255
- package/coverage/lcov-report/src/api/controllers/webhook.ts.html +0 -379
- package/coverage/lcov-report/src/api/routes/application.ts.html +0 -223
- package/coverage/lcov-report/src/api/routes/auth.ts.html +0 -109
- package/coverage/lcov-report/src/api/routes/deploy.ts.html +0 -148
- package/coverage/lcov-report/src/api/routes/dev.ts.html +0 -199
- package/coverage/lcov-report/src/api/routes/index.ts.html +0 -289
- package/coverage/lcov-report/src/api/routes/integration.ts.html +0 -133
- package/coverage/lcov-report/src/api/routes/migrations.ts.html +0 -127
- package/coverage/lcov-report/src/api/routes/permission.ts.html +0 -208
- package/coverage/lcov-report/src/api/routes/plugin.ts.html +0 -151
- package/coverage/lcov-report/src/api/routes/public/applications.ts.html +0 -541
- package/coverage/lcov-report/src/api/routes/public/index.html +0 -191
- package/coverage/lcov-report/src/api/routes/public/index.ts.html +0 -502
- package/coverage/lcov-report/src/api/routes/public/middleware/index.html +0 -116
- package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +0 -328
- package/coverage/lcov-report/src/api/routes/public/queries.ts.html +0 -313
- package/coverage/lcov-report/src/api/routes/public/rows.ts.html +0 -598
- package/coverage/lcov-report/src/api/routes/public/tables.ts.html +0 -586
- package/coverage/lcov-report/src/api/routes/public/users.ts.html +0 -511
- package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +0 -238
- package/coverage/lcov-report/src/api/routes/public/utils/index.html +0 -116
- package/coverage/lcov-report/src/api/routes/row.ts.html +0 -883
- package/coverage/lcov-report/src/api/routes/screen.ts.html +0 -154
- package/coverage/lcov-report/src/api/routes/static.ts.html +0 -280
- package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +0 -550
- package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +0 -131
- package/coverage/lcov-report/src/api/routes/tests/utilities/index.js.html +0 -367
- package/coverage/lcov-report/src/app.ts.html +0 -400
- package/coverage/lcov-report/src/automations/logging/index.html +0 -116
- package/coverage/lcov-report/src/automations/logging/index.ts.html +0 -199
- package/coverage/lcov-report/src/automations/steps/createRow.ts.html +0 -367
- package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +0 -334
- package/coverage/lcov-report/src/automations/tests/utilities/index.html +0 -116
- package/coverage/lcov-report/src/automations/tests/utilities/index.js.html +0 -256
- package/coverage/lcov-report/src/automations/utils.ts.html +0 -886
- package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.js.html +0 -2023
- package/coverage/lcov-report/src/db/defaultData/employeeImport.js.html +0 -541
- package/coverage/lcov-report/src/db/defaultData/expensesImport.js.html +0 -427
- package/coverage/lcov-report/src/db/defaultData/index.html +0 -176
- package/coverage/lcov-report/src/db/defaultData/inventoryImport.js.html +0 -403
- package/coverage/lcov-report/src/db/defaultData/jobsImport.js.html +0 -559
- package/coverage/lcov-report/src/db/dynamoClient.js.html +0 -466
- package/coverage/lcov-report/src/db/linkedRows/LinkDocument.js.html +0 -226
- package/coverage/lcov-report/src/definitions/datasource.ts.html +0 -235
- package/coverage/lcov-report/src/definitions/index.html +0 -131
- package/coverage/lcov-report/src/environment.js.html +0 -445
- package/coverage/lcov-report/src/index.html +0 -191
- package/coverage/lcov-report/src/index.ts.html +0 -133
- package/coverage/lcov-report/src/integrations/airtable.ts.html +0 -529
- package/coverage/lcov-report/src/integrations/arangodb.ts.html +0 -415
- package/coverage/lcov-report/src/integrations/base/index.html +0 -161
- package/coverage/lcov-report/src/integrations/base/query.ts.html +0 -133
- package/coverage/lcov-report/src/integrations/base/sql.ts.html +0 -1951
- package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +0 -691
- package/coverage/lcov-report/src/integrations/base/utils.ts.html +0 -121
- package/coverage/lcov-report/src/integrations/couchdb.ts.html +0 -406
- package/coverage/lcov-report/src/integrations/dynamodb.ts.html +0 -745
- package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +0 -634
- package/coverage/lcov-report/src/integrations/firebase.ts.html +0 -646
- package/coverage/lcov-report/src/integrations/googlesheets.ts.html +0 -1312
- package/coverage/lcov-report/src/integrations/index.html +0 -371
- package/coverage/lcov-report/src/integrations/index.ts.html +0 -445
- package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +0 -1006
- package/coverage/lcov-report/src/integrations/mongodb.ts.html +0 -1867
- package/coverage/lcov-report/src/integrations/mysql.ts.html +0 -952
- package/coverage/lcov-report/src/integrations/oracle.ts.html +0 -1474
- package/coverage/lcov-report/src/integrations/postgres.ts.html +0 -1069
- package/coverage/lcov-report/src/integrations/queries/index.html +0 -116
- package/coverage/lcov-report/src/integrations/queries/sql.ts.html +0 -463
- package/coverage/lcov-report/src/integrations/redis.ts.html +0 -550
- package/coverage/lcov-report/src/integrations/rest.ts.html +0 -1381
- package/coverage/lcov-report/src/integrations/s3.ts.html +0 -862
- package/coverage/lcov-report/src/integrations/snowflake.ts.html +0 -376
- package/coverage/lcov-report/src/integrations/utils.ts.html +0 -1006
- package/coverage/lcov-report/src/middleware/authorized.ts.html +0 -460
- package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +0 -187
- package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +0 -163
- package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +0 -151
- package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +0 -206
- package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +0 -172
- package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +0 -226
- package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +0 -151
- package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +0 -151
- package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +0 -166
- package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +0 -532
- package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +0 -283
- package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +0 -146
- package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +0 -265
- package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +0 -232
- package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +0 -724
- package/coverage/lcov-report/src/migrations/functions/backfill/index.html +0 -161
- package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +0 -106
- package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +0 -235
- package/coverage/lcov-report/src/migrations/functions/index.html +0 -146
- package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +0 -130
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +0 -161
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +0 -94
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +0 -127
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +0 -115
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +0 -169
- package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +0 -124
- package/coverage/lcov-report/src/migrations/index.ts.html +0 -403
- package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +0 -205
- package/coverage/lcov-report/src/migrations/tests/index.html +0 -131
- package/coverage/lcov-report/src/migrations/tests/structures.ts.html +0 -283
- package/coverage/lcov-report/src/sdk/app/automations/index.html +0 -131
- package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +0 -100
- package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +0 -214
- package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +0 -91
- package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +0 -604
- package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +0 -682
- package/coverage/lcov-report/src/sdk/app/backups/index.html +0 -176
- package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +0 -112
- package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +0 -292
- package/coverage/lcov-report/src/sdk/app/tables/index.html +0 -116
- package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +0 -265
- package/coverage/lcov-report/src/startup.ts.html +0 -499
- package/coverage/lcov-report/src/tests/utilities/TestConfiguration.js.html +0 -1885
- package/coverage/lcov-report/src/tests/utilities/controllers.js.html +0 -133
- package/coverage/lcov-report/src/tests/utilities/index.html +0 -161
- package/coverage/lcov-report/src/tests/utilities/structures.js.html +0 -649
- package/coverage/lcov-report/src/threads/automation.ts.html +0 -1594
- package/coverage/lcov-report/src/threads/index.html +0 -161
- package/coverage/lcov-report/src/threads/index.ts.html +0 -418
- package/coverage/lcov-report/src/threads/query.ts.html +0 -961
- package/coverage/lcov-report/src/threads/utils.ts.html +0 -373
- package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.js.html +0 -547
- package/coverage/lcov-report/src/utilities/fileSystem/index.js.html +0 -1141
- package/coverage/lcov-report/src/utilities/fileSystem/processor.js.html +0 -148
- package/coverage/lcov-report/src/utilities/redis.ts.html +0 -343
- package/coverage/lcov-report/src/utilities/routing/index.ts.html +0 -181
- package/coverage/lcov-report/src/utilities/rowProcessor/index.html +0 -146
- package/coverage/lcov-report/src/utilities/rowProcessor/map.js.html +0 -370
- package/coverage/lcov-report/src/watch.ts.html +0 -196
- package/coverage/lcov-report/src/websocket.ts.html +0 -163
- package/dist/db/defaultData/datasource_bb_default.js +0 -565
- package/dist/db/defaultData/employeeImport.js +0 -153
- package/dist/db/defaultData/expensesImport.js +0 -115
- package/dist/db/defaultData/inventoryImport.js +0 -107
- package/dist/db/defaultData/jobsImport.js +0 -150
- package/dist/db/linkedRows/LinkDocument.js +0 -32
- package/dist/utilities/rowProcessor/map.js +0 -96
- package/jest.config.ts +0 -33
- package/src/api/controllers/script.ts +0 -12
- package/src/api/routes/analytics.ts +0 -9
- package/src/api/routes/apikeys.ts +0 -12
- package/src/api/routes/automation.ts +0 -87
- package/src/api/routes/cloud.ts +0 -18
- package/src/api/routes/component.ts +0 -14
- package/src/api/routes/datasource.ts +0 -60
- package/src/api/routes/deploy.ts +0 -21
- package/src/api/routes/dev.ts +0 -38
- package/src/api/routes/integration.ts +0 -16
- package/src/api/routes/layout.ts +0 -16
- package/src/api/routes/migrations.ts +0 -14
- package/src/api/routes/permission.ts +0 -41
- package/src/api/routes/role.ts +0 -24
- package/src/api/routes/routing.ts +0 -14
- package/src/api/routes/screen.ts +0 -23
- package/src/api/routes/script.ts +0 -10
- package/src/api/routes/templates.ts +0 -16
- package/src/api/routes/user.ts +0 -51
- package/src/api/routes/view.ts +0 -34
- package/src/db/defaultData/datasource_bb_default.js +0 -646
- package/src/db/defaultData/employeeImport.js +0 -152
- package/src/db/defaultData/expensesImport.js +0 -114
- package/src/db/defaultData/inventoryImport.js +0 -106
- package/src/db/defaultData/jobsImport.js +0 -158
- package/src/db/linkedRows/LinkDocument.js +0 -47
- package/src/middleware/appInfo.ts +0 -20
- package/src/middleware/publicApi.ts +0 -21
- package/src/utilities/budibaseDir.ts +0 -3
- package/src/utilities/global.ts +0 -138
- package/src/utilities/routing/index.ts +0 -32
- package/src/utilities/rowProcessor/map.js +0 -95
- package/src/utilities/security.ts +0 -65
|
@@ -1,32 +1,33 @@
|
|
|
1
|
-
import { InternalTables } from "../../../db/utils"
|
|
2
|
-
import * as userController from "../user"
|
|
3
|
-
import { FieldTypes } from "../../../constants"
|
|
4
|
-
import { context } from "@budibase/backend-core"
|
|
5
|
-
import { makeExternalQuery } from "../../../integrations/base/query"
|
|
6
|
-
import { BBContext, Row, Table } from "@budibase/types"
|
|
7
|
-
export { removeKeyNumbering } from "../../../integrations/base/utils"
|
|
8
1
|
const validateJs = require("validate.js")
|
|
9
2
|
const { cloneDeep } = require("lodash/fp")
|
|
3
|
+
const { InternalTables } = require("../../../db/utils")
|
|
4
|
+
const userController = require("../user")
|
|
5
|
+
const { FieldTypes } = require("../../../constants")
|
|
6
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
7
|
+
const { makeExternalQuery } = require("../../../integrations/base/query")
|
|
8
|
+
const { removeKeyNumbering } = require("../../../integrations/base/utils")
|
|
10
9
|
|
|
11
10
|
validateJs.extend(validateJs.validators.datetime, {
|
|
12
|
-
parse: function (value
|
|
11
|
+
parse: function (value) {
|
|
13
12
|
return new Date(value).getTime()
|
|
14
13
|
},
|
|
15
14
|
// Input is a unix timestamp
|
|
16
|
-
format: function (value
|
|
15
|
+
format: function (value) {
|
|
17
16
|
return new Date(value).toISOString()
|
|
18
17
|
},
|
|
19
18
|
})
|
|
20
19
|
|
|
21
|
-
|
|
20
|
+
exports.removeKeyNumbering = removeKeyNumbering
|
|
21
|
+
|
|
22
|
+
exports.getDatasourceAndQuery = async json => {
|
|
22
23
|
const datasourceId = json.endpoint.datasourceId
|
|
23
|
-
const db =
|
|
24
|
+
const db = getAppDB()
|
|
24
25
|
const datasource = await db.get(datasourceId)
|
|
25
26
|
return makeExternalQuery(datasource, json)
|
|
26
27
|
}
|
|
27
28
|
|
|
28
|
-
|
|
29
|
-
const db =
|
|
29
|
+
exports.findRow = async (ctx, tableId, rowId) => {
|
|
30
|
+
const db = getAppDB()
|
|
30
31
|
let row
|
|
31
32
|
// TODO remove special user case in future
|
|
32
33
|
if (tableId === InternalTables.USER_METADATA) {
|
|
@@ -44,20 +45,12 @@ export async function findRow(ctx: BBContext, tableId: string, rowId: string) {
|
|
|
44
45
|
return row
|
|
45
46
|
}
|
|
46
47
|
|
|
47
|
-
|
|
48
|
-
tableId,
|
|
49
|
-
row,
|
|
50
|
-
table,
|
|
51
|
-
}: {
|
|
52
|
-
tableId?: string
|
|
53
|
-
row: Row
|
|
54
|
-
table: Table
|
|
55
|
-
}) {
|
|
48
|
+
exports.validate = async ({ tableId, row, table }) => {
|
|
56
49
|
if (!table) {
|
|
57
|
-
const db =
|
|
50
|
+
const db = getAppDB()
|
|
58
51
|
table = await db.get(tableId)
|
|
59
52
|
}
|
|
60
|
-
const errors
|
|
53
|
+
const errors = {}
|
|
61
54
|
for (let fieldName of Object.keys(table.schema)) {
|
|
62
55
|
const constraints = cloneDeep(table.schema[fieldName].constraints)
|
|
63
56
|
const type = table.schema[fieldName].type
|
|
@@ -77,7 +70,7 @@ export async function validate({
|
|
|
77
70
|
if (!Array.isArray(row[fieldName])) {
|
|
78
71
|
row[fieldName] = row[fieldName].split(",")
|
|
79
72
|
}
|
|
80
|
-
row[fieldName].map(
|
|
73
|
+
row[fieldName].map(val => {
|
|
81
74
|
if (
|
|
82
75
|
!constraints.inclusion.includes(val) &&
|
|
83
76
|
constraints.inclusion.length !== 0
|
|
@@ -7,9 +7,9 @@ import {
|
|
|
7
7
|
roles,
|
|
8
8
|
} from "@budibase/backend-core"
|
|
9
9
|
import { updateAppPackage } from "./application"
|
|
10
|
-
import { Plugin, ScreenProps
|
|
10
|
+
import { Plugin, ScreenProps } from "@budibase/types"
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
exports.fetch = async (ctx: any) => {
|
|
13
13
|
const db = context.getAppDB()
|
|
14
14
|
|
|
15
15
|
const screens = (
|
|
@@ -20,17 +20,13 @@ export async function fetch(ctx: BBContext) {
|
|
|
20
20
|
)
|
|
21
21
|
).rows.map((el: any) => el.doc)
|
|
22
22
|
|
|
23
|
-
const roleId = ctx.user?.role?._id as string
|
|
24
|
-
if (!roleId) {
|
|
25
|
-
ctx.throw("Unable to retrieve users role ID.")
|
|
26
|
-
}
|
|
27
23
|
ctx.body = await new roles.AccessController().checkScreensAccess(
|
|
28
24
|
screens,
|
|
29
|
-
|
|
25
|
+
ctx.user.role._id
|
|
30
26
|
)
|
|
31
27
|
}
|
|
32
28
|
|
|
33
|
-
|
|
29
|
+
exports.save = async (ctx: any) => {
|
|
34
30
|
const db = context.getAppDB()
|
|
35
31
|
let screen = ctx.request.body
|
|
36
32
|
|
|
@@ -96,7 +92,7 @@ export async function save(ctx: BBContext) {
|
|
|
96
92
|
}
|
|
97
93
|
}
|
|
98
94
|
|
|
99
|
-
|
|
95
|
+
exports.destroy = async (ctx: any) => {
|
|
100
96
|
const db = context.getAppDB()
|
|
101
97
|
const id = ctx.params.screenId
|
|
102
98
|
const screen = await db.get(id)
|
|
@@ -110,7 +106,7 @@ export async function destroy(ctx: BBContext) {
|
|
|
110
106
|
ctx.status = 200
|
|
111
107
|
}
|
|
112
108
|
|
|
113
|
-
|
|
109
|
+
const findPlugins = (component: ScreenProps, foundPlugins: string[]) => {
|
|
114
110
|
if (!component) {
|
|
115
111
|
return
|
|
116
112
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const ScriptRunner = require("../../utilities/scriptRunner")
|
|
2
|
+
|
|
3
|
+
exports.execute = async function (ctx) {
|
|
4
|
+
const { script, context } = ctx.request.body
|
|
5
|
+
const runner = new ScriptRunner(script, context)
|
|
6
|
+
ctx.body = runner.execute()
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
exports.save = async function (ctx) {
|
|
10
|
+
ctx.throw(501, "Not currently implemented")
|
|
11
|
+
}
|
|
@@ -17,9 +17,13 @@ const { clientLibraryPath } = require("../../../utilities")
|
|
|
17
17
|
const { upload, deleteFiles } = require("../../../utilities/fileSystem")
|
|
18
18
|
const { attachmentsRelativeURL } = require("../../../utilities")
|
|
19
19
|
const { DocumentType } = require("../../../db/utils")
|
|
20
|
-
const {
|
|
20
|
+
const { getAppDB, getAppId } = require("@budibase/backend-core/context")
|
|
21
|
+
const { setCookie, clearCookie } = require("@budibase/backend-core/utils")
|
|
21
22
|
const AWS = require("aws-sdk")
|
|
22
23
|
const fs = require("fs")
|
|
24
|
+
const {
|
|
25
|
+
downloadTarballDirect,
|
|
26
|
+
} = require("../../../utilities/fileSystem/utilities")
|
|
23
27
|
|
|
24
28
|
async function prepareUpload({ s3Key, bucket, metadata, file }: any) {
|
|
25
29
|
const response = await upload({
|
|
@@ -44,7 +48,7 @@ export const toggleBetaUiFeature = async function (ctx: any) {
|
|
|
44
48
|
const cookieName = `beta:${ctx.params.feature}`
|
|
45
49
|
|
|
46
50
|
if (ctx.cookies.get(cookieName)) {
|
|
47
|
-
|
|
51
|
+
clearCookie(ctx, cookieName)
|
|
48
52
|
ctx.body = {
|
|
49
53
|
message: `${ctx.params.feature} disabled`,
|
|
50
54
|
}
|
|
@@ -57,11 +61,11 @@ export const toggleBetaUiFeature = async function (ctx: any) {
|
|
|
57
61
|
if (!fs.existsSync(builderPath)) {
|
|
58
62
|
fs.mkdirSync(builderPath)
|
|
59
63
|
}
|
|
60
|
-
await
|
|
64
|
+
await downloadTarballDirect(
|
|
61
65
|
"https://cdn.budi.live/beta:design_ui/new_ui.tar.gz",
|
|
62
66
|
builderPath
|
|
63
67
|
)
|
|
64
|
-
|
|
68
|
+
setCookie(ctx, {}, cookieName)
|
|
65
69
|
|
|
66
70
|
ctx.body = {
|
|
67
71
|
message: `${ctx.params.feature} enabled`,
|
|
@@ -99,9 +103,9 @@ export const deleteObjects = async function (ctx: any) {
|
|
|
99
103
|
}
|
|
100
104
|
|
|
101
105
|
export const serveApp = async function (ctx: any) {
|
|
102
|
-
const db =
|
|
106
|
+
const db = getAppDB({ skip_setup: true })
|
|
103
107
|
const appInfo = await db.get(DocumentType.APP_METADATA)
|
|
104
|
-
let appId =
|
|
108
|
+
let appId = getAppId()
|
|
105
109
|
|
|
106
110
|
if (!env.isJest()) {
|
|
107
111
|
const App = require("./templates/BudibaseApp.svelte").default
|
|
@@ -130,11 +134,11 @@ export const serveApp = async function (ctx: any) {
|
|
|
130
134
|
}
|
|
131
135
|
|
|
132
136
|
export const serveBuilderPreview = async function (ctx: any) {
|
|
133
|
-
const db =
|
|
137
|
+
const db = getAppDB({ skip_setup: true })
|
|
134
138
|
const appInfo = await db.get(DocumentType.APP_METADATA)
|
|
135
139
|
|
|
136
140
|
if (!env.isJest()) {
|
|
137
|
-
let appId =
|
|
141
|
+
let appId = getAppId()
|
|
138
142
|
const previewHbs = loadHandlebarsFile(`${__dirname}/templates/preview.hbs`)
|
|
139
143
|
ctx.body = await processString(previewHbs, {
|
|
140
144
|
clientLibPath: clientLibraryPath(appId, appInfo.version, ctx),
|
|
@@ -152,7 +156,7 @@ export const serveClientLibrary = async function (ctx: any) {
|
|
|
152
156
|
}
|
|
153
157
|
|
|
154
158
|
export const getSignedUploadURL = async function (ctx: any) {
|
|
155
|
-
const database =
|
|
159
|
+
const database = getAppDB()
|
|
156
160
|
|
|
157
161
|
// Ensure datasource is valid
|
|
158
162
|
let datasource
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
import sdk from "../../../sdk"
|
|
1
|
+
const { FieldTypes, FormulaTypes } = require("../../../constants")
|
|
2
|
+
const { clearColumns } = require("./utils")
|
|
3
|
+
const { doesContainStrings } = require("@budibase/string-templates")
|
|
4
|
+
const { cloneDeep } = require("lodash/fp")
|
|
5
|
+
const { isEqual, uniq } = require("lodash")
|
|
6
|
+
const { updateAllFormulasInTable } = require("../row/staticFormula")
|
|
7
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
8
|
+
const sdk = require("../../../sdk")
|
|
10
9
|
|
|
11
|
-
function isStaticFormula(column
|
|
10
|
+
function isStaticFormula(column) {
|
|
12
11
|
return (
|
|
13
12
|
column.type === FieldTypes.FORMULA &&
|
|
14
13
|
column.formulaType === FormulaTypes.STATIC
|
|
@@ -19,8 +18,8 @@ function isStaticFormula(column: FieldSchema) {
|
|
|
19
18
|
* This retrieves the formula columns from a table schema that use a specified column name
|
|
20
19
|
* in the formula.
|
|
21
20
|
*/
|
|
22
|
-
function getFormulaThatUseColumn(table
|
|
23
|
-
let formula
|
|
21
|
+
function getFormulaThatUseColumn(table, columnNames) {
|
|
22
|
+
let formula = []
|
|
24
23
|
columnNames = Array.isArray(columnNames) ? columnNames : [columnNames]
|
|
25
24
|
for (let column of Object.values(table.schema)) {
|
|
26
25
|
// not a static formula, or doesn't contain a relationship
|
|
@@ -39,10 +38,7 @@ function getFormulaThatUseColumn(table: Table, columnNames: string[] | string) {
|
|
|
39
38
|
* This functions checks for when a related table, column or related column is deleted, if any
|
|
40
39
|
* tables need to have the formula column removed.
|
|
41
40
|
*/
|
|
42
|
-
async function checkIfFormulaNeedsCleared(
|
|
43
|
-
table: Table,
|
|
44
|
-
{ oldTable, deletion }: { oldTable?: Table; deletion?: boolean }
|
|
45
|
-
) {
|
|
41
|
+
async function checkIfFormulaNeedsCleared(table, { oldTable, deletion }) {
|
|
46
42
|
// start by retrieving all tables, remove the current table from the list
|
|
47
43
|
const tables = (await sdk.tables.getAllInternalTables()).filter(
|
|
48
44
|
tbl => tbl._id !== table._id
|
|
@@ -53,14 +49,11 @@ async function checkIfFormulaNeedsCleared(
|
|
|
53
49
|
)
|
|
54
50
|
// remove any formula columns that used related columns
|
|
55
51
|
for (let removed of removedColumns) {
|
|
56
|
-
let tableToUse
|
|
52
|
+
let tableToUse = table
|
|
57
53
|
// if relationship, get the related table
|
|
58
54
|
if (removed.type === FieldTypes.LINK) {
|
|
59
55
|
tableToUse = tables.find(table => table._id === removed.tableId)
|
|
60
56
|
}
|
|
61
|
-
if (!tableToUse) {
|
|
62
|
-
continue
|
|
63
|
-
}
|
|
64
57
|
const columnsToDelete = getFormulaThatUseColumn(tableToUse, removed.name)
|
|
65
58
|
if (columnsToDelete.length > 0) {
|
|
66
59
|
await clearColumns(table, columnsToDelete)
|
|
@@ -78,11 +71,11 @@ async function checkIfFormulaNeedsCleared(
|
|
|
78
71
|
// look to see if the column was used in a relationship formula,
|
|
79
72
|
// relationships won't be used for this
|
|
80
73
|
if (relatedTable && relatedColumns && removed.type !== FieldTypes.LINK) {
|
|
81
|
-
let relatedFormulaToRemove
|
|
74
|
+
let relatedFormulaToRemove = []
|
|
82
75
|
for (let column of relatedColumns) {
|
|
83
76
|
relatedFormulaToRemove = relatedFormulaToRemove.concat(
|
|
84
77
|
getFormulaThatUseColumn(relatedTable, [
|
|
85
|
-
column.fieldName
|
|
78
|
+
column.fieldName,
|
|
86
79
|
removed.name,
|
|
87
80
|
])
|
|
88
81
|
)
|
|
@@ -102,14 +95,13 @@ async function checkIfFormulaNeedsCleared(
|
|
|
102
95
|
* specifically only for static formula.
|
|
103
96
|
*/
|
|
104
97
|
async function updateRelatedFormulaLinksOnTables(
|
|
105
|
-
table
|
|
106
|
-
{ deletion }
|
|
98
|
+
table,
|
|
99
|
+
{ deletion } = { deletion: false }
|
|
107
100
|
) {
|
|
108
|
-
const
|
|
109
|
-
const db = context.getAppDB()
|
|
101
|
+
const db = getAppDB()
|
|
110
102
|
// start by retrieving all tables, remove the current table from the list
|
|
111
103
|
const tables = (await sdk.tables.getAllInternalTables()).filter(
|
|
112
|
-
tbl => tbl._id !==
|
|
104
|
+
tbl => tbl._id !== table._id
|
|
113
105
|
)
|
|
114
106
|
// clone the tables, so we can compare at end
|
|
115
107
|
const initialTables = cloneDeep(tables)
|
|
@@ -122,7 +114,7 @@ async function updateRelatedFormulaLinksOnTables(
|
|
|
122
114
|
if (!otherTable.relatedFormula) {
|
|
123
115
|
continue
|
|
124
116
|
}
|
|
125
|
-
const index = otherTable.relatedFormula.indexOf(
|
|
117
|
+
const index = otherTable.relatedFormula.indexOf(table._id)
|
|
126
118
|
if (index !== -1) {
|
|
127
119
|
otherTable.relatedFormula.splice(index, 1)
|
|
128
120
|
}
|
|
@@ -141,11 +133,11 @@ async function updateRelatedFormulaLinksOnTables(
|
|
|
141
133
|
if (
|
|
142
134
|
relatedTable &&
|
|
143
135
|
(!relatedTable.relatedFormula ||
|
|
144
|
-
!relatedTable.relatedFormula.includes(
|
|
136
|
+
!relatedTable.relatedFormula.includes(table._id))
|
|
145
137
|
) {
|
|
146
138
|
relatedTable.relatedFormula = relatedTable.relatedFormula
|
|
147
|
-
? [...relatedTable.relatedFormula,
|
|
148
|
-
: [
|
|
139
|
+
? [...relatedTable.relatedFormula, table._id]
|
|
140
|
+
: [table._id]
|
|
149
141
|
}
|
|
150
142
|
}
|
|
151
143
|
}
|
|
@@ -158,10 +150,7 @@ async function updateRelatedFormulaLinksOnTables(
|
|
|
158
150
|
}
|
|
159
151
|
}
|
|
160
152
|
|
|
161
|
-
async function checkIfFormulaUpdated(
|
|
162
|
-
table: Table,
|
|
163
|
-
{ oldTable }: { oldTable?: Table }
|
|
164
|
-
) {
|
|
153
|
+
async function checkIfFormulaUpdated(table, { oldTable }) {
|
|
165
154
|
// look to see if any formula values have changed
|
|
166
155
|
const shouldUpdate = Object.values(table.schema).find(
|
|
167
156
|
column =>
|
|
@@ -176,10 +165,7 @@ async function checkIfFormulaUpdated(
|
|
|
176
165
|
}
|
|
177
166
|
}
|
|
178
167
|
|
|
179
|
-
|
|
180
|
-
table: Table,
|
|
181
|
-
{ oldTable, deletion }: { oldTable?: Table; deletion?: boolean }
|
|
182
|
-
) {
|
|
168
|
+
exports.runStaticFormulaChecks = async (table, { oldTable, deletion }) => {
|
|
183
169
|
await updateRelatedFormulaLinksOnTables(table, { deletion })
|
|
184
170
|
await checkIfFormulaNeedsCleared(table, { oldTable, deletion })
|
|
185
171
|
if (!deletion) {
|
|
@@ -1,47 +1,38 @@
|
|
|
1
|
-
|
|
1
|
+
const {
|
|
2
2
|
buildExternalTableId,
|
|
3
3
|
breakExternalTableId,
|
|
4
|
-
}
|
|
5
|
-
|
|
4
|
+
} = require("../../../integrations/utils")
|
|
5
|
+
const {
|
|
6
6
|
generateForeignKey,
|
|
7
7
|
generateJunctionTableName,
|
|
8
8
|
foreignKeyStructure,
|
|
9
9
|
hasTypeChanged,
|
|
10
|
-
}
|
|
11
|
-
|
|
10
|
+
} = require("./utils")
|
|
11
|
+
const {
|
|
12
12
|
DataSourceOperation,
|
|
13
13
|
FieldTypes,
|
|
14
14
|
RelationshipTypes,
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
import csvParser from "../../../utilities/csvParser"
|
|
18
|
-
import { handleRequest } from "../row/external"
|
|
19
|
-
import { events, context } from "@budibase/backend-core"
|
|
20
|
-
import {
|
|
21
|
-
Datasource,
|
|
22
|
-
Table,
|
|
23
|
-
QueryJson,
|
|
24
|
-
Operation,
|
|
25
|
-
RenameColumn,
|
|
26
|
-
FieldSchema,
|
|
27
|
-
BBContext,
|
|
28
|
-
TableRequest,
|
|
29
|
-
} from "@budibase/types"
|
|
30
|
-
import sdk from "../../../sdk"
|
|
15
|
+
} = require("../../../constants")
|
|
16
|
+
const { makeExternalQuery } = require("../../../integrations/base/query")
|
|
31
17
|
const { cloneDeep } = require("lodash/fp")
|
|
18
|
+
const csvParser = require("../../../utilities/csvParser")
|
|
19
|
+
const { handleRequest } = require("../row/external")
|
|
20
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
21
|
+
const { events } = require("@budibase/backend-core")
|
|
22
|
+
const sdk = require("../../../sdk")
|
|
32
23
|
|
|
33
24
|
async function makeTableRequest(
|
|
34
|
-
datasource
|
|
35
|
-
operation
|
|
36
|
-
table
|
|
37
|
-
tables
|
|
38
|
-
oldTable
|
|
39
|
-
renamed
|
|
25
|
+
datasource,
|
|
26
|
+
operation,
|
|
27
|
+
table,
|
|
28
|
+
tables,
|
|
29
|
+
oldTable = null,
|
|
30
|
+
renamed = null
|
|
40
31
|
) {
|
|
41
|
-
const json
|
|
32
|
+
const json = {
|
|
42
33
|
endpoint: {
|
|
43
|
-
datasourceId: datasource._id
|
|
44
|
-
entityId: table._id
|
|
34
|
+
datasourceId: datasource._id,
|
|
35
|
+
entityId: table._id,
|
|
45
36
|
operation,
|
|
46
37
|
},
|
|
47
38
|
meta: {
|
|
@@ -50,19 +41,15 @@ async function makeTableRequest(
|
|
|
50
41
|
table,
|
|
51
42
|
}
|
|
52
43
|
if (oldTable) {
|
|
53
|
-
json.meta
|
|
44
|
+
json.meta.table = oldTable
|
|
54
45
|
}
|
|
55
46
|
if (renamed) {
|
|
56
|
-
json.meta
|
|
47
|
+
json.meta.renamed = renamed
|
|
57
48
|
}
|
|
58
49
|
return makeExternalQuery(datasource, json)
|
|
59
50
|
}
|
|
60
51
|
|
|
61
|
-
function cleanupRelationships(
|
|
62
|
-
table: Table,
|
|
63
|
-
tables: Record<string, Table>,
|
|
64
|
-
oldTable?: Table
|
|
65
|
-
) {
|
|
52
|
+
function cleanupRelationships(table, tables, oldTable = null) {
|
|
66
53
|
const tableToIterate = oldTable ? oldTable : table
|
|
67
54
|
// clean up relationships in couch table schemas
|
|
68
55
|
for (let [key, schema] of Object.entries(tableToIterate.schema)) {
|
|
@@ -91,7 +78,7 @@ function cleanupRelationships(
|
|
|
91
78
|
}
|
|
92
79
|
}
|
|
93
80
|
|
|
94
|
-
function getDatasourceId(table
|
|
81
|
+
function getDatasourceId(table) {
|
|
95
82
|
if (!table) {
|
|
96
83
|
throw "No table supplied"
|
|
97
84
|
}
|
|
@@ -101,7 +88,7 @@ function getDatasourceId(table: Table) {
|
|
|
101
88
|
return breakExternalTableId(table._id).datasourceId
|
|
102
89
|
}
|
|
103
90
|
|
|
104
|
-
function otherRelationshipType(type
|
|
91
|
+
function otherRelationshipType(type) {
|
|
105
92
|
if (type === RelationshipTypes.MANY_TO_MANY) {
|
|
106
93
|
return RelationshipTypes.MANY_TO_MANY
|
|
107
94
|
}
|
|
@@ -110,21 +97,13 @@ function otherRelationshipType(type?: string) {
|
|
|
110
97
|
: RelationshipTypes.ONE_TO_MANY
|
|
111
98
|
}
|
|
112
99
|
|
|
113
|
-
function generateManyLinkSchema(
|
|
114
|
-
datasource: Datasource,
|
|
115
|
-
column: FieldSchema,
|
|
116
|
-
table: Table,
|
|
117
|
-
relatedTable: Table
|
|
118
|
-
): Table {
|
|
119
|
-
if (!table.primary || !relatedTable.primary) {
|
|
120
|
-
throw new Error("Unable to generate many link schema, no primary keys")
|
|
121
|
-
}
|
|
100
|
+
function generateManyLinkSchema(datasource, column, table, relatedTable) {
|
|
122
101
|
const primary = table.name + table.primary[0]
|
|
123
102
|
const relatedPrimary = relatedTable.name + relatedTable.primary[0]
|
|
124
103
|
const jcTblName = generateJunctionTableName(column, table, relatedTable)
|
|
125
104
|
// first create the new table
|
|
126
105
|
const junctionTable = {
|
|
127
|
-
_id: buildExternalTableId(datasource._id
|
|
106
|
+
_id: buildExternalTableId(datasource._id, jcTblName),
|
|
128
107
|
name: jcTblName,
|
|
129
108
|
primary: [primary, relatedPrimary],
|
|
130
109
|
constrained: [primary, relatedPrimary],
|
|
@@ -146,15 +125,7 @@ function generateManyLinkSchema(
|
|
|
146
125
|
return junctionTable
|
|
147
126
|
}
|
|
148
127
|
|
|
149
|
-
function generateLinkSchema(
|
|
150
|
-
column: FieldSchema,
|
|
151
|
-
table: Table,
|
|
152
|
-
relatedTable: Table,
|
|
153
|
-
type: string
|
|
154
|
-
) {
|
|
155
|
-
if (!table.primary || !relatedTable.primary) {
|
|
156
|
-
throw new Error("Unable to generate link schema, no primary keys")
|
|
157
|
-
}
|
|
128
|
+
function generateLinkSchema(column, table, relatedTable, type) {
|
|
158
129
|
const isOneSide = type === RelationshipTypes.ONE_TO_MANY
|
|
159
130
|
const primary = isOneSide ? relatedTable.primary[0] : table.primary[0]
|
|
160
131
|
// generate a foreign key
|
|
@@ -165,12 +136,7 @@ function generateLinkSchema(
|
|
|
165
136
|
return foreignKey
|
|
166
137
|
}
|
|
167
138
|
|
|
168
|
-
function generateRelatedSchema(
|
|
169
|
-
linkColumn: FieldSchema,
|
|
170
|
-
table: Table,
|
|
171
|
-
relatedTable: Table,
|
|
172
|
-
columnName: string
|
|
173
|
-
) {
|
|
139
|
+
function generateRelatedSchema(linkColumn, table, relatedTable, columnName) {
|
|
174
140
|
// generate column for other table
|
|
175
141
|
const relatedSchema = cloneDeep(linkColumn)
|
|
176
142
|
// swap them from the main link
|
|
@@ -193,21 +159,21 @@ function generateRelatedSchema(
|
|
|
193
159
|
table.schema[columnName] = relatedSchema
|
|
194
160
|
}
|
|
195
161
|
|
|
196
|
-
function isRelationshipSetup(column
|
|
162
|
+
function isRelationshipSetup(column) {
|
|
197
163
|
return column.foreignKey || column.through
|
|
198
164
|
}
|
|
199
165
|
|
|
200
|
-
|
|
201
|
-
const table
|
|
202
|
-
const renamed = table
|
|
166
|
+
exports.save = async function (ctx) {
|
|
167
|
+
const table = ctx.request.body
|
|
168
|
+
const { _rename: renamed } = table
|
|
203
169
|
// can't do this right now
|
|
204
170
|
delete table.dataImport
|
|
205
|
-
const datasourceId = getDatasourceId(ctx.request.body)
|
|
171
|
+
const datasourceId = getDatasourceId(ctx.request.body)
|
|
206
172
|
// table doesn't exist already, note that it is created
|
|
207
173
|
if (!table._id) {
|
|
208
174
|
table.created = true
|
|
209
175
|
}
|
|
210
|
-
let tableToSave
|
|
176
|
+
let tableToSave = {
|
|
211
177
|
type: "table",
|
|
212
178
|
_id: buildExternalTableId(datasourceId, table.name),
|
|
213
179
|
...table,
|
|
@@ -222,10 +188,13 @@ export async function save(ctx: BBContext) {
|
|
|
222
188
|
ctx.throw(400, "A column type has changed.")
|
|
223
189
|
}
|
|
224
190
|
|
|
225
|
-
const db =
|
|
191
|
+
const db = getAppDB()
|
|
226
192
|
const datasource = await db.get(datasourceId)
|
|
193
|
+
if (!datasource.entities) {
|
|
194
|
+
datasource.entities = {}
|
|
195
|
+
}
|
|
227
196
|
const oldTables = cloneDeep(datasource.entities)
|
|
228
|
-
const tables
|
|
197
|
+
const tables = datasource.entities
|
|
229
198
|
|
|
230
199
|
const extraTablesToUpdate = []
|
|
231
200
|
|
|
@@ -237,11 +206,8 @@ export async function save(ctx: BBContext) {
|
|
|
237
206
|
const relatedTable = Object.values(tables).find(
|
|
238
207
|
table => table._id === schema.tableId
|
|
239
208
|
)
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
}
|
|
243
|
-
const relatedColumnName = schema.fieldName!
|
|
244
|
-
const relationType = schema.relationshipType!
|
|
209
|
+
const relatedColumnName = schema.fieldName
|
|
210
|
+
const relationType = schema.relationshipType
|
|
245
211
|
if (relationType === RelationshipTypes.MANY_TO_MANY) {
|
|
246
212
|
const junctionTable = generateManyLinkSchema(
|
|
247
213
|
datasource,
|
|
@@ -281,7 +247,9 @@ export async function save(ctx: BBContext) {
|
|
|
281
247
|
|
|
282
248
|
cleanupRelationships(tableToSave, tables, oldTable)
|
|
283
249
|
|
|
284
|
-
const operation = oldTable
|
|
250
|
+
const operation = oldTable
|
|
251
|
+
? DataSourceOperation.UPDATE_TABLE
|
|
252
|
+
: DataSourceOperation.CREATE_TABLE
|
|
285
253
|
await makeTableRequest(
|
|
286
254
|
datasource,
|
|
287
255
|
operation,
|
|
@@ -293,7 +261,9 @@ export async function save(ctx: BBContext) {
|
|
|
293
261
|
// update any extra tables (like foreign keys in other tables)
|
|
294
262
|
for (let extraTable of extraTablesToUpdate) {
|
|
295
263
|
const oldExtraTable = oldTables[extraTable.name]
|
|
296
|
-
let op = oldExtraTable
|
|
264
|
+
let op = oldExtraTable
|
|
265
|
+
? DataSourceOperation.UPDATE_TABLE
|
|
266
|
+
: DataSourceOperation.CREATE_TABLE
|
|
297
267
|
await makeTableRequest(datasource, op, extraTable, tables, oldExtraTable)
|
|
298
268
|
}
|
|
299
269
|
|
|
@@ -313,20 +283,18 @@ export async function save(ctx: BBContext) {
|
|
|
313
283
|
return tableToSave
|
|
314
284
|
}
|
|
315
285
|
|
|
316
|
-
|
|
317
|
-
const tableToDelete
|
|
318
|
-
ctx.params.tableId
|
|
319
|
-
)
|
|
286
|
+
exports.destroy = async function (ctx) {
|
|
287
|
+
const tableToDelete = await sdk.tables.getTable(ctx.params.tableId)
|
|
320
288
|
if (!tableToDelete || !tableToDelete.created) {
|
|
321
289
|
ctx.throw(400, "Cannot delete tables which weren't created in Budibase.")
|
|
322
290
|
}
|
|
323
291
|
const datasourceId = getDatasourceId(tableToDelete)
|
|
324
292
|
|
|
325
|
-
const db =
|
|
293
|
+
const db = getAppDB()
|
|
326
294
|
const datasource = await db.get(datasourceId)
|
|
327
295
|
const tables = datasource.entities
|
|
328
296
|
|
|
329
|
-
const operation =
|
|
297
|
+
const operation = DataSourceOperation.DELETE_TABLE
|
|
330
298
|
await makeTableRequest(datasource, operation, tableToDelete, tables)
|
|
331
299
|
|
|
332
300
|
cleanupRelationships(tableToDelete, tables)
|
|
@@ -337,7 +305,7 @@ export async function destroy(ctx: BBContext) {
|
|
|
337
305
|
return tableToDelete
|
|
338
306
|
}
|
|
339
307
|
|
|
340
|
-
|
|
308
|
+
exports.bulkImport = async function (ctx) {
|
|
341
309
|
const table = await sdk.tables.getTable(ctx.params.tableId)
|
|
342
310
|
const { dataImport } = ctx.request.body
|
|
343
311
|
if (!dataImport || !dataImport.schema || !dataImport.csvString) {
|