@budibase/server 2.1.43-alpha.6 → 2.1.44
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.2d05742a.js +1021 -0
- package/builder/assets/index.534f6c29.css +6 -0
- package/builder/index.html +2 -2
- package/coverage/clover.xml +3857 -10913
- package/coverage/coverage-final.json +118 -267
- package/coverage/lcov-report/{src/api/controllers/apikeys.ts.html → api/controllers/apikeys.js.html} +30 -30
- package/coverage/lcov-report/{src/api/controllers/automation.ts.html → api/controllers/automation.js.html} +99 -99
- package/coverage/lcov-report/{src/api/controllers/cloud.ts.html → api/controllers/cloud.js.html} +58 -58
- package/coverage/lcov-report/{src/api/controllers/datasource.ts.html → api/controllers/datasource.js.html} +107 -287
- package/coverage/lcov-report/{src/api/controllers/dev.ts.html → api/controllers/dev.js.html} +87 -69
- package/coverage/lcov-report/api/controllers/index.html +326 -0
- package/coverage/lcov-report/{src/middleware/selfhost.ts.html → api/controllers/integration.js.html} +28 -22
- package/coverage/lcov-report/{src/api/controllers/layout.ts.html → api/controllers/layout.js.html} +31 -31
- package/coverage/lcov-report/{src/api/controllers/metadata.ts.html → api/controllers/metadata.js.html} +30 -33
- package/coverage/lcov-report/{src/api/controllers/migrations.ts.html → api/controllers/migrations.js.html} +17 -20
- package/coverage/lcov-report/{src/api/controllers/permission.ts.html → api/controllers/permission.js.html} +79 -88
- 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} +25 -25
- package/coverage/lcov-report/{src/api/controllers/role.ts.html → api/controllers/role.js.html} +60 -48
- package/coverage/lcov-report/{src/api/controllers/routing.ts.html → api/controllers/routing.js.html} +58 -67
- package/coverage/lcov-report/{src/api/controllers/row/external.ts.html → api/controllers/row/external.js.html} +111 -162
- package/coverage/lcov-report/{src/api → api}/controllers/row/index.html +52 -82
- package/coverage/lcov-report/{src/api/controllers/row/internal.ts.html → api/controllers/row/internal.js.html} +121 -163
- package/coverage/lcov-report/{src/api/controllers/row/internalSearch.ts.html → api/controllers/row/internalSearch.js.html} +117 -189
- package/coverage/lcov-report/{src/api/controllers/row/staticFormula.ts.html → api/controllers/row/staticFormula.js.html} +58 -73
- package/coverage/lcov-report/{src/api/controllers/row/utils.ts.html → api/controllers/row/utils.js.html} +58 -88
- package/coverage/lcov-report/{src/api/controllers/script.ts.html → api/controllers/script.js.html} +16 -19
- package/coverage/lcov-report/{src/api/controllers/table/bulkFormula.ts.html → api/controllers/table/bulkFormula.js.html} +62 -104
- package/coverage/lcov-report/{src/api/controllers/table/external.ts.html → api/controllers/table/external.js.html} +111 -204
- 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} +49 -58
- package/coverage/lcov-report/{src/api/controllers/templates.ts.html → api/controllers/templates.js.html} +29 -38
- package/coverage/lcov-report/{src/api/controllers/user.ts.html → api/controllers/user.js.html} +99 -93
- package/coverage/lcov-report/{src/api/controllers/view/exporters.ts.html → api/controllers/view/exporters.js.html} +16 -22
- package/coverage/lcov-report/{src/api → api}/controllers/view/index.html +36 -36
- package/coverage/lcov-report/{src/api/controllers/view/index.ts.html → api/controllers/view/index.js.html} +64 -91
- package/coverage/lcov-report/{src/api/controllers/view/utils.ts.html → api/controllers/view/utils.js.html} +54 -72
- package/coverage/lcov-report/{src/api/controllers/view/viewBuilder.ts.html → api/controllers/view/viewBuilder.js.html} +36 -78
- package/coverage/lcov-report/{src/api → api}/index.html +23 -23
- package/coverage/lcov-report/{src/api/index.ts.html → api/index.js.html} +76 -55
- package/coverage/lcov-report/{src/middleware/utils.ts.html → api/routes/analytics.js.html} +19 -19
- package/coverage/lcov-report/api/routes/apikeys.js.html +121 -0
- package/coverage/lcov-report/{src/api/routes/automation.ts.html → api/routes/automation.js.html} +47 -53
- package/coverage/lcov-report/{src/api/routes/backup.ts.html → api/routes/cloud.js.html} +28 -28
- package/coverage/lcov-report/{src/api/routes/component.ts.html → api/routes/component.js.html} +24 -24
- package/coverage/lcov-report/{src/definitions/datasource.ts.html → api/routes/datasource.js.html} +64 -61
- package/coverage/lcov-report/{src/api/routes/cloud.ts.html → api/routes/deploy.js.html} +28 -31
- package/coverage/lcov-report/{src/automations/index.ts.html → api/routes/dev.js.html} +46 -46
- package/coverage/lcov-report/{src/api → api}/routes/index.html +47 -167
- package/coverage/lcov-report/api/routes/integration.js.html +121 -0
- package/coverage/lcov-report/{src/db/index.ts.html → api/routes/layout.js.html} +28 -28
- package/coverage/lcov-report/{src/api/routes/metadata.ts.html → api/routes/metadata.js.html} +31 -31
- package/coverage/lcov-report/{src/sdk/index.ts.html → api/routes/migrations.js.html} +21 -24
- package/coverage/lcov-report/{src/api/routes/permission.ts.html → api/routes/permission.js.html} +31 -55
- package/coverage/lcov-report/{src/api/routes/query.ts.html → api/routes/query.js.html} +50 -41
- 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} +24 -24
- 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} +41 -32
- package/coverage/lcov-report/{src/api/routes/templates.ts.html → api/routes/templates.js.html} +25 -25
- package/coverage/lcov-report/{src/api/routes/user.ts.html → api/routes/user.js.html} +41 -35
- 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} +98 -86
- package/coverage/lcov-report/{src/api/routes/view.ts.html → api/routes/view.js.html} +36 -45
- package/coverage/lcov-report/{src/automations/actions.ts.html → automations/actions.js.html} +60 -69
- package/coverage/lcov-report/{src/automations/automationUtils.ts.html → automations/automationUtils.js.html} +33 -36
- package/coverage/lcov-report/{src/automations/bullboard.ts.html → automations/bullboard.js.html} +42 -39
- package/coverage/lcov-report/{src/automations → automations}/index.html +48 -63
- package/coverage/lcov-report/{src/websocket.ts.html → automations/index.js.html} +50 -41
- package/coverage/lcov-report/{src/automations/steps/bash.ts.html → automations/steps/bash.js.html} +30 -45
- package/coverage/lcov-report/{src/automations/steps/delay.ts.html → automations/steps/delay.js.html} +19 -34
- package/coverage/lcov-report/{src/automations/steps/discord.ts.html → automations/steps/discord.js.html} +28 -43
- package/coverage/lcov-report/{src/automations/steps/executeQuery.ts.html → automations/steps/executeQuery.js.html} +30 -45
- package/coverage/lcov-report/{src/automations/steps/executeScript.ts.html → automations/steps/executeScript.js.html} +28 -58
- package/coverage/lcov-report/{src/automations/steps/filter.ts.html → automations/steps/filter.js.html} +30 -39
- package/coverage/lcov-report/automations/steps/index.html +341 -0
- package/coverage/lcov-report/{src/automations/steps/integromat.ts.html → automations/steps/integromat.js.html} +23 -38
- package/coverage/lcov-report/{src/automations/steps/loop.ts.html → automations/steps/loop.js.html} +15 -21
- package/coverage/lcov-report/{src/automations/steps/outgoingWebhook.ts.html → automations/steps/outgoingWebhook.js.html} +39 -54
- package/coverage/lcov-report/{src/automations/steps/queryRows.ts.html → automations/steps/queryRows.js.html} +66 -102
- package/coverage/lcov-report/{src/automations/steps/sendSmtpEmail.ts.html → automations/steps/sendSmtpEmail.js.html} +25 -40
- package/coverage/lcov-report/{src/automations/steps/serverLog.ts.html → automations/steps/serverLog.js.html} +22 -40
- package/coverage/lcov-report/{src/automations/steps/slack.ts.html → automations/steps/slack.js.html} +23 -38
- package/coverage/lcov-report/{src/automations/steps/updateRow.ts.html → automations/steps/updateRow.js.html} +25 -40
- package/coverage/lcov-report/{src/automations/steps/utils.ts.html → automations/steps/utils.js.html} +27 -45
- package/coverage/lcov-report/{src/automations/steps/zapier.ts.html → automations/steps/zapier.js.html} +23 -41
- package/coverage/lcov-report/{src/definitions/automations.ts.html → automations/triggerInfo/app.js.html} +42 -42
- package/coverage/lcov-report/{src/automations/triggerInfo/cron.ts.html → automations/triggerInfo/cron.js.html} +15 -30
- package/coverage/lcov-report/{src/automations → automations}/triggerInfo/index.html +31 -31
- package/coverage/lcov-report/{src/api/routes/layout.ts.html → automations/triggerInfo/index.js.html} +26 -29
- package/coverage/lcov-report/{src/automations/triggerInfo/rowDeleted.ts.html → automations/triggerInfo/rowDeleted.js.html} +15 -30
- package/coverage/lcov-report/{src/automations/triggerInfo/rowSaved.ts.html → automations/triggerInfo/rowSaved.js.html} +15 -30
- package/coverage/lcov-report/{src/automations/triggerInfo/rowUpdated.ts.html → automations/triggerInfo/rowUpdated.js.html} +15 -30
- package/coverage/lcov-report/{src/automations/triggerInfo/webhook.ts.html → automations/triggerInfo/webhook.js.html} +15 -30
- package/coverage/lcov-report/{src/automations/triggers.ts.html → automations/triggers.js.html} +66 -78
- package/coverage/lcov-report/{src/constants → constants}/index.html +26 -26
- package/coverage/lcov-report/{src/integrations/dynamodb.ts.html → constants/index.js.html} +227 -263
- package/coverage/lcov-report/{src/constants/layouts.ts.html → constants/layouts.js.html} +36 -18
- package/coverage/lcov-report/{src/constants/screens.ts.html → constants/screens.js.html} +58 -64
- package/coverage/lcov-report/{src/db/inMemoryView.ts.html → db/inMemoryView.js.html} +29 -47
- package/coverage/lcov-report/{src/db → db}/index.html +33 -48
- package/coverage/lcov-report/{src/api/routes/integration.ts.html → db/index.js.html} +33 -33
- package/coverage/lcov-report/{src/db/linkedRows/LinkController.ts.html → db/linkedRows/LinkController.js.html} +160 -97
- package/coverage/lcov-report/db/linkedRows/index.html +146 -0
- package/coverage/lcov-report/{src/db/linkedRows/index.ts.html → db/linkedRows/index.js.html} +78 -93
- package/coverage/lcov-report/{src/db/linkedRows/linkUtils.ts.html → db/linkedRows/linkUtils.js.html} +56 -83
- package/coverage/lcov-report/{src/db/newid.ts.html → db/newid.js.html} +14 -14
- package/coverage/lcov-report/{src/db/utils.ts.html → db/utils.js.html} +211 -163
- package/coverage/lcov-report/{src/events/AutomationEmitter.ts.html → events/AutomationEmitter.js.html} +25 -40
- package/coverage/lcov-report/{src/events → events}/index.html +33 -48
- package/coverage/lcov-report/{src/events/BudibaseEmitter.ts.html → events/index.js.html} +29 -26
- package/coverage/lcov-report/{src/api/routes/dev.ts.html → events/utils.js.html} +69 -69
- package/coverage/lcov-report/index.html +184 -679
- 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} +30 -33
- package/coverage/lcov-report/{src/middleware/builder.ts.html → middleware/builder.js.html} +40 -46
- package/coverage/lcov-report/{src/middleware/currentapp.ts.html → middleware/currentapp.js.html} +72 -81
- 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} +27 -27
- package/coverage/lcov-report/{src/middleware/resourceId.ts.html → middleware/resourceId.js.html} +45 -60
- package/coverage/lcov-report/{src/tests/utilities/index.ts.html → middleware/selfhost.js.html} +30 -33
- package/coverage/lcov-report/{src/events/index.ts.html → middleware/utils.js.html} +24 -18
- package/coverage/lcov-report/{src/utilities/budibaseDir.ts.html → utilities/budibaseDir.js.html} +14 -14
- package/coverage/lcov-report/{src/utilities/centralPath.ts.html → utilities/centralPath.js.html} +16 -16
- package/coverage/lcov-report/{src/utilities/csvParser.ts.html → utilities/csvParser.js.html} +59 -107
- package/coverage/lcov-report/{src/utilities/global.ts.html → utilities/global.js.html} +82 -115
- package/coverage/lcov-report/{src/utilities → utilities}/index.html +77 -92
- package/coverage/lcov-report/{src/utilities/index.ts.html → utilities/index.js.html} +74 -98
- package/coverage/lcov-report/{src/utilities/plugins.ts.html → utilities/plugins.js.html} +22 -25
- package/coverage/lcov-report/{src/integrations/airtable.ts.html → utilities/queue/inMemoryQueue.js.html} +135 -213
- package/coverage/lcov-report/{src/migrations → utilities/queue}/index.html +23 -23
- package/coverage/lcov-report/{src/sdk → utilities/routing}/index.html +10 -10
- package/coverage/lcov-report/{src/api/controllers/public/mapping/tables.ts.html → utilities/routing/index.js.html} +43 -46
- package/coverage/lcov-report/{src/definitions → utilities/rowProcessor}/index.html +34 -34
- package/coverage/lcov-report/{src/utilities/rowProcessor/index.ts.html → utilities/rowProcessor/index.js.html} +359 -128
- package/coverage/lcov-report/{src/utilities/rowProcessor/utils.ts.html → utilities/rowProcessor/utils.js.html} +42 -54
- package/coverage/lcov-report/{src/utilities/scriptRunner.ts.html → utilities/scriptRunner.js.html} +19 -31
- package/coverage/lcov-report/{src/utilities/security.ts.html → utilities/security.js.html} +78 -60
- package/coverage/lcov-report/{src/utilities/statusCodes.ts.html → utilities/statusCodes.js.html} +11 -11
- package/coverage/lcov-report/{src/utilities → utilities}/usageQuota/index.html +28 -28
- package/coverage/lcov-report/{src/utilities/usageQuota/rows.ts.html → utilities/usageQuota/rows.js.html} +48 -36
- package/coverage/lcov-report/{src/utilities/usageQuota/usageQuoteReset.ts.html → utilities/usageQuota/usageQuoteReset.js.html} +13 -13
- package/coverage/lcov-report/{src/utilities/users.ts.html → utilities/users.js.html} +40 -34
- package/coverage/lcov-report/{src/utilities/workerRequests.ts.html → utilities/workerRequests.js.html} +112 -127
- package/coverage/lcov.info +7069 -19757
- package/dist/api/controllers/apikeys.js +9 -12
- package/dist/api/controllers/application.js +45 -48
- package/dist/api/controllers/automation.js +82 -122
- package/dist/api/controllers/cloud.js +71 -84
- package/dist/api/controllers/component.js +2 -4
- package/dist/api/controllers/datasource.js +94 -151
- 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/integration.js +8 -11
- package/dist/api/controllers/layout.js +15 -18
- package/dist/api/controllers/metadata.js +37 -51
- package/dist/api/controllers/migrations.js +11 -19
- package/dist/api/controllers/permission.js +43 -52
- package/dist/api/controllers/plugin/index.js +7 -6
- package/dist/api/controllers/plugin/utils.js +1 -2
- package/dist/api/controllers/public/applications.js +9 -17
- package/dist/api/controllers/public/tables.js +9 -29
- package/dist/api/controllers/public/utils.js +2 -2
- 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 +542 -539
- package/dist/api/controllers/row/external.js +190 -258
- package/dist/api/controllers/row/index.js +14 -43
- package/dist/api/controllers/row/internal.js +295 -354
- package/dist/api/controllers/row/internalSearch.js +80 -95
- package/dist/api/controllers/row/staticFormula.js +112 -125
- package/dist/api/controllers/row/utils.js +84 -122
- package/dist/api/controllers/screen.js +66 -81
- package/dist/api/controllers/script.js +6 -13
- package/dist/api/controllers/static/index.js +14 -11
- package/dist/api/controllers/table/bulkFormula.js +35 -47
- package/dist/api/controllers/table/external.js +53 -89
- package/dist/api/controllers/table/index.js +31 -64
- 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/controllers/view/viewBuilder.js +16 -4
- package/dist/api/controllers/webhook.js +2 -25
- 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 -33
- 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 +11 -11
- 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/tests/utilities/index.js +32 -69
- 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 +22 -22
- package/dist/automations/actions.js +24 -53
- package/dist/automations/automationUtils.js +19 -31
- package/dist/automations/bullboard.js +29 -59
- package/dist/automations/index.js +18 -23
- package/dist/automations/steps/bash.js +10 -40
- package/dist/automations/steps/createRow.js +1 -2
- package/dist/automations/steps/delay.js +5 -9
- package/dist/automations/steps/deleteRow.js +1 -2
- package/dist/automations/steps/discord.js +7 -14
- package/dist/automations/steps/executeQuery.js +7 -34
- package/dist/automations/steps/executeScript.js +7 -34
- package/dist/automations/steps/filter.js +18 -20
- package/dist/automations/steps/integromat.js +7 -14
- package/dist/automations/steps/loop.js +1 -4
- package/dist/automations/steps/outgoingWebhook.js +14 -45
- package/dist/automations/steps/queryRows.js +38 -71
- package/dist/automations/steps/sendSmtpEmail.js +6 -33
- package/dist/automations/steps/serverLog.js +8 -12
- package/dist/automations/steps/slack.js +7 -14
- package/dist/automations/steps/updateRow.js +7 -34
- package/dist/automations/steps/utils.js +16 -22
- package/dist/automations/steps/zapier.js +7 -15
- package/dist/automations/tests/utilities/index.js +38 -62
- package/dist/automations/triggerInfo/app.js +1 -4
- package/dist/automations/triggerInfo/cron.js +1 -4
- package/dist/automations/triggerInfo/index.js +6 -31
- package/dist/automations/triggerInfo/rowDeleted.js +1 -4
- package/dist/automations/triggerInfo/rowSaved.js +1 -4
- package/dist/automations/triggerInfo/rowUpdated.js +1 -4
- package/dist/automations/triggerInfo/webhook.js +1 -4
- package/dist/automations/triggers.js +57 -90
- package/dist/automations/utils.js +8 -9
- package/dist/constants/index.js +104 -118
- package/dist/constants/layouts.js +10 -7
- package/dist/constants/screens.js +44 -49
- package/dist/db/dynamoClient.js +20 -20
- package/dist/db/inMemoryView.js +38 -47
- package/dist/db/index.js +4 -7
- package/dist/db/linkedRows/LinkController.js +70 -51
- package/dist/db/linkedRows/index.js +81 -93
- package/dist/db/linkedRows/linkUtils.js +32 -42
- package/dist/db/utils.js +119 -146
- package/dist/db/views/staticViews.js +74 -91
- package/dist/environment.js +6 -9
- package/dist/events/AutomationEmitter.js +10 -13
- package/dist/events/index.js +23 -5
- package/dist/events/utils.js +10 -18
- package/dist/integrations/elasticsearch.js +2 -26
- package/dist/integrations/googlesheets.js +6 -5
- package/dist/integrations/index.js +6 -15
- package/dist/integrations/microsoftSqlServer.js +3 -8
- package/dist/integrations/oracle.js +1 -8
- package/dist/integrations/postgres.js +3 -6
- package/dist/integrations/s3.js +1 -157
- package/dist/integrations/tests/TestConfiguration.js +1 -0
- 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/migrations/index.js +0 -5
- package/dist/package.json +45 -11
- 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 +10 -10
- package/dist/tests/utilities/TestConfiguration.js +87 -111
- package/dist/tests/utilities/controllers.js +15 -38
- package/dist/tests/utilities/structures.js +53 -72
- package/dist/threads/automation.js +27 -49
- package/dist/threads/query.js +19 -17
- package/dist/threads/utils.js +8 -33
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utilities/budibaseDir.js +2 -4
- package/dist/utilities/centralPath.js +7 -14
- package/dist/utilities/csvParser.js +21 -27
- package/dist/utilities/fileSystem/clientLibrary.js +73 -87
- package/dist/utilities/fileSystem/index.js +175 -203
- package/dist/utilities/fileSystem/processor.js +3 -8
- 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/plugins.js +9 -15
- package/dist/utilities/queue/inMemoryQueue.js +126 -0
- package/dist/utilities/redis.js +65 -100
- package/dist/utilities/routing/index.js +23 -27
- package/dist/utilities/rowProcessor/index.js +191 -133
- package/dist/utilities/rowProcessor/utils.js +26 -35
- package/dist/utilities/scriptRunner.js +5 -8
- 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 +46 -12
- package/scripts/exportAppTemplate.js +2 -2
- package/scripts/integrations/mssql/data/setup.sql +3 -3
- 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} +49 -109
- 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/integration.js +14 -0
- package/src/api/controllers/{layout.ts → layout.js} +8 -8
- package/src/api/controllers/{metadata.ts → metadata.js} +10 -11
- package/src/api/controllers/migrations.js +13 -0
- package/src/api/controllers/{permission.ts → permission.js} +46 -49
- package/src/api/controllers/plugin/index.ts +5 -4
- package/src/api/controllers/plugin/utils.ts +5 -3
- package/src/api/controllers/public/applications.ts +9 -15
- package/src/api/controllers/public/rows.ts +1 -1
- package/src/api/controllers/public/tables.ts +2 -2
- package/src/api/controllers/public/utils.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 +624 -605
- package/src/api/controllers/row/{external.ts → external.js} +62 -79
- package/src/api/controllers/row/index.ts +11 -19
- package/src/api/controllers/row/{internal.ts → internal.js} +73 -87
- package/src/api/controllers/row/{internalSearch.ts → internalSearch.js} +68 -92
- package/src/api/controllers/row/{staticFormula.ts → staticFormula.js} +25 -30
- package/src/api/controllers/row/{utils.ts → utils.js} +22 -32
- package/src/api/controllers/screen.ts +6 -10
- package/src/api/controllers/script.js +11 -0
- package/src/api/controllers/static/index.ts +16 -14
- package/src/api/controllers/table/{bulkFormula.ts → bulkFormula.js} +25 -39
- package/src/api/controllers/table/{external.ts → external.js} +55 -86
- package/src/api/controllers/table/{index.ts → index.js} +18 -21
- 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/controllers/view/{viewBuilder.ts → viewBuilder.js} +11 -25
- package/src/api/controllers/webhook.ts +1 -1
- 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 +14 -11
- 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/deployment.spec.ts +1 -1
- 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 +36 -40
- package/src/api/routes/tests/user.spec.js +1 -2
- package/src/api/routes/tests/utilities/TestFunctions.ts +8 -6
- package/src/api/routes/tests/utilities/{index.ts → index.js} +12 -12
- package/src/api/routes/tests/view.spec.js +3 -3
- 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 +14 -15
- package/src/automations/{actions.ts → actions.js} +23 -26
- package/src/automations/{automationUtils.ts → automationUtils.js} +12 -13
- package/src/automations/bullboard.js +39 -0
- package/src/automations/index.js +29 -0
- package/src/automations/steps/{bash.ts → bash.js} +8 -13
- package/src/automations/steps/createRow.ts +3 -8
- package/src/automations/steps/{delay.ts → delay.js} +4 -9
- package/src/automations/steps/deleteRow.ts +3 -8
- package/src/automations/steps/{discord.ts → discord.js} +5 -10
- package/src/automations/steps/{executeQuery.ts → executeQuery.js} +7 -12
- package/src/automations/steps/{executeScript.ts → executeScript.js} +7 -17
- package/src/automations/steps/{filter.ts → filter.js} +9 -12
- package/src/automations/steps/{integromat.ts → integromat.js} +5 -10
- package/src/automations/steps/{loop.ts → loop.js} +2 -4
- package/src/automations/steps/{outgoingWebhook.ts → outgoingWebhook.js} +13 -18
- package/src/automations/steps/{queryRows.ts → queryRows.js} +36 -48
- package/src/automations/steps/{sendSmtpEmail.ts → sendSmtpEmail.js} +5 -10
- package/src/automations/steps/{serverLog.ts → serverLog.js} +3 -9
- package/src/automations/steps/{slack.ts → slack.js} +5 -10
- package/src/automations/steps/{updateRow.ts → updateRow.js} +7 -12
- package/src/automations/steps/{utils.ts → utils.js} +4 -10
- package/src/automations/steps/{zapier.ts → zapier.js} +5 -11
- package/src/automations/tests/updateRow.spec.js +1 -0
- package/src/automations/tests/utilities/index.js +51 -0
- package/src/automations/triggerInfo/{app.ts → app.js} +2 -7
- package/src/automations/triggerInfo/{cron.ts → cron.js} +2 -7
- package/src/automations/triggerInfo/index.js +15 -0
- package/src/automations/triggerInfo/{rowDeleted.ts → rowDeleted.js} +2 -7
- package/src/automations/triggerInfo/{rowSaved.ts → rowSaved.js} +2 -7
- package/src/automations/triggerInfo/{rowUpdated.ts → rowUpdated.js} +2 -7
- package/src/automations/triggerInfo/{webhook.ts → webhook.js} +2 -7
- package/src/automations/{triggers.ts → triggers.js} +26 -30
- package/src/automations/utils.ts +12 -9
- package/src/constants/index.js +208 -0
- package/src/constants/{layouts.ts → layouts.js} +9 -3
- package/src/constants/screens.js +46 -0
- package/src/db/{dynamoClient.ts → dynamoClient.js} +19 -39
- package/src/db/{inMemoryView.ts → inMemoryView.js} +9 -15
- package/src/db/index.js +16 -0
- package/src/db/linkedRows/{LinkController.ts → LinkController.js} +85 -64
- package/src/db/linkedRows/{index.ts → index.js} +38 -43
- package/src/db/linkedRows/{linkUtils.ts → linkUtils.js} +24 -33
- package/src/db/{newid.ts → newid.js} +1 -1
- 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.ts → staticViews.js} +13 -20
- package/src/{environment.ts → environment.js} +7 -11
- package/src/events/{AutomationEmitter.ts → AutomationEmitter.js} +7 -12
- package/src/events/{BudibaseEmitter.ts → index.js} +8 -7
- package/src/events/utils.js +38 -0
- 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 -5
- package/src/integrations/index.ts +41 -45
- package/src/integrations/microsoftSqlServer.ts +12 -14
- package/src/integrations/mysql.ts +3 -4
- package/src/integrations/oracle.ts +46 -17
- package/src/integrations/postgres.ts +2 -8
- package/src/integrations/s3.ts +3 -179
- package/src/integrations/tests/s3.spec.ts +1 -85
- package/src/integrations/utils.ts +2 -6
- 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/migrations/index.ts +0 -9
- package/src/migrations/tests/index.spec.ts +1 -1
- 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 +5 -5
- package/src/tests/utilities/{TestConfiguration.ts → TestConfiguration.js} +78 -111
- package/src/tests/utilities/controllers.js +16 -0
- package/src/tests/utilities/{index.ts → index.js} +2 -2
- package/src/tests/utilities/{structures.ts → structures.js} +36 -41
- package/src/threads/automation.ts +19 -18
- package/src/threads/query.ts +16 -11
- package/src/threads/utils.ts +5 -4
- package/src/utilities/budibaseDir.js +3 -0
- package/src/utilities/{centralPath.ts → centralPath.js} +3 -3
- package/src/utilities/{csvParser.ts → csvParser.js} +26 -42
- package/src/utilities/fileSystem/{clientLibrary.ts → clientLibrary.js} +20 -20
- package/src/utilities/fileSystem/{index.ts → index.js} +65 -61
- package/src/utilities/fileSystem/{processor.ts → processor.js} +5 -3
- 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/{plugins.ts → plugins.js} +4 -5
- package/src/utilities/queue/inMemoryQueue.js +122 -0
- 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} +144 -67
- package/src/utilities/rowProcessor/{utils.ts → utils.js} +15 -19
- package/src/utilities/{scriptRunner.ts → scriptRunner.js} +4 -8
- package/src/utilities/security.js +71 -0
- package/src/utilities/{statusCodes.ts → statusCodes.js} +1 -1
- package/src/utilities/usageQuota/{rows.ts → rows.js} +18 -14
- package/src/utilities/usageQuota/{usageQuoteReset.ts → usageQuoteReset.js} +1 -1
- 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.build.json +2 -1
- package/tsconfig.json +1 -3
- package/builder/assets/index.0c44dac3.css +0 -6
- package/builder/assets/index.e19dcc8e.js +0 -1021
- 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/integration.ts.html +0 -124
- 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 -136
- 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/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 -2269
- 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 -694
- 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/analytics.ts.html +0 -112
- package/coverage/lcov-report/src/api/routes/apikeys.ts.html +0 -121
- 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/datasource.ts.html +0 -265
- package/coverage/lcov-report/src/api/routes/deploy.ts.html +0 -148
- package/coverage/lcov-report/src/api/routes/index.ts.html +0 -289
- package/coverage/lcov-report/src/api/routes/migrations.ts.html +0 -127
- 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 -493
- 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/role.ts.html +0 -157
- 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.ts.html +0 -367
- package/coverage/lcov-report/src/api/routes/webhook.ts.html +0 -166
- package/coverage/lcov-report/src/app.ts.html +0 -406
- 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 -382
- package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +0 -349
- package/coverage/lcov-report/src/automations/steps/index.html +0 -371
- package/coverage/lcov-report/src/automations/tests/utilities/index.html +0 -116
- package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +0 -265
- package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +0 -196
- package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +0 -130
- package/coverage/lcov-report/src/automations/utils.ts.html +0 -886
- package/coverage/lcov-report/src/constants/index.ts.html +0 -697
- package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +0 -2059
- package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +0 -541
- package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +0 -427
- package/coverage/lcov-report/src/db/defaultData/index.html +0 -176
- package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +0 -403
- package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +0 -559
- package/coverage/lcov-report/src/db/dynamoClient.ts.html +0 -526
- package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +0 -265
- package/coverage/lcov-report/src/db/linkedRows/index.html +0 -161
- package/coverage/lcov-report/src/environment.ts.html +0 -457
- package/coverage/lcov-report/src/events/utils.ts.html +0 -319
- 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/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/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 -1315
- 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 -1012
- package/coverage/lcov-report/src/integrations/mongodb.ts.html +0 -1867
- package/coverage/lcov-report/src/integrations/mysql.ts.html +0 -967
- package/coverage/lcov-report/src/integrations/oracle.ts.html +0 -1387
- package/coverage/lcov-report/src/integrations/postgres.ts.html +0 -1087
- 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 -1018
- 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 -161
- package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +0 -130
- package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +0 -520
- 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 -430
- 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.ts.html +0 -1966
- package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +0 -127
- package/coverage/lcov-report/src/tests/utilities/index.html +0 -161
- package/coverage/lcov-report/src/tests/utilities/structures.ts.html +0 -667
- 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.ts.html +0 -547
- package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +0 -1129
- package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +0 -142
- 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.ts.html +0 -373
- package/coverage/lcov-report/src/watch.ts.html +0 -196
- package/dist/db/defaultData/datasource_bb_default.js +0 -573
- package/dist/db/defaultData/employeeImport.js +0 -155
- package/dist/db/defaultData/expensesImport.js +0 -117
- package/dist/db/defaultData/inventoryImport.js +0 -109
- package/dist/db/defaultData/jobsImport.js +0 -152
- package/dist/db/linkedRows/LinkDocument.js +0 -32
- package/dist/events/BudibaseEmitter.js +0 -24
- package/dist/integrations/base/types.js +0 -2
- package/dist/migrations/functions/tableSettings.js +0 -130
- package/dist/utilities/rowProcessor/map.js +0 -99
- package/jest.config.ts +0 -33
- package/scripts/integrations/postgres/emp-skill.sql +0 -46
- package/src/api/controllers/integration.ts +0 -13
- package/src/api/controllers/migrations.ts +0 -14
- 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/automations/bullboard.ts +0 -38
- package/src/automations/index.ts +0 -26
- package/src/automations/tests/utilities/index.ts +0 -60
- package/src/automations/triggerInfo/index.ts +0 -15
- package/src/constants/index.ts +0 -204
- package/src/constants/screens.ts +0 -48
- package/src/db/defaultData/datasource_bb_default.ts +0 -658
- package/src/db/defaultData/employeeImport.ts +0 -152
- package/src/db/defaultData/expensesImport.ts +0 -114
- package/src/db/defaultData/inventoryImport.ts +0 -106
- package/src/db/defaultData/jobsImport.ts +0 -158
- package/src/db/index.ts +0 -16
- package/src/db/linkedRows/LinkDocument.ts +0 -60
- package/src/events/index.ts +0 -5
- package/src/events/utils.ts +0 -78
- package/src/integrations/base/types.ts +0 -134
- package/src/middleware/appInfo.ts +0 -20
- package/src/middleware/publicApi.ts +0 -21
- package/src/migrations/functions/tableSettings.ts +0 -145
- package/src/migrations/functions/tests/tableSettings.spec.ts +0 -144
- package/src/tests/utilities/controllers.ts +0 -14
- 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.ts +0 -96
- package/src/utilities/security.ts +0 -65
|
@@ -1,33 +1,59 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
LinkDocumentValue,
|
|
11
|
-
Row,
|
|
12
|
-
Table,
|
|
13
|
-
} from "@budibase/types"
|
|
1
|
+
const { IncludeDocs, getLinkDocuments } = require("./linkUtils")
|
|
2
|
+
const {
|
|
3
|
+
generateLinkID,
|
|
4
|
+
InternalTables,
|
|
5
|
+
getUserMetadataParams,
|
|
6
|
+
} = require("../utils")
|
|
7
|
+
const Sentry = require("@sentry/node")
|
|
8
|
+
const { FieldTypes, RelationshipTypes } = require("../../constants")
|
|
9
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
14
10
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Creates a new link document structure which can be put to the database. It is important to
|
|
13
|
+
* note that while this talks about linker/linked the link is bi-directional and for all intent
|
|
14
|
+
* and purposes it does not matter from which direction the link was initiated.
|
|
15
|
+
* @param {string} tableId1 The ID of the first table (the linker).
|
|
16
|
+
* @param {string} tableId2 The ID of the second table (the linked).
|
|
17
|
+
* @param {string} fieldName1 The name of the field in the linker table.
|
|
18
|
+
* @param {string} fieldName2 The name of the field in the linked table.
|
|
19
|
+
* @param {string} rowId1 The ID of the row which is acting as the linker.
|
|
20
|
+
* @param {string} rowId2 The ID of the row which is acting as the linked.
|
|
21
|
+
* @constructor
|
|
22
|
+
*/
|
|
23
|
+
function LinkDocument(
|
|
24
|
+
tableId1,
|
|
25
|
+
fieldName1,
|
|
26
|
+
rowId1,
|
|
27
|
+
tableId2,
|
|
28
|
+
fieldName2,
|
|
29
|
+
rowId2
|
|
30
|
+
) {
|
|
31
|
+
// build the ID out of unique references to this link document
|
|
32
|
+
this._id = generateLinkID(
|
|
33
|
+
tableId1,
|
|
34
|
+
tableId2,
|
|
35
|
+
rowId1,
|
|
36
|
+
rowId2,
|
|
37
|
+
fieldName1,
|
|
38
|
+
fieldName2
|
|
39
|
+
)
|
|
40
|
+
// required for referencing in view
|
|
41
|
+
this.type = FieldTypes.LINK
|
|
42
|
+
this.doc1 = {
|
|
43
|
+
tableId: tableId1,
|
|
44
|
+
fieldName: fieldName1,
|
|
45
|
+
rowId: rowId1,
|
|
46
|
+
}
|
|
47
|
+
this.doc2 = {
|
|
48
|
+
tableId: tableId2,
|
|
49
|
+
fieldName: fieldName2,
|
|
50
|
+
rowId: rowId2,
|
|
51
|
+
}
|
|
20
52
|
}
|
|
21
53
|
|
|
22
54
|
class LinkController {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
_row?: Row
|
|
26
|
-
_table?: Table
|
|
27
|
-
_oldTable?: Table
|
|
28
|
-
|
|
29
|
-
constructor({ tableId, row, table, oldTable }: LinkControllerOpts) {
|
|
30
|
-
this._db = context.getAppDB()
|
|
55
|
+
constructor({ tableId, row, table, oldTable }) {
|
|
56
|
+
this._db = getAppDB()
|
|
31
57
|
this._tableId = tableId
|
|
32
58
|
this._row = row
|
|
33
59
|
this._table = table
|
|
@@ -44,7 +70,7 @@ class LinkController {
|
|
|
44
70
|
this._table =
|
|
45
71
|
this._table == null ? await this._db.get(this._tableId) : this._table
|
|
46
72
|
}
|
|
47
|
-
return this._table
|
|
73
|
+
return this._table
|
|
48
74
|
}
|
|
49
75
|
|
|
50
76
|
/**
|
|
@@ -54,7 +80,7 @@ class LinkController {
|
|
|
54
80
|
* @returns {Promise<boolean>} True if there are any linked fields, otherwise it will return
|
|
55
81
|
* false.
|
|
56
82
|
*/
|
|
57
|
-
async doesTableHaveLinkedFields(table
|
|
83
|
+
async doesTableHaveLinkedFields(table = null) {
|
|
58
84
|
if (table == null) {
|
|
59
85
|
table = await this.table()
|
|
60
86
|
}
|
|
@@ -70,7 +96,7 @@ class LinkController {
|
|
|
70
96
|
/**
|
|
71
97
|
* Utility function for main getLinkDocuments function - refer to it for functionality.
|
|
72
98
|
*/
|
|
73
|
-
getRowLinkDocs(rowId
|
|
99
|
+
getRowLinkDocs(rowId) {
|
|
74
100
|
return getLinkDocuments({
|
|
75
101
|
tableId: this._tableId,
|
|
76
102
|
rowId,
|
|
@@ -81,23 +107,23 @@ class LinkController {
|
|
|
81
107
|
/**
|
|
82
108
|
* Utility function for main getLinkDocuments function - refer to it for functionality.
|
|
83
109
|
*/
|
|
84
|
-
|
|
85
|
-
return
|
|
110
|
+
getTableLinkDocs() {
|
|
111
|
+
return getLinkDocuments({
|
|
86
112
|
tableId: this._tableId,
|
|
87
113
|
includeDocs: IncludeDocs.INCLUDE,
|
|
88
|
-
})
|
|
114
|
+
})
|
|
89
115
|
}
|
|
90
116
|
|
|
91
117
|
/**
|
|
92
118
|
* Makes sure the passed in table schema contains valid relationship structures.
|
|
93
119
|
*/
|
|
94
|
-
validateTable(table
|
|
120
|
+
validateTable(table) {
|
|
95
121
|
const usedAlready = []
|
|
96
122
|
for (let schema of Object.values(table.schema)) {
|
|
97
123
|
if (schema.type !== FieldTypes.LINK) {
|
|
98
124
|
continue
|
|
99
125
|
}
|
|
100
|
-
const unique = schema.tableId
|
|
126
|
+
const unique = schema.tableId + schema.fieldName
|
|
101
127
|
if (usedAlready.indexOf(unique) !== -1) {
|
|
102
128
|
throw new Error(
|
|
103
129
|
"Cannot re-use the linked column name for a linked table."
|
|
@@ -110,7 +136,7 @@ class LinkController {
|
|
|
110
136
|
/**
|
|
111
137
|
* Returns whether the two link schemas are equal (in the important parts, not a pure equality check)
|
|
112
138
|
*/
|
|
113
|
-
areLinkSchemasEqual(linkSchema1
|
|
139
|
+
areLinkSchemasEqual(linkSchema1, linkSchema2) {
|
|
114
140
|
const compareFields = [
|
|
115
141
|
"name",
|
|
116
142
|
"type",
|
|
@@ -120,7 +146,6 @@ class LinkController {
|
|
|
120
146
|
"relationshipType",
|
|
121
147
|
]
|
|
122
148
|
for (let field of compareFields) {
|
|
123
|
-
// @ts-ignore
|
|
124
149
|
if (linkSchema1[field] !== linkSchema2[field]) {
|
|
125
150
|
return false
|
|
126
151
|
}
|
|
@@ -132,7 +157,7 @@ class LinkController {
|
|
|
132
157
|
* Given the link field of this table, and the link field of the linked table, this makes sure
|
|
133
158
|
* the state of relationship type is accurate on both.
|
|
134
159
|
*/
|
|
135
|
-
handleRelationshipType(linkerField
|
|
160
|
+
handleRelationshipType(linkerField, linkedField) {
|
|
136
161
|
if (
|
|
137
162
|
!linkerField.relationshipType ||
|
|
138
163
|
linkerField.relationshipType === RelationshipTypes.MANY_TO_MANY
|
|
@@ -159,10 +184,10 @@ class LinkController {
|
|
|
159
184
|
*/
|
|
160
185
|
async rowSaved() {
|
|
161
186
|
const table = await this.table()
|
|
162
|
-
const row = this._row
|
|
187
|
+
const row = this._row
|
|
163
188
|
const operations = []
|
|
164
189
|
// get link docs to compare against
|
|
165
|
-
const linkDocs =
|
|
190
|
+
const linkDocs = await this.getRowLinkDocs(row._id)
|
|
166
191
|
for (let fieldName of Object.keys(table.schema)) {
|
|
167
192
|
// get the links this row wants to make
|
|
168
193
|
const rowField = row[fieldName]
|
|
@@ -182,32 +207,30 @@ class LinkController {
|
|
|
182
207
|
|
|
183
208
|
// if 1:N, ensure that this ID is not already attached to another record
|
|
184
209
|
const linkedTable = await this._db.get(field.tableId)
|
|
185
|
-
const linkedSchema = linkedTable.schema[field.fieldName
|
|
210
|
+
const linkedSchema = linkedTable.schema[field.fieldName]
|
|
186
211
|
|
|
187
212
|
// We need to map the global users to metadata in each app for relationships
|
|
188
213
|
if (field.tableId === InternalTables.USER_METADATA) {
|
|
189
214
|
const users = await this._db.allDocs(getUserMetadataParams(null, {}))
|
|
190
215
|
const metadataRequired = rowField.filter(
|
|
191
|
-
|
|
216
|
+
userId => !users.rows.some(user => user.id === userId)
|
|
192
217
|
)
|
|
193
218
|
|
|
194
219
|
// ensure non-existing user metadata is created in the app DB
|
|
195
220
|
await this._db.bulkDocs(
|
|
196
|
-
metadataRequired.map(
|
|
221
|
+
metadataRequired.map(userId => ({ _id: userId }))
|
|
197
222
|
)
|
|
198
223
|
}
|
|
199
224
|
|
|
200
225
|
// iterate through the link IDs in the row field, see if any don't exist already
|
|
201
226
|
for (let linkId of rowField) {
|
|
202
|
-
if (
|
|
203
|
-
linkedSchema?.relationshipType === RelationshipTypes.ONE_TO_MANY
|
|
204
|
-
) {
|
|
227
|
+
if (linkedSchema.relationshipType === RelationshipTypes.ONE_TO_MANY) {
|
|
205
228
|
let links = (
|
|
206
|
-
|
|
229
|
+
await getLinkDocuments({
|
|
207
230
|
tableId: field.tableId,
|
|
208
231
|
rowId: linkId,
|
|
209
232
|
includeDocs: IncludeDocs.EXCLUDE,
|
|
210
|
-
})
|
|
233
|
+
})
|
|
211
234
|
).filter(
|
|
212
235
|
link =>
|
|
213
236
|
link.id !== row._id && link.fieldName === linkedSchema.name
|
|
@@ -232,11 +255,11 @@ class LinkController {
|
|
|
232
255
|
}
|
|
233
256
|
operations.push(
|
|
234
257
|
new LinkDocument(
|
|
235
|
-
table._id
|
|
258
|
+
table._id,
|
|
236
259
|
fieldName,
|
|
237
|
-
row._id
|
|
238
|
-
field.tableId
|
|
239
|
-
field.fieldName
|
|
260
|
+
row._id,
|
|
261
|
+
field.tableId,
|
|
262
|
+
field.fieldName,
|
|
240
263
|
linkId
|
|
241
264
|
)
|
|
242
265
|
)
|
|
@@ -269,9 +292,9 @@ class LinkController {
|
|
|
269
292
|
* be accurate. This also returns the row that was deleted.
|
|
270
293
|
*/
|
|
271
294
|
async rowDeleted() {
|
|
272
|
-
const row = this._row
|
|
295
|
+
const row = this._row
|
|
273
296
|
// need to get the full link docs to be be able to delete it
|
|
274
|
-
const linkDocs = await this.getRowLinkDocs(row._id
|
|
297
|
+
const linkDocs = await this.getRowLinkDocs(row._id)
|
|
275
298
|
if (linkDocs.length === 0) {
|
|
276
299
|
return null
|
|
277
300
|
}
|
|
@@ -290,13 +313,13 @@ class LinkController {
|
|
|
290
313
|
* @param {string} fieldName The field to be removed from the table.
|
|
291
314
|
* @returns {Promise<void>} The table has now been updated.
|
|
292
315
|
*/
|
|
293
|
-
async removeFieldFromTable(fieldName
|
|
316
|
+
async removeFieldFromTable(fieldName) {
|
|
294
317
|
let oldTable = this._oldTable
|
|
295
|
-
let field = oldTable
|
|
318
|
+
let field = oldTable.schema[fieldName]
|
|
296
319
|
const linkDocs = await this.getTableLinkDocs()
|
|
297
320
|
let toDelete = linkDocs.filter(linkDoc => {
|
|
298
321
|
let correctFieldName =
|
|
299
|
-
linkDoc.doc1.tableId === oldTable
|
|
322
|
+
linkDoc.doc1.tableId === oldTable._id
|
|
300
323
|
? linkDoc.doc1.fieldName
|
|
301
324
|
: linkDoc.doc2.fieldName
|
|
302
325
|
return correctFieldName === fieldName
|
|
@@ -311,9 +334,7 @@ class LinkController {
|
|
|
311
334
|
)
|
|
312
335
|
// remove schema from other table
|
|
313
336
|
let linkedTable = await this._db.get(field.tableId)
|
|
314
|
-
|
|
315
|
-
delete linkedTable.schema[field.fieldName]
|
|
316
|
-
}
|
|
337
|
+
delete linkedTable.schema[field.fieldName]
|
|
317
338
|
await this._db.put(linkedTable)
|
|
318
339
|
}
|
|
319
340
|
|
|
@@ -330,7 +351,7 @@ class LinkController {
|
|
|
330
351
|
const schema = table.schema
|
|
331
352
|
for (let fieldName of Object.keys(schema)) {
|
|
332
353
|
const field = schema[fieldName]
|
|
333
|
-
if (field.type === FieldTypes.LINK
|
|
354
|
+
if (field.type === FieldTypes.LINK) {
|
|
334
355
|
// handle this in a separate try catch, want
|
|
335
356
|
// the put to bubble up as an error, if can't update
|
|
336
357
|
// table for some reason
|
|
@@ -387,8 +408,8 @@ class LinkController {
|
|
|
387
408
|
const oldTable = this._oldTable
|
|
388
409
|
// first start by checking if any link columns have been deleted
|
|
389
410
|
const newTable = await this.table()
|
|
390
|
-
for (let fieldName of Object.keys(oldTable
|
|
391
|
-
const field = oldTable
|
|
411
|
+
for (let fieldName of Object.keys(oldTable.schema)) {
|
|
412
|
+
const field = oldTable.schema[fieldName]
|
|
392
413
|
// this field has been removed from the table schema
|
|
393
414
|
if (
|
|
394
415
|
field.type === FieldTypes.LINK &&
|
|
@@ -414,7 +435,7 @@ class LinkController {
|
|
|
414
435
|
for (let fieldName of Object.keys(schema)) {
|
|
415
436
|
const field = schema[fieldName]
|
|
416
437
|
try {
|
|
417
|
-
if (field.type === FieldTypes.LINK
|
|
438
|
+
if (field.type === FieldTypes.LINK) {
|
|
418
439
|
const linkedTable = await this._db.get(field.tableId)
|
|
419
440
|
delete linkedTable.schema[field.fieldName]
|
|
420
441
|
await this._db.put(linkedTable)
|
|
@@ -441,4 +462,4 @@ class LinkController {
|
|
|
441
462
|
}
|
|
442
463
|
}
|
|
443
464
|
|
|
444
|
-
|
|
465
|
+
module.exports = LinkController
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
const LinkController = require("./LinkController")
|
|
2
|
+
const {
|
|
3
3
|
IncludeDocs,
|
|
4
4
|
getLinkDocuments,
|
|
5
5
|
createLinkView,
|
|
@@ -7,24 +7,21 @@ import {
|
|
|
7
7
|
getRelatedTableForField,
|
|
8
8
|
getLinkedTableIDs,
|
|
9
9
|
getLinkedTable,
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
import { Table, Row, LinkDocumentValue } from "@budibase/types"
|
|
19
|
-
|
|
20
|
-
export { IncludeDocs, getLinkDocuments, createLinkView } from "./linkUtils"
|
|
10
|
+
} = require("./linkUtils")
|
|
11
|
+
const { flatten } = require("lodash")
|
|
12
|
+
const { FieldTypes } = require("../../constants")
|
|
13
|
+
const { getMultiIDParams, USER_METDATA_PREFIX } = require("../../db/utils")
|
|
14
|
+
const { partition } = require("lodash")
|
|
15
|
+
const { getGlobalUsersFromMetadata } = require("../../utilities/global")
|
|
16
|
+
const { processFormulas } = require("../../utilities/rowProcessor/utils")
|
|
17
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
21
18
|
|
|
22
19
|
/**
|
|
23
20
|
* This functionality makes sure that when rows with links are created, updated or deleted they are processed
|
|
24
21
|
* correctly - making sure that no stale links are left around and that all links have been made successfully.
|
|
25
22
|
*/
|
|
26
23
|
|
|
27
|
-
|
|
24
|
+
const EventType = {
|
|
28
25
|
ROW_SAVE: "row:save",
|
|
29
26
|
ROW_UPDATE: "row:update",
|
|
30
27
|
ROW_DELETE: "row:delete",
|
|
@@ -33,7 +30,13 @@ export const EventType = {
|
|
|
33
30
|
TABLE_DELETE: "table:delete",
|
|
34
31
|
}
|
|
35
32
|
|
|
36
|
-
|
|
33
|
+
exports.EventType = EventType
|
|
34
|
+
// re-export search here for ease of use
|
|
35
|
+
exports.IncludeDocs = IncludeDocs
|
|
36
|
+
exports.getLinkDocuments = getLinkDocuments
|
|
37
|
+
exports.createLinkView = createLinkView
|
|
38
|
+
|
|
39
|
+
function clearRelationshipFields(table, rows) {
|
|
37
40
|
for (let [key, field] of Object.entries(table.schema)) {
|
|
38
41
|
if (field.type === FieldTypes.LINK) {
|
|
39
42
|
rows = rows.map(row => {
|
|
@@ -45,17 +48,18 @@ function clearRelationshipFields(table: Table, rows: Row[]) {
|
|
|
45
48
|
return rows
|
|
46
49
|
}
|
|
47
50
|
|
|
48
|
-
async function getLinksForRows(rows
|
|
51
|
+
async function getLinksForRows(rows) {
|
|
49
52
|
const tableIds = [...new Set(rows.map(el => el.tableId))]
|
|
50
53
|
// start by getting all the link values for performance reasons
|
|
51
|
-
const promises = tableIds.map(tableId =>
|
|
52
|
-
getLinkDocuments({
|
|
53
|
-
tableId: tableId,
|
|
54
|
-
includeDocs: IncludeDocs.EXCLUDE,
|
|
55
|
-
})
|
|
56
|
-
)
|
|
57
54
|
const responses = flatten(
|
|
58
|
-
|
|
55
|
+
await Promise.all(
|
|
56
|
+
tableIds.map(tableId =>
|
|
57
|
+
getLinkDocuments({
|
|
58
|
+
tableId: tableId,
|
|
59
|
+
includeDocs: IncludeDocs.EXCLUDE,
|
|
60
|
+
})
|
|
61
|
+
)
|
|
62
|
+
)
|
|
59
63
|
)
|
|
60
64
|
// have to get unique as the previous table query can
|
|
61
65
|
// return duplicates, could be querying for both tables in a relation
|
|
@@ -68,9 +72,9 @@ async function getLinksForRows(rows: Row[]) {
|
|
|
68
72
|
)
|
|
69
73
|
}
|
|
70
74
|
|
|
71
|
-
async function getFullLinkedDocs(links
|
|
75
|
+
async function getFullLinkedDocs(links) {
|
|
72
76
|
// create DBs
|
|
73
|
-
const db =
|
|
77
|
+
const db = getAppDB()
|
|
74
78
|
const linkedRowIds = links.map(link => link.id)
|
|
75
79
|
const uniqueRowIds = [...new Set(linkedRowIds)]
|
|
76
80
|
let dbRows = (await db.allDocs(getMultiIDParams(uniqueRowIds))).rows.map(
|
|
@@ -99,18 +103,12 @@ async function getFullLinkedDocs(links: LinkDocumentValue[]) {
|
|
|
99
103
|
* @returns {Promise<object>} When the update is complete this will respond successfully. Returns the row for
|
|
100
104
|
* row operations and the table for table operations.
|
|
101
105
|
*/
|
|
102
|
-
|
|
103
|
-
tableId?: string
|
|
104
|
-
eventType: string
|
|
105
|
-
row?: Row
|
|
106
|
-
table?: Table
|
|
107
|
-
oldTable?: Table
|
|
108
|
-
}) {
|
|
106
|
+
exports.updateLinks = async function (args) {
|
|
109
107
|
const { eventType, row, tableId, table, oldTable } = args
|
|
110
108
|
const baseReturnObj = row == null ? table : row
|
|
111
109
|
// make sure table ID is set
|
|
112
110
|
if (tableId == null && table != null) {
|
|
113
|
-
args.tableId = table._id
|
|
111
|
+
args.tableId = table._id
|
|
114
112
|
}
|
|
115
113
|
let linkController = new LinkController(args)
|
|
116
114
|
try {
|
|
@@ -148,7 +146,7 @@ export async function updateLinks(args: {
|
|
|
148
146
|
* @param {array<object>} rows The rows which are to be enriched.
|
|
149
147
|
* @return {Promise<*>} returns the rows with all of the enriched relationships on it.
|
|
150
148
|
*/
|
|
151
|
-
|
|
149
|
+
exports.attachFullLinkedDocs = async (table, rows) => {
|
|
152
150
|
const linkedTableIds = getLinkedTableIDs(table)
|
|
153
151
|
if (linkedTableIds.length === 0) {
|
|
154
152
|
return rows
|
|
@@ -161,7 +159,7 @@ export async function attachFullLinkedDocs(table: Table, rows: Row[]) {
|
|
|
161
159
|
rows = clearRelationshipFields(table, rows)
|
|
162
160
|
// now get the docs and combine into the rows
|
|
163
161
|
let linked = await getFullLinkedDocs(links)
|
|
164
|
-
const linkedTables
|
|
162
|
+
const linkedTables = []
|
|
165
163
|
for (let row of rows) {
|
|
166
164
|
for (let link of links.filter(link => link.thisId === row._id)) {
|
|
167
165
|
if (row[link.fieldName] == null) {
|
|
@@ -187,16 +185,13 @@ export async function attachFullLinkedDocs(table: Table, rows: Row[]) {
|
|
|
187
185
|
* @param {array<object>} enriched The pre-enriched rows (full docs) which are to be squashed.
|
|
188
186
|
* @returns {Promise<Array>} The rows after having their links squashed to only contain the ID and primary display.
|
|
189
187
|
*/
|
|
190
|
-
|
|
191
|
-
table: Table,
|
|
192
|
-
enriched: Row[]
|
|
193
|
-
) {
|
|
188
|
+
exports.squashLinksToPrimaryDisplay = async (table, enriched) => {
|
|
194
189
|
// will populate this as we find them
|
|
195
190
|
const linkedTables = [table]
|
|
196
191
|
for (let row of enriched) {
|
|
197
192
|
// this only fetches the table if its not already in array
|
|
198
|
-
const rowTable = await getLinkedTable(row.tableId
|
|
199
|
-
for (let [column, schema] of Object.entries(rowTable
|
|
193
|
+
const rowTable = await getLinkedTable(row.tableId, linkedTables)
|
|
194
|
+
for (let [column, schema] of Object.entries(rowTable.schema)) {
|
|
200
195
|
if (schema.type !== FieldTypes.LINK || !Array.isArray(row[column])) {
|
|
201
196
|
continue
|
|
202
197
|
}
|
|
@@ -204,8 +199,8 @@ export async function squashLinksToPrimaryDisplay(
|
|
|
204
199
|
for (let link of row[column]) {
|
|
205
200
|
const linkTblId = link.tableId || getRelatedTableForField(table, column)
|
|
206
201
|
const linkedTable = await getLinkedTable(linkTblId, linkedTables)
|
|
207
|
-
const obj
|
|
208
|
-
if (
|
|
202
|
+
const obj = { _id: link._id }
|
|
203
|
+
if (link[linkedTable.primaryDisplay]) {
|
|
209
204
|
obj.primaryDisplay = link[linkedTable.primaryDisplay]
|
|
210
205
|
}
|
|
211
206
|
newLinks.push(obj)
|
|
@@ -1,24 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
FieldSchema,
|
|
7
|
-
LinkDocument,
|
|
8
|
-
LinkDocumentValue,
|
|
9
|
-
Table,
|
|
10
|
-
} from "@budibase/types"
|
|
11
|
-
export { createLinkView } from "../views/staticViews"
|
|
1
|
+
const Sentry = require("@sentry/node")
|
|
2
|
+
const { ViewName, getQueryIndex } = require("../utils")
|
|
3
|
+
const { FieldTypes } = require("../../constants")
|
|
4
|
+
const { createLinkView } = require("../views/staticViews")
|
|
5
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
12
6
|
|
|
13
7
|
/**
|
|
14
8
|
* Only needed so that boolean parameters are being used for includeDocs
|
|
15
9
|
* @type {{EXCLUDE: boolean, INCLUDE: boolean}}
|
|
16
10
|
*/
|
|
17
|
-
|
|
11
|
+
exports.IncludeDocs = {
|
|
18
12
|
INCLUDE: true,
|
|
19
13
|
EXCLUDE: false,
|
|
20
14
|
}
|
|
21
15
|
|
|
16
|
+
exports.createLinkView = createLinkView
|
|
17
|
+
|
|
22
18
|
/**
|
|
23
19
|
* Gets the linking documents, not the linked documents themselves.
|
|
24
20
|
* @param {string} args.tableId The table which we are searching for linked rows against.
|
|
@@ -32,14 +28,10 @@ export const IncludeDocs = {
|
|
|
32
28
|
* @returns {Promise<object[]>} This will return an array of the linking documents that were found
|
|
33
29
|
* (if any).
|
|
34
30
|
*/
|
|
35
|
-
|
|
36
|
-
tableId?: string
|
|
37
|
-
rowId?: string
|
|
38
|
-
includeDocs?: any
|
|
39
|
-
}): Promise<LinkDocumentValue[] | LinkDocument[]> {
|
|
31
|
+
exports.getLinkDocuments = async function (args) {
|
|
40
32
|
const { tableId, rowId, includeDocs } = args
|
|
41
|
-
const db =
|
|
42
|
-
let params
|
|
33
|
+
const db = getAppDB()
|
|
34
|
+
let params
|
|
43
35
|
if (rowId != null) {
|
|
44
36
|
params = { key: [tableId, rowId] }
|
|
45
37
|
}
|
|
@@ -51,7 +43,7 @@ export async function getLinkDocuments(args: {
|
|
|
51
43
|
try {
|
|
52
44
|
let linkRows = (await db.query(getQueryIndex(ViewName.LINK), params)).rows
|
|
53
45
|
// filter to get unique entries
|
|
54
|
-
const foundIds
|
|
46
|
+
const foundIds = []
|
|
55
47
|
linkRows = linkRows.filter(link => {
|
|
56
48
|
// make sure anything unique is the correct key
|
|
57
49
|
if (
|
|
@@ -68,37 +60,36 @@ export async function getLinkDocuments(args: {
|
|
|
68
60
|
})
|
|
69
61
|
|
|
70
62
|
if (includeDocs) {
|
|
71
|
-
return linkRows.map(row => row.doc)
|
|
63
|
+
return linkRows.map(row => row.doc)
|
|
72
64
|
} else {
|
|
73
|
-
return linkRows.map(row => row.value)
|
|
65
|
+
return linkRows.map(row => row.value)
|
|
74
66
|
}
|
|
75
|
-
} catch (err
|
|
67
|
+
} catch (err) {
|
|
76
68
|
// check if the view doesn't exist, it should for all new instances
|
|
77
69
|
if (err != null && err.name === "not_found") {
|
|
78
|
-
await createLinkView()
|
|
79
|
-
return getLinkDocuments(arguments[0])
|
|
70
|
+
await exports.createLinkView()
|
|
71
|
+
return exports.getLinkDocuments(arguments[0])
|
|
80
72
|
} else {
|
|
81
73
|
/* istanbul ignore next */
|
|
82
|
-
|
|
83
|
-
throw err
|
|
74
|
+
Sentry.captureException(err)
|
|
84
75
|
}
|
|
85
76
|
}
|
|
86
77
|
}
|
|
87
78
|
|
|
88
|
-
|
|
79
|
+
exports.getUniqueByProp = (array, prop) => {
|
|
89
80
|
return array.filter((obj, pos, arr) => {
|
|
90
81
|
return arr.map(mapObj => mapObj[prop]).indexOf(obj[prop]) === pos
|
|
91
82
|
})
|
|
92
83
|
}
|
|
93
84
|
|
|
94
|
-
|
|
85
|
+
exports.getLinkedTableIDs = table => {
|
|
95
86
|
return Object.values(table.schema)
|
|
96
|
-
.filter(
|
|
87
|
+
.filter(column => column.type === FieldTypes.LINK)
|
|
97
88
|
.map(column => column.tableId)
|
|
98
89
|
}
|
|
99
90
|
|
|
100
|
-
|
|
101
|
-
const db =
|
|
91
|
+
exports.getLinkedTable = async (id, tables) => {
|
|
92
|
+
const db = getAppDB()
|
|
102
93
|
let linkedTable = tables.find(table => table._id === id)
|
|
103
94
|
if (linkedTable) {
|
|
104
95
|
return linkedTable
|
|
@@ -110,7 +101,7 @@ export async function getLinkedTable(id: string, tables: Table[]) {
|
|
|
110
101
|
return linkedTable
|
|
111
102
|
}
|
|
112
103
|
|
|
113
|
-
|
|
104
|
+
exports.getRelatedTableForField = (table, fieldName) => {
|
|
114
105
|
// look to see if its on the table, straight in the schema
|
|
115
106
|
const field = table.schema[fieldName]
|
|
116
107
|
if (field != null) {
|