@budibase/server 1.0.49-alpha.6 → 1.0.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/__mocks__/arangojs.ts +1 -1
- package/__mocks__/aws-sdk.ts +4 -4
- package/__mocks__/mongodb.ts +5 -4
- package/__mocks__/mssql.ts +3 -3
- package/__mocks__/node-fetch.ts +1 -2
- package/__mocks__/pg.ts +5 -3
- package/builder/assets/{index.1b905242.js → index.2c37968e.js} +231 -234
- package/builder/assets/index.39e01193.css +1 -0
- package/builder/assets/{vendor.d526bfe8.js → vendor.f9faf6ab.js} +12 -12
- package/builder/index.html +3 -3
- package/coverage/clover.xml +2816 -3119
- package/coverage/coverage-final.json +101 -106
- package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
- package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/controllers/application.js.html +152 -257
- package/coverage/lcov-report/api/controllers/auth.js.html +13 -22
- package/coverage/lcov-report/api/controllers/automation.js.html +69 -39
- package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
- package/coverage/lcov-report/api/controllers/cloud.js.html +11 -8
- package/coverage/lcov-report/api/controllers/component.js.html +16 -13
- package/coverage/lcov-report/api/controllers/datasource.js.html +51 -81
- package/coverage/lcov-report/api/controllers/dev.js.html +6 -6
- package/coverage/lcov-report/{utilities/usageQuota/usageQuoteReset.js.html → api/controllers/hosting.js.html} +48 -36
- package/coverage/lcov-report/api/controllers/index.html +76 -76
- package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
- package/coverage/lcov-report/api/controllers/layout.js.html +9 -9
- package/coverage/lcov-report/api/controllers/metadata.js.html +21 -6
- package/coverage/lcov-report/api/controllers/permission.js.html +19 -19
- package/coverage/lcov-report/api/controllers/query/index.html +10 -10
- package/coverage/lcov-report/api/controllers/query/index.js.html +35 -38
- package/coverage/lcov-report/api/controllers/query/validation.js.html +6 -6
- package/coverage/lcov-report/api/controllers/role.js.html +16 -16
- package/coverage/lcov-report/api/controllers/routing.js.html +10 -7
- package/coverage/lcov-report/api/controllers/row/external.js.html +27 -21
- package/coverage/lcov-report/api/controllers/row/index.html +34 -49
- package/coverage/lcov-report/api/controllers/row/index.js.html +26 -26
- package/coverage/lcov-report/api/controllers/row/internal.js.html +226 -118
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +34 -52
- package/coverage/lcov-report/api/controllers/row/utils.js.html +62 -47
- package/coverage/lcov-report/api/controllers/screen.js.html +21 -15
- package/coverage/lcov-report/api/controllers/script.js.html +4 -4
- package/coverage/lcov-report/api/controllers/table/external.js.html +34 -25
- package/coverage/lcov-report/api/controllers/table/index.html +43 -58
- package/coverage/lcov-report/api/controllers/table/index.js.html +82 -58
- package/coverage/lcov-report/api/controllers/table/internal.js.html +66 -81
- package/coverage/lcov-report/api/controllers/table/utils.js.html +110 -218
- package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
- package/coverage/lcov-report/api/controllers/user.js.html +50 -47
- package/coverage/lcov-report/api/controllers/view/exporters.js.html +4 -4
- package/coverage/lcov-report/api/controllers/view/index.html +16 -16
- package/coverage/lcov-report/api/controllers/view/index.js.html +33 -27
- package/coverage/lcov-report/api/controllers/view/utils.js.html +20 -35
- package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +7 -7
- package/coverage/lcov-report/api/controllers/webhook.js.html +28 -34
- package/coverage/lcov-report/api/index.html +1 -1
- package/coverage/lcov-report/api/index.js.html +8 -8
- package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
- package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/routes/application.js.html +1 -1
- package/coverage/lcov-report/api/routes/auth.js.html +1 -1
- package/coverage/lcov-report/api/routes/automation.js.html +1 -1
- package/coverage/lcov-report/api/routes/backup.js.html +1 -1
- package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
- package/coverage/lcov-report/api/routes/component.js.html +1 -1
- package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
- package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
- package/coverage/lcov-report/api/routes/dev.js.html +1 -1
- package/coverage/lcov-report/api/routes/{migrations.js.html → hosting.js.html} +14 -17
- package/coverage/lcov-report/api/routes/index.html +18 -18
- package/coverage/lcov-report/api/routes/index.js.html +3 -3
- package/coverage/lcov-report/api/routes/integration.js.html +1 -1
- package/coverage/lcov-report/api/routes/layout.js.html +1 -1
- package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
- package/coverage/lcov-report/api/routes/permission.js.html +1 -1
- package/coverage/lcov-report/api/routes/query.js.html +1 -1
- package/coverage/lcov-report/api/routes/role.js.html +1 -1
- package/coverage/lcov-report/api/routes/routing.js.html +1 -1
- package/coverage/lcov-report/api/routes/row.js.html +1 -1
- package/coverage/lcov-report/api/routes/screen.js.html +1 -1
- package/coverage/lcov-report/api/routes/script.js.html +1 -1
- package/coverage/lcov-report/api/routes/static.js.html +2 -17
- package/coverage/lcov-report/api/routes/table.js.html +1 -1
- package/coverage/lcov-report/api/routes/templates.js.html +1 -1
- package/coverage/lcov-report/api/routes/user.js.html +1 -1
- package/coverage/lcov-report/api/routes/view.js.html +1 -1
- package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/actions.js.html +24 -24
- package/coverage/lcov-report/automations/automationUtils.js.html +10 -7
- package/coverage/lcov-report/automations/bullboard.js.html +16 -16
- package/coverage/lcov-report/automations/index.html +18 -18
- package/coverage/lcov-report/automations/index.js.html +1 -1
- package/coverage/lcov-report/automations/steps/bash.js.html +6 -6
- package/coverage/lcov-report/automations/steps/createRow.js.html +22 -13
- package/coverage/lcov-report/automations/steps/delay.js.html +4 -4
- package/coverage/lcov-report/automations/steps/deleteRow.js.html +20 -11
- package/coverage/lcov-report/automations/steps/discord.js.html +7 -7
- package/coverage/lcov-report/automations/steps/executeQuery.js.html +6 -6
- package/coverage/lcov-report/automations/steps/executeScript.js.html +6 -6
- package/coverage/lcov-report/automations/steps/filter.js.html +7 -7
- package/coverage/lcov-report/automations/steps/index.html +13 -13
- package/coverage/lcov-report/automations/steps/integromat.js.html +5 -5
- package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +8 -8
- package/coverage/lcov-report/automations/steps/queryRows.js.html +10 -10
- package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +5 -5
- package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -3
- package/coverage/lcov-report/automations/steps/slack.js.html +5 -5
- package/coverage/lcov-report/automations/steps/updateRow.js.html +7 -7
- package/coverage/lcov-report/automations/steps/utils.js.html +3 -3
- package/coverage/lcov-report/automations/steps/zapier.js.html +5 -5
- package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
- package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
- package/coverage/lcov-report/automations/triggers.js.html +55 -61
- package/coverage/lcov-report/automations/utils.js.html +42 -54
- package/coverage/lcov-report/constants/index.html +5 -5
- package/coverage/lcov-report/constants/index.js.html +26 -53
- package/coverage/lcov-report/constants/layouts.js.html +5 -5
- package/coverage/lcov-report/constants/screens.js.html +4 -4
- package/coverage/lcov-report/db/client.js.html +18 -18
- package/coverage/lcov-report/db/inMemoryView.js.html +7 -7
- package/coverage/lcov-report/db/index.html +15 -15
- package/coverage/lcov-report/db/index.js.html +3 -3
- package/coverage/lcov-report/db/linkedRows/LinkController.js.html +37 -25
- package/coverage/lcov-report/db/linkedRows/index.html +27 -27
- package/coverage/lcov-report/db/linkedRows/index.js.html +96 -51
- package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +42 -42
- package/coverage/lcov-report/db/newid.js.html +4 -4
- package/coverage/lcov-report/db/utils.js.html +87 -87
- package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
- package/coverage/lcov-report/events/index.html +1 -1
- package/coverage/lcov-report/events/index.js.html +5 -5
- package/coverage/lcov-report/events/utils.js.html +3 -3
- package/coverage/lcov-report/index.html +120 -135
- package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
- package/coverage/lcov-report/integrations/tests/index.html +1 -1
- package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
- package/coverage/lcov-report/middleware/authorized.js.html +65 -173
- package/coverage/lcov-report/middleware/builder.js.html +10 -10
- package/coverage/lcov-report/middleware/currentapp.js.html +83 -95
- package/coverage/lcov-report/middleware/index.html +38 -38
- package/coverage/lcov-report/middleware/joi-validator.js.html +3 -3
- package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
- package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
- package/coverage/lcov-report/middleware/usageQuota.js.html +53 -281
- package/coverage/lcov-report/middleware/utils.js.html +2 -2
- package/coverage/lcov-report/threads/automation.js.html +24 -30
- package/coverage/lcov-report/threads/index.html +26 -26
- package/coverage/lcov-report/threads/index.js.html +10 -10
- package/coverage/lcov-report/threads/query.js.html +26 -62
- package/coverage/lcov-report/threads/utils.js.html +14 -14
- package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
- package/coverage/lcov-report/utilities/budibaseDir.js.html +7 -7
- package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
- package/coverage/lcov-report/utilities/csvParser.js.html +6 -6
- package/coverage/lcov-report/utilities/global.js.html +49 -58
- package/coverage/lcov-report/utilities/index.html +37 -37
- package/coverage/lcov-report/utilities/index.js.html +73 -43
- package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +8 -8
- package/coverage/lcov-report/utilities/queue/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.js.html +7 -7
- package/coverage/lcov-report/utilities/rowProcessor/index.html +27 -27
- package/coverage/lcov-report/utilities/rowProcessor/index.js.html +103 -97
- package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +27 -75
- package/coverage/lcov-report/utilities/scriptRunner.js.html +5 -5
- package/coverage/lcov-report/utilities/security.js.html +8 -8
- package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
- package/coverage/lcov-report/utilities/users.js.html +9 -9
- package/coverage/lcov-report/utilities/workerRequests.js.html +112 -43
- package/coverage/lcov.info +4423 -5022
- package/dist/api/controllers/application.js +60 -90
- package/dist/api/controllers/auth.js +5 -8
- package/dist/api/controllers/automation.js +19 -14
- package/dist/api/controllers/cloud.js +3 -2
- package/dist/api/controllers/component.js +4 -3
- package/dist/api/controllers/datasource.js +10 -20
- package/dist/api/controllers/deploy/Deployment.js +6 -3
- package/dist/api/controllers/deploy/index.js +13 -12
- package/dist/api/controllers/dev.js +5 -5
- package/dist/api/controllers/hosting.js +30 -0
- package/dist/api/controllers/layout.js +3 -3
- package/dist/api/controllers/metadata.js +4 -4
- package/dist/api/controllers/permission.js +4 -4
- package/dist/api/controllers/query/import/index.js +6 -4
- package/dist/api/controllers/query/index.js +10 -11
- package/dist/api/controllers/role.js +5 -5
- package/dist/api/controllers/routing.js +6 -5
- package/dist/api/controllers/row/ExternalRequest.js +63 -76
- package/dist/api/controllers/row/external.js +4 -4
- package/dist/api/controllers/row/internal.js +93 -55
- package/dist/api/controllers/row/internalSearch.js +17 -23
- package/dist/api/controllers/row/utils.js +14 -13
- package/dist/api/controllers/screen.js +7 -5
- package/dist/api/controllers/static/index.js +12 -61
- package/dist/api/controllers/table/external.js +10 -7
- package/dist/api/controllers/table/index.js +13 -16
- package/dist/api/controllers/table/internal.js +16 -22
- package/dist/api/controllers/table/utils.js +35 -62
- package/dist/api/controllers/user.js +20 -18
- package/dist/api/controllers/view/index.js +10 -8
- package/dist/api/controllers/view/utils.js +4 -9
- package/dist/api/controllers/webhook.js +8 -10
- package/dist/api/routes/hosting.js +11 -0
- package/dist/api/routes/index.js +2 -2
- package/dist/api/routes/static.js +1 -2
- package/dist/api/routes/tests/utilities/TestFunctions.js +17 -37
- package/dist/app.js +5 -35
- package/dist/automations/automationUtils.js +3 -2
- package/dist/automations/steps/createRow.js +5 -3
- package/dist/automations/steps/deleteRow.js +4 -1
- package/dist/automations/steps/updateRow.js +1 -1
- package/dist/automations/triggers.js +25 -27
- package/dist/automations/utils.js +5 -10
- package/dist/constants/index.js +0 -7
- package/dist/db/linkedRows/LinkController.js +7 -3
- package/dist/db/linkedRows/index.js +27 -16
- package/dist/db/linkedRows/linkUtils.js +6 -6
- package/dist/db/views/staticViews.js +10 -9
- package/dist/definitions/datasource.js +0 -1
- package/dist/environment.js +1 -4
- package/dist/integrations/base/sql.js +6 -13
- package/dist/integrations/index.js +0 -3
- package/dist/integrations/utils.js +9 -60
- package/dist/middleware/authorized.js +30 -57
- package/dist/middleware/builder.js +2 -2
- package/dist/middleware/currentapp.js +37 -41
- package/dist/middleware/usageQuota.js +15 -82
- package/dist/package.json +5 -8
- package/dist/tests/utilities/TestConfiguration.js +50 -80
- package/dist/threads/automation.js +11 -13
- package/dist/threads/query.js +13 -23
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utilities/fileSystem/index.js +3 -4
- package/dist/utilities/global.js +12 -15
- package/dist/utilities/index.js +17 -7
- package/dist/utilities/routing/index.js +5 -5
- package/dist/utilities/rowProcessor/index.js +17 -23
- package/dist/utilities/rowProcessor/utils.js +4 -14
- package/dist/utilities/{usageQuota/index.js → usageQuota.js} +31 -45
- package/dist/utilities/users.js +3 -3
- package/dist/utilities/workerRequests.js +24 -4
- package/nodemon.json +1 -1
- package/package.json +6 -9
- package/scripts/likeCypress.ts +1 -1
- package/src/api/controllers/application.js +50 -85
- package/src/api/controllers/auth.js +5 -8
- package/src/api/controllers/automation.js +23 -13
- package/src/api/controllers/cloud.js +3 -2
- package/src/api/controllers/component.js +4 -3
- package/src/api/controllers/datasource.js +11 -21
- package/src/api/controllers/deploy/Deployment.js +7 -3
- package/src/api/controllers/deploy/index.js +13 -20
- package/src/api/controllers/dev.js +5 -5
- package/src/api/controllers/hosting.js +22 -0
- package/src/api/controllers/layout.js +3 -3
- package/src/api/controllers/metadata.js +9 -4
- package/src/api/controllers/permission.js +4 -4
- package/src/api/controllers/query/import/index.ts +6 -4
- package/src/api/controllers/query/import/tests/index.spec.js +1 -2
- package/src/api/controllers/query/index.js +10 -11
- package/src/api/controllers/role.js +5 -5
- package/src/api/controllers/routing.js +6 -5
- package/src/api/controllers/row/ExternalRequest.ts +42 -53
- package/src/api/controllers/row/external.js +6 -4
- package/src/api/controllers/row/internal.js +90 -54
- package/src/api/controllers/row/internalSearch.js +17 -23
- package/src/api/controllers/row/utils.js +18 -13
- package/src/api/controllers/screen.js +7 -5
- package/src/api/controllers/static/index.js +12 -65
- package/src/api/controllers/table/external.js +10 -7
- package/src/api/controllers/table/index.js +28 -20
- package/src/api/controllers/table/internal.js +19 -24
- package/src/api/controllers/table/utils.js +42 -78
- package/src/api/controllers/user.js +20 -19
- package/src/api/controllers/view/index.js +10 -8
- package/src/api/controllers/view/utils.js +4 -9
- package/src/api/controllers/webhook.js +8 -10
- package/src/api/routes/hosting.js +13 -0
- package/src/api/routes/index.js +2 -2
- package/src/api/routes/static.js +0 -5
- package/src/api/routes/tests/application.spec.js +2 -2
- package/src/api/routes/tests/auth.spec.js +2 -1
- package/src/api/routes/tests/automation.spec.js +0 -1
- package/src/api/routes/tests/hosting.spec.js +36 -0
- package/src/api/routes/tests/misc.spec.js +1 -0
- package/src/api/routes/tests/routing.spec.js +12 -21
- package/src/api/routes/tests/row.spec.js +4 -7
- package/src/api/routes/tests/utilities/TestFunctions.js +17 -39
- package/src/app.ts +5 -18
- package/src/automations/automationUtils.js +3 -2
- package/src/automations/steps/createRow.js +5 -2
- package/src/automations/steps/deleteRow.js +4 -1
- package/src/automations/steps/updateRow.js +1 -1
- package/src/automations/triggers.js +31 -33
- package/src/automations/utils.js +5 -9
- package/src/constants/index.js +0 -9
- package/src/db/linkedRows/LinkController.js +7 -3
- package/src/db/linkedRows/index.js +31 -16
- package/src/db/linkedRows/linkUtils.js +6 -6
- package/src/db/tests/linkController.spec.js +1 -0
- package/src/db/tests/linkTests.spec.js +6 -5
- package/src/db/views/staticViews.js +10 -8
- package/src/definitions/common.ts +0 -3
- package/src/definitions/datasource.ts +0 -3
- package/src/environment.js +1 -4
- package/src/integrations/base/sql.ts +7 -14
- package/src/integrations/index.ts +0 -3
- package/src/integrations/tests/sql.spec.js +0 -16
- package/src/integrations/utils.ts +12 -75
- package/src/middleware/authorized.js +30 -66
- package/src/middleware/builder.js +2 -2
- package/src/middleware/currentapp.js +46 -50
- package/src/middleware/tests/authorized.spec.js +6 -13
- package/src/middleware/tests/currentapp.spec.js +0 -6
- package/src/middleware/tests/usageQuota.spec.js +24 -18
- package/src/middleware/usageQuota.js +17 -93
- package/src/tests/utilities/TestConfiguration.js +55 -82
- package/src/threads/automation.js +15 -17
- package/src/threads/query.js +14 -26
- package/src/utilities/fileSystem/index.js +3 -4
- package/src/utilities/global.js +12 -15
- package/src/utilities/index.js +17 -7
- package/src/utilities/routing/index.js +5 -5
- package/src/utilities/rowProcessor/index.js +27 -25
- package/src/utilities/rowProcessor/utils.js +7 -23
- package/src/utilities/usageQuota.js +73 -0
- package/src/utilities/users.js +3 -3
- package/src/utilities/workerRequests.js +27 -4
- package/builder/assets/index.83c0944f.css +0 -1
- package/coverage/lcov-report/api/controllers/migrations.js.html +0 -119
- package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +0 -548
- package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +0 -599
- package/coverage/lcov-report/utilities/usageQuota/index.html +0 -141
- package/coverage/lcov-report/utilities/usageQuota/index.js.html +0 -359
- package/coverage/lcov-report/utilities/usageQuota/rows.js.html +0 -305
- package/dist/api/controllers/migrations.js +0 -21
- package/dist/api/controllers/row/staticFormula.js +0 -147
- package/dist/api/controllers/table/bulkFormula.js +0 -159
- package/dist/api/routes/migrations.js +0 -9
- package/dist/integrations/googlesheets.js +0 -340
- package/dist/migrations/functions/appUrls.js +0 -46
- package/dist/migrations/functions/quotas1.js +0 -50
- package/dist/migrations/functions/usageQuotas/index.js +0 -20
- package/dist/migrations/functions/usageQuotas/syncApps.js +0 -30
- package/dist/migrations/functions/usageQuotas/syncRows.js +0 -33
- package/dist/migrations/functions/userEmailViewCasing.js +0 -24
- package/dist/migrations/index.js +0 -62
- package/dist/utilities/usageQuota/rows.js +0 -78
- package/dist/utilities/usageQuota/usageQuoteReset.js +0 -16
- package/src/api/controllers/migrations.js +0 -13
- package/src/api/controllers/row/staticFormula.js +0 -156
- package/src/api/controllers/table/bulkFormula.js +0 -173
- package/src/api/routes/migrations.js +0 -14
- package/src/api/routes/tests/static.spec.js +0 -98
- package/src/integrations/googlesheets.ts +0 -353
- package/src/migrations/functions/appUrls.ts +0 -34
- package/src/migrations/functions/quotas1.ts +0 -20
- package/src/migrations/functions/tests/appUrls.spec.js +0 -29
- package/src/migrations/functions/tests/quotas1.spec.js +0 -27
- package/src/migrations/functions/tests/userEmailViewCasing.spec.js +0 -25
- package/src/migrations/functions/usageQuotas/index.ts +0 -8
- package/src/migrations/functions/usageQuotas/syncApps.ts +0 -19
- package/src/migrations/functions/usageQuotas/syncRows.ts +0 -22
- package/src/migrations/functions/usageQuotas/tests/syncApps.spec.js +0 -37
- package/src/migrations/functions/usageQuotas/tests/syncRows.spec.js +0 -43
- package/src/migrations/functions/userEmailViewCasing.ts +0 -13
- package/src/migrations/index.ts +0 -56
- package/src/utilities/tests/usageQuota/usageQuota.spec.js +0 -72
- package/src/utilities/usageQuota/index.js +0 -93
- package/src/utilities/usageQuota/rows.js +0 -75
- package/src/utilities/usageQuota/usageQuoteReset.js +0 -18
|
@@ -23,16 +23,16 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">4.66% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>7/150</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
33
|
<span class="strong">0% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>0/
|
|
35
|
+
<span class='fraction'>0/87</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">4.76% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>7/147</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -446,16 +446,9 @@
|
|
|
446
446
|
<a name='L387'></a><a href='#L387'>387</a>
|
|
447
447
|
<a name='L388'></a><a href='#L388'>388</a>
|
|
448
448
|
<a name='L389'></a><a href='#L389'>389</a>
|
|
449
|
-
<a name='L390'></a><a href='#L390'>390</a>
|
|
450
|
-
<
|
|
451
|
-
<
|
|
452
|
-
<a name='L393'></a><a href='#L393'>393</a>
|
|
453
|
-
<a name='L394'></a><a href='#L394'>394</a>
|
|
454
|
-
<a name='L395'></a><a href='#L395'>395</a>
|
|
455
|
-
<a name='L396'></a><a href='#L396'>396</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">38x</span>
|
|
456
|
-
<span class="cline-any cline-yes">38x</span>
|
|
457
|
-
<span class="cline-any cline-yes">38x</span>
|
|
458
|
-
<span class="cline-any cline-yes">38x</span>
|
|
449
|
+
<a name='L390'></a><a href='#L390'>390</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">33x</span>
|
|
450
|
+
<span class="cline-any cline-yes">33x</span>
|
|
451
|
+
<span class="cline-any cline-yes">33x</span>
|
|
459
452
|
<span class="cline-any cline-neutral"> </span>
|
|
460
453
|
<span class="cline-any cline-neutral"> </span>
|
|
461
454
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -464,6 +457,7 @@
|
|
|
464
457
|
<span class="cline-any cline-neutral"> </span>
|
|
465
458
|
<span class="cline-any cline-neutral"> </span>
|
|
466
459
|
<span class="cline-any cline-no"> </span>
|
|
460
|
+
<span class="cline-any cline-no"> </span>
|
|
467
461
|
<span class="cline-any cline-neutral"> </span>
|
|
468
462
|
<span class="cline-any cline-neutral"> </span>
|
|
469
463
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -494,29 +488,21 @@
|
|
|
494
488
|
<span class="cline-any cline-no"> </span>
|
|
495
489
|
<span class="cline-any cline-no"> </span>
|
|
496
490
|
<span class="cline-any cline-neutral"> </span>
|
|
497
|
-
<span class="cline-any cline-no"> </span>
|
|
498
|
-
<span class="cline-any cline-neutral"> </span>
|
|
499
491
|
<span class="cline-any cline-neutral"> </span>
|
|
500
492
|
<span class="cline-any cline-neutral"> </span>
|
|
501
493
|
<span class="cline-any cline-no"> </span>
|
|
502
494
|
<span class="cline-any cline-no"> </span>
|
|
503
495
|
<span class="cline-any cline-neutral"> </span>
|
|
504
|
-
<span class="cline-any cline-no"> </span>
|
|
505
|
-
<span class="cline-any cline-neutral"> </span>
|
|
506
496
|
<span class="cline-any cline-neutral"> </span>
|
|
507
497
|
<span class="cline-any cline-neutral"> </span>
|
|
508
498
|
<span class="cline-any cline-no"> </span>
|
|
509
499
|
<span class="cline-any cline-no"> </span>
|
|
510
500
|
<span class="cline-any cline-neutral"> </span>
|
|
511
|
-
<span class="cline-any cline-no"> </span>
|
|
512
|
-
<span class="cline-any cline-neutral"> </span>
|
|
513
501
|
<span class="cline-any cline-neutral"> </span>
|
|
514
502
|
<span class="cline-any cline-neutral"> </span>
|
|
515
503
|
<span class="cline-any cline-no"> </span>
|
|
516
504
|
<span class="cline-any cline-no"> </span>
|
|
517
505
|
<span class="cline-any cline-neutral"> </span>
|
|
518
|
-
<span class="cline-any cline-no"> </span>
|
|
519
|
-
<span class="cline-any cline-neutral"> </span>
|
|
520
506
|
<span class="cline-any cline-neutral"> </span>
|
|
521
507
|
<span class="cline-any cline-neutral"> </span>
|
|
522
508
|
<span class="cline-any cline-no"> </span>
|
|
@@ -696,7 +682,6 @@
|
|
|
696
682
|
<span class="cline-any cline-neutral"> </span>
|
|
697
683
|
<span class="cline-any cline-neutral"> </span>
|
|
698
684
|
<span class="cline-any cline-no"> </span>
|
|
699
|
-
<span class="cline-any cline-no"> </span>
|
|
700
685
|
<span class="cline-any cline-neutral"> </span>
|
|
701
686
|
<span class="cline-any cline-neutral"> </span>
|
|
702
687
|
<span class="cline-any cline-no"> </span>
|
|
@@ -710,7 +695,7 @@
|
|
|
710
695
|
<span class="cline-any cline-neutral"> </span>
|
|
711
696
|
<span class="cline-any cline-neutral"> </span>
|
|
712
697
|
<span class="cline-any cline-neutral"> </span>
|
|
713
|
-
<span class="cline-any cline-yes">
|
|
698
|
+
<span class="cline-any cline-yes">33x</span>
|
|
714
699
|
<span class="cline-any cline-no"> </span>
|
|
715
700
|
<span class="cline-any cline-neutral"> </span>
|
|
716
701
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -745,7 +730,8 @@
|
|
|
745
730
|
<span class="cline-any cline-neutral"> </span>
|
|
746
731
|
<span class="cline-any cline-neutral"> </span>
|
|
747
732
|
<span class="cline-any cline-neutral"> </span>
|
|
748
|
-
<span class="cline-any cline-
|
|
733
|
+
<span class="cline-any cline-neutral"> </span>
|
|
734
|
+
<span class="cline-any cline-yes">33x</span>
|
|
749
735
|
<span class="cline-any cline-no"> </span>
|
|
750
736
|
<span class="cline-any cline-no"> </span>
|
|
751
737
|
<span class="cline-any cline-no"> </span>
|
|
@@ -793,7 +779,8 @@
|
|
|
793
779
|
<span class="cline-any cline-neutral"> </span>
|
|
794
780
|
<span class="cline-any cline-neutral"> </span>
|
|
795
781
|
<span class="cline-any cline-neutral"> </span>
|
|
796
|
-
<span class="cline-any cline-
|
|
782
|
+
<span class="cline-any cline-neutral"> </span>
|
|
783
|
+
<span class="cline-any cline-yes">33x</span>
|
|
797
784
|
<span class="cline-any cline-no"> </span>
|
|
798
785
|
<span class="cline-any cline-no"> </span>
|
|
799
786
|
<span class="cline-any cline-no"> </span>
|
|
@@ -838,7 +825,8 @@
|
|
|
838
825
|
<span class="cline-any cline-neutral"> </span>
|
|
839
826
|
<span class="cline-any cline-neutral"> </span>
|
|
840
827
|
<span class="cline-any cline-neutral"> </span>
|
|
841
|
-
<span class="cline-any cline-
|
|
828
|
+
<span class="cline-any cline-neutral"> </span>
|
|
829
|
+
<span class="cline-any cline-yes">33x</span>
|
|
842
830
|
<span class="cline-any cline-no"> </span>
|
|
843
831
|
<span class="cline-any cline-no"> </span>
|
|
844
832
|
<span class="cline-any cline-no"> </span>
|
|
@@ -850,14 +838,14 @@
|
|
|
850
838
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">const { SearchIndexes } = require("../../../db/utils")
|
|
851
839
|
const fetch = require("node-fetch")
|
|
852
840
|
const { getCouchUrl } = require("@budibase/backend-core/db")
|
|
853
|
-
const { getAppId } = require("@budibase/backend-core/context")
|
|
854
841
|
|
|
855
842
|
/**
|
|
856
843
|
* Class to build lucene query URLs.
|
|
857
844
|
* Optionally takes a base lucene query object.
|
|
858
845
|
*/
|
|
859
846
|
class QueryBuilder {
|
|
860
|
-
<span class="fstat-no" title="function not covered" > co</span>nstructor(base) {
|
|
847
|
+
<span class="fstat-no" title="function not covered" > co</span>nstructor(appId, base) {
|
|
848
|
+
<span class="cstat-no" title="statement not covered" > this.appId = appId</span>
|
|
861
849
|
<span class="cstat-no" title="statement not covered" > this.query = {</span>
|
|
862
850
|
string: {},
|
|
863
851
|
fuzzy: {},
|
|
@@ -886,30 +874,22 @@ class QueryBuilder {
|
|
|
886
874
|
}
|
|
887
875
|
|
|
888
876
|
<span class="fstat-no" title="function not covered" > se</span>tLimit(limit) {
|
|
889
|
-
<span class="cstat-no" title="statement not covered" >
|
|
890
|
-
<span class="cstat-no" title="statement not covered" > this.limit = limit</span>
|
|
891
|
-
}
|
|
877
|
+
<span class="cstat-no" title="statement not covered" > this.limit = limit</span>
|
|
892
878
|
<span class="cstat-no" title="statement not covered" > return this</span>
|
|
893
879
|
}
|
|
894
880
|
|
|
895
881
|
<span class="fstat-no" title="function not covered" > se</span>tSort(sort) {
|
|
896
|
-
<span class="cstat-no" title="statement not covered" >
|
|
897
|
-
<span class="cstat-no" title="statement not covered" > this.sort = sort</span>
|
|
898
|
-
}
|
|
882
|
+
<span class="cstat-no" title="statement not covered" > this.sort = sort</span>
|
|
899
883
|
<span class="cstat-no" title="statement not covered" > return this</span>
|
|
900
884
|
}
|
|
901
885
|
|
|
902
886
|
<span class="fstat-no" title="function not covered" > se</span>tSortOrder(sortOrder) {
|
|
903
|
-
<span class="cstat-no" title="statement not covered" >
|
|
904
|
-
<span class="cstat-no" title="statement not covered" > this.sortOrder = sortOrder</span>
|
|
905
|
-
}
|
|
887
|
+
<span class="cstat-no" title="statement not covered" > this.sortOrder = sortOrder</span>
|
|
906
888
|
<span class="cstat-no" title="statement not covered" > return this</span>
|
|
907
889
|
}
|
|
908
890
|
|
|
909
891
|
<span class="fstat-no" title="function not covered" > se</span>tSortType(sortType) {
|
|
910
|
-
<span class="cstat-no" title="statement not covered" >
|
|
911
|
-
<span class="cstat-no" title="statement not covered" > this.sortType = sortType</span>
|
|
912
|
-
}
|
|
892
|
+
<span class="cstat-no" title="statement not covered" > this.sortType = sortType</span>
|
|
913
893
|
<span class="cstat-no" title="statement not covered" > return this</span>
|
|
914
894
|
}
|
|
915
895
|
|
|
@@ -1090,8 +1070,7 @@ class QueryBuilder {
|
|
|
1090
1070
|
}
|
|
1091
1071
|
|
|
1092
1072
|
<span class="fstat-no" title="function not covered" > as</span>ync run() {
|
|
1093
|
-
const
|
|
1094
|
-
const url = <span class="cstat-no" title="statement not covered" >`${getCouchUrl()}/${appId}/_design/database/_search/${</span>
|
|
1073
|
+
const url = <span class="cstat-no" title="statement not covered" >`${getCouchUrl()}/${this.appId}/_design/database/_search/${</span>
|
|
1095
1074
|
SearchIndexes.ROWS
|
|
1096
1075
|
}`
|
|
1097
1076
|
const body = <span class="cstat-no" title="statement not covered" >this.buildSearchBody()</span>
|
|
@@ -1128,6 +1107,7 @@ const runQuery = <span class="fstat-no" title="function not covered" >as</span>y
|
|
|
1128
1107
|
* Gets round the fixed limit of 200 results from a query by fetching as many
|
|
1129
1108
|
* pages as required and concatenating the results. This recursively operates
|
|
1130
1109
|
* until enough results have been found.
|
|
1110
|
+
* @param appId {string} The app ID to search
|
|
1131
1111
|
* @param query {object} The JSON query structure
|
|
1132
1112
|
* @param params {object} The search params including:
|
|
1133
1113
|
* tableId {string} The table ID to search
|
|
@@ -1140,7 +1120,7 @@ const runQuery = <span class="fstat-no" title="function not covered" >as</span>y
|
|
|
1140
1120
|
* rows {array|null} Current results in the recursive search
|
|
1141
1121
|
* @returns {Promise<*[]|*>}
|
|
1142
1122
|
*/
|
|
1143
|
-
const recursiveSearch = <span class="fstat-no" title="function not covered" >as</span>ync (query, params) => {
|
|
1123
|
+
const recursiveSearch = <span class="fstat-no" title="function not covered" >as</span>ync (appId, query, params) => {
|
|
1144
1124
|
const bookmark = <span class="cstat-no" title="statement not covered" >params.bookmark</span>
|
|
1145
1125
|
const rows = <span class="cstat-no" title="statement not covered" >params.rows || []</span>
|
|
1146
1126
|
<span class="cstat-no" title="statement not covered" > if (rows.length >= params.limit) {</span>
|
|
@@ -1150,7 +1130,7 @@ const recursiveSearch = <span class="fstat-no" title="function not covered" >as<
|
|
|
1150
1130
|
<span class="cstat-no" title="statement not covered" > if (rows.length > params.limit - 200) {</span>
|
|
1151
1131
|
<span class="cstat-no" title="statement not covered" > pageSize = params.limit - rows.length</span>
|
|
1152
1132
|
}
|
|
1153
|
-
const page = <span class="cstat-no" title="statement not covered" >await new QueryBuilder(query)</span>
|
|
1133
|
+
const page = <span class="cstat-no" title="statement not covered" >await new QueryBuilder(appId, query)</span>
|
|
1154
1134
|
.setVersion(params.version)
|
|
1155
1135
|
.setTable(params.tableId)
|
|
1156
1136
|
.setBookmark(bookmark)
|
|
@@ -1170,13 +1150,14 @@ const recursiveSearch = <span class="fstat-no" title="function not covered" >as<
|
|
|
1170
1150
|
bookmark: page.bookmark,
|
|
1171
1151
|
rows: [...rows, ...page.rows],
|
|
1172
1152
|
}
|
|
1173
|
-
<span class="cstat-no" title="statement not covered" > return await recursiveSearch(query, newParams)</span>
|
|
1153
|
+
<span class="cstat-no" title="statement not covered" > return await recursiveSearch(appId, query, newParams)</span>
|
|
1174
1154
|
}
|
|
1175
1155
|
|
|
1176
1156
|
/**
|
|
1177
1157
|
* Performs a paginated search. A bookmark will be returned to allow the next
|
|
1178
1158
|
* page to be fetched. There is a max limit off 200 results per page in a
|
|
1179
1159
|
* paginated search.
|
|
1160
|
+
* @param appId {string} The app ID to search
|
|
1180
1161
|
* @param query {object} The JSON query structure
|
|
1181
1162
|
* @param params {object} The search params including:
|
|
1182
1163
|
* tableId {string} The table ID to search
|
|
@@ -1188,13 +1169,13 @@ const recursiveSearch = <span class="fstat-no" title="function not covered" >as<
|
|
|
1188
1169
|
* bookmark {string} The bookmark to resume from
|
|
1189
1170
|
* @returns {Promise<{hasNextPage: boolean, rows: *[]}>}
|
|
1190
1171
|
*/
|
|
1191
|
-
exports.paginatedSearch = <span class="fstat-no" title="function not covered" >as</span>ync (query, params) => {
|
|
1172
|
+
exports.paginatedSearch = <span class="fstat-no" title="function not covered" >as</span>ync (appId, query, params) => {
|
|
1192
1173
|
let limit = <span class="cstat-no" title="statement not covered" >params.limit</span>
|
|
1193
1174
|
<span class="cstat-no" title="statement not covered" > if (limit == null || isNaN(limit) || limit < 0) {</span>
|
|
1194
1175
|
<span class="cstat-no" title="statement not covered" > limit = 50</span>
|
|
1195
1176
|
}
|
|
1196
1177
|
<span class="cstat-no" title="statement not covered" > limit = Math.min(limit, 200)</span>
|
|
1197
|
-
const search = <span class="cstat-no" title="statement not covered" >new QueryBuilder(query)</span>
|
|
1178
|
+
const search = <span class="cstat-no" title="statement not covered" >new QueryBuilder(appId, query)</span>
|
|
1198
1179
|
.setVersion(params.version)
|
|
1199
1180
|
.setTable(params.tableId)
|
|
1200
1181
|
.setSort(params.sort)
|
|
@@ -1223,6 +1204,7 @@ exports.paginatedSearch = <span class="fstat-no" title="function not covered" >a
|
|
|
1223
1204
|
* desired amount of results. There is a limit of 1000 results to avoid
|
|
1224
1205
|
* heavy performance hits, and to avoid client components breaking from
|
|
1225
1206
|
* handling too much data.
|
|
1207
|
+
* @param appId {string} The app ID to search
|
|
1226
1208
|
* @param query {object} The JSON query structure
|
|
1227
1209
|
* @param params {object} The search params including:
|
|
1228
1210
|
* tableId {string} The table ID to search
|
|
@@ -1233,13 +1215,13 @@ exports.paginatedSearch = <span class="fstat-no" title="function not covered" >a
|
|
|
1233
1215
|
* limit {number} The desired number of results
|
|
1234
1216
|
* @returns {Promise<{rows: *}>}
|
|
1235
1217
|
*/
|
|
1236
|
-
exports.fullSearch = <span class="fstat-no" title="function not covered" >as</span>ync (query, params) => {
|
|
1218
|
+
exports.fullSearch = <span class="fstat-no" title="function not covered" >as</span>ync (appId, query, params) => {
|
|
1237
1219
|
let limit = <span class="cstat-no" title="statement not covered" >params.limit</span>
|
|
1238
1220
|
<span class="cstat-no" title="statement not covered" > if (limit == null || isNaN(limit) || limit < 0) {</span>
|
|
1239
1221
|
<span class="cstat-no" title="statement not covered" > limit = 1000</span>
|
|
1240
1222
|
}
|
|
1241
1223
|
<span class="cstat-no" title="statement not covered" > params.limit = Math.min(limit, 1000)</span>
|
|
1242
|
-
const rows = <span class="cstat-no" title="statement not covered" >await recursiveSearch(query, params)</span>
|
|
1224
|
+
const rows = <span class="cstat-no" title="statement not covered" >await recursiveSearch(appId, query, params)</span>
|
|
1243
1225
|
<span class="cstat-no" title="statement not covered" > return { rows }</span>
|
|
1244
1226
|
}
|
|
1245
1227
|
</pre></td></tr></table></pre>
|
|
@@ -1249,7 +1231,7 @@ exports.fullSearch = <span class="fstat-no" title="function not covered" >as</sp
|
|
|
1249
1231
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
1250
1232
|
Code coverage generated by
|
|
1251
1233
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
1252
|
-
at
|
|
1234
|
+
at Fri Feb 04 2022 12:19:28 GMT+0000 (Coordinated Universal Time)
|
|
1253
1235
|
</div>
|
|
1254
1236
|
</div>
|
|
1255
1237
|
<script src="../../../prettify.js"></script>
|
|
@@ -23,16 +23,16 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">67.92% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>36/53</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">40% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>12/30</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">67.3% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>35/52</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -148,16 +148,21 @@
|
|
|
148
148
|
<a name='L89'></a><a href='#L89'>89</a>
|
|
149
149
|
<a name='L90'></a><a href='#L90'>90</a>
|
|
150
150
|
<a name='L91'></a><a href='#L91'>91</a>
|
|
151
|
-
<a name='L92'></a><a href='#L92'>92</a
|
|
152
|
-
<
|
|
153
|
-
<
|
|
154
|
-
<
|
|
155
|
-
<
|
|
156
|
-
<span class="cline-any cline-yes">
|
|
157
|
-
<span class="cline-any cline-yes">
|
|
158
|
-
<span class="cline-any cline-yes">
|
|
159
|
-
<span class="cline-any cline-
|
|
160
|
-
<span class="cline-any cline-yes">
|
|
151
|
+
<a name='L92'></a><a href='#L92'>92</a>
|
|
152
|
+
<a name='L93'></a><a href='#L93'>93</a>
|
|
153
|
+
<a name='L94'></a><a href='#L94'>94</a>
|
|
154
|
+
<a name='L95'></a><a href='#L95'>95</a>
|
|
155
|
+
<a name='L96'></a><a href='#L96'>96</a>
|
|
156
|
+
<a name='L97'></a><a href='#L97'>97</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">34x</span>
|
|
157
|
+
<span class="cline-any cline-yes">34x</span>
|
|
158
|
+
<span class="cline-any cline-yes">34x</span>
|
|
159
|
+
<span class="cline-any cline-yes">34x</span>
|
|
160
|
+
<span class="cline-any cline-yes">34x</span>
|
|
161
|
+
<span class="cline-any cline-yes">34x</span>
|
|
162
|
+
<span class="cline-any cline-yes">34x</span>
|
|
163
|
+
<span class="cline-any cline-yes">34x</span>
|
|
164
|
+
<span class="cline-any cline-neutral"> </span>
|
|
165
|
+
<span class="cline-any cline-yes">34x</span>
|
|
161
166
|
<span class="cline-any cline-neutral"> </span>
|
|
162
167
|
<span class="cline-any cline-yes">2x</span>
|
|
163
168
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -167,15 +172,14 @@
|
|
|
167
172
|
<span class="cline-any cline-neutral"> </span>
|
|
168
173
|
<span class="cline-any cline-neutral"> </span>
|
|
169
174
|
<span class="cline-any cline-neutral"> </span>
|
|
170
|
-
<span class="cline-any cline-yes">
|
|
175
|
+
<span class="cline-any cline-yes">34x</span>
|
|
171
176
|
<span class="cline-any cline-yes">1x</span>
|
|
172
177
|
<span class="cline-any cline-yes">1x</span>
|
|
173
178
|
<span class="cline-any cline-yes">1x</span>
|
|
174
179
|
<span class="cline-any cline-yes">1x</span>
|
|
175
180
|
<span class="cline-any cline-neutral"> </span>
|
|
176
181
|
<span class="cline-any cline-neutral"> </span>
|
|
177
|
-
<span class="cline-any cline-yes">
|
|
178
|
-
<span class="cline-any cline-yes">19x</span>
|
|
182
|
+
<span class="cline-any cline-yes">34x</span>
|
|
179
183
|
<span class="cline-any cline-neutral"> </span>
|
|
180
184
|
<span class="cline-any cline-neutral"> </span>
|
|
181
185
|
<span class="cline-any cline-yes">19x</span>
|
|
@@ -193,60 +197,66 @@
|
|
|
193
197
|
<span class="cline-any cline-yes">16x</span>
|
|
194
198
|
<span class="cline-any cline-neutral"> </span>
|
|
195
199
|
<span class="cline-any cline-neutral"> </span>
|
|
196
|
-
<span class="cline-any cline-yes">
|
|
197
|
-
<span class="cline-any cline-yes">
|
|
200
|
+
<span class="cline-any cline-yes">34x</span>
|
|
201
|
+
<span class="cline-any cline-yes">74x</span>
|
|
198
202
|
<span class="cline-any cline-yes">2x</span>
|
|
199
203
|
<span class="cline-any cline-yes">2x</span>
|
|
200
204
|
<span class="cline-any cline-neutral"> </span>
|
|
201
|
-
<span class="cline-any cline-yes">
|
|
202
|
-
<span class="cline-any cline-yes">
|
|
203
|
-
<span class="cline-any cline-yes">
|
|
204
|
-
<span class="cline-any cline-yes">
|
|
205
|
+
<span class="cline-any cline-yes">74x</span>
|
|
206
|
+
<span class="cline-any cline-yes">74x</span>
|
|
207
|
+
<span class="cline-any cline-yes">206x</span>
|
|
208
|
+
<span class="cline-any cline-yes">206x</span>
|
|
205
209
|
<span class="cline-any cline-neutral"> </span>
|
|
206
|
-
<span class="cline-any cline-yes">
|
|
210
|
+
<span class="cline-any cline-yes">206x</span>
|
|
207
211
|
<span class="cline-any cline-no"> </span>
|
|
208
212
|
<span class="cline-any cline-neutral"> </span>
|
|
209
213
|
<span class="cline-any cline-neutral"> </span>
|
|
210
214
|
<span class="cline-any cline-neutral"> </span>
|
|
211
215
|
<span class="cline-any cline-neutral"> </span>
|
|
212
|
-
<span class="cline-any cline-yes">
|
|
216
|
+
<span class="cline-any cline-yes">206x</span>
|
|
217
|
+
<span class="cline-any cline-neutral"> </span>
|
|
218
|
+
<span class="cline-any cline-no"> </span>
|
|
219
|
+
<span class="cline-any cline-neutral"> </span>
|
|
220
|
+
<span class="cline-any cline-neutral"> </span>
|
|
213
221
|
<span class="cline-any cline-no"> </span>
|
|
214
222
|
<span class="cline-any cline-no"> </span>
|
|
215
223
|
<span class="cline-any cline-no"> </span>
|
|
216
224
|
<span class="cline-any cline-no"> </span>
|
|
217
225
|
<span class="cline-any cline-neutral"> </span>
|
|
218
226
|
<span class="cline-any cline-neutral"> </span>
|
|
219
|
-
<span class="cline-any cline-no"> </span>
|
|
220
227
|
<span class="cline-any cline-neutral"> </span>
|
|
228
|
+
<span class="cline-any cline-neutral"> </span>
|
|
229
|
+
<span class="cline-any cline-neutral"> </span>
|
|
230
|
+
<span class="cline-any cline-no"> </span>
|
|
221
231
|
<span class="cline-any cline-no"> </span>
|
|
222
232
|
<span class="cline-any cline-neutral"> </span>
|
|
223
|
-
<span class="cline-any cline-yes">
|
|
233
|
+
<span class="cline-any cline-yes">206x</span>
|
|
224
234
|
<span class="cline-any cline-neutral"> </span>
|
|
225
235
|
<span class="cline-any cline-no"> </span>
|
|
226
236
|
<span class="cline-any cline-no"> </span>
|
|
227
237
|
<span class="cline-any cline-neutral"> </span>
|
|
228
238
|
<span class="cline-any cline-no"> </span>
|
|
229
239
|
<span class="cline-any cline-neutral"> </span>
|
|
230
|
-
<span class="cline-any cline-yes">
|
|
240
|
+
<span class="cline-any cline-yes">206x</span>
|
|
231
241
|
<span class="cline-any cline-no"> </span>
|
|
232
242
|
<span class="cline-any cline-neutral"> </span>
|
|
233
243
|
<span class="cline-any cline-neutral"> </span>
|
|
234
244
|
<span class="cline-any cline-neutral"> </span>
|
|
235
245
|
<span class="cline-any cline-neutral"> </span>
|
|
236
|
-
<span class="cline-any cline-yes">
|
|
246
|
+
<span class="cline-any cline-yes">206x</span>
|
|
237
247
|
<span class="cline-any cline-neutral"> </span>
|
|
238
|
-
<span class="cline-any cline-yes">
|
|
248
|
+
<span class="cline-any cline-yes">206x</span>
|
|
239
249
|
<span class="cline-any cline-neutral"> </span>
|
|
240
|
-
<span class="cline-any cline-yes">
|
|
250
|
+
<span class="cline-any cline-yes">74x</span>
|
|
241
251
|
<span class="cline-any cline-neutral"> </span>
|
|
242
252
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">const validateJs = require("validate.js")
|
|
243
253
|
const { cloneDeep } = require("lodash/fp")
|
|
254
|
+
const CouchDB = require("../../../db")
|
|
244
255
|
const { InternalTables } = require("../../../db/utils")
|
|
245
256
|
const userController = require("../user")
|
|
246
257
|
const { FieldTypes } = require("../../../constants")
|
|
247
258
|
const { processStringSync } = require("@budibase/string-templates")
|
|
248
259
|
const { makeExternalQuery } = require("../../../integrations/base/utils")
|
|
249
|
-
const { getAppDB } = require("@budibase/backend-core/context")
|
|
250
260
|
|
|
251
261
|
validateJs.extend(validateJs.validators.datetime, {
|
|
252
262
|
parse: function (value) {
|
|
@@ -258,15 +268,14 @@ validateJs.extend(validateJs.validators.datetime, {
|
|
|
258
268
|
},
|
|
259
269
|
})
|
|
260
270
|
|
|
261
|
-
exports.getDatasourceAndQuery = async json => {
|
|
271
|
+
exports.getDatasourceAndQuery = async (appId, json) => {
|
|
262
272
|
const datasourceId = json.endpoint.datasourceId
|
|
263
|
-
const db =
|
|
273
|
+
const db = new CouchDB(appId)
|
|
264
274
|
const datasource = await db.get(datasourceId)
|
|
265
275
|
return makeExternalQuery(datasource, json)
|
|
266
276
|
}
|
|
267
277
|
|
|
268
|
-
exports.findRow = async (ctx, tableId, rowId) => {
|
|
269
|
-
const db = getAppDB()
|
|
278
|
+
exports.findRow = async (ctx, db, tableId, rowId) => {
|
|
270
279
|
let row
|
|
271
280
|
// TODO remove special user case in future
|
|
272
281
|
<span class="missing-if-branch" title="if path not taken" >I</span>if (tableId === InternalTables.USER_METADATA) {
|
|
@@ -284,9 +293,9 @@ exports.findRow = async (ctx, tableId, rowId) => {
|
|
|
284
293
|
return row
|
|
285
294
|
}
|
|
286
295
|
|
|
287
|
-
exports.validate = async ({ tableId, row, table }) => {
|
|
296
|
+
exports.validate = async ({ appId, tableId, row, table }) => {
|
|
288
297
|
if (!table) {
|
|
289
|
-
const db =
|
|
298
|
+
const db = new CouchDB(appId)
|
|
290
299
|
table = await db.get(tableId)
|
|
291
300
|
}
|
|
292
301
|
const errors = {}
|
|
@@ -300,16 +309,22 @@ exports.validate = async ({ tableId, row, table }) => {
|
|
|
300
309
|
let res
|
|
301
310
|
|
|
302
311
|
// Validate.js doesn't seem to handle array
|
|
303
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (type === FieldTypes.ARRAY
|
|
304
|
-
|
|
312
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (type === FieldTypes.ARRAY) {
|
|
313
|
+
const hasValues =
|
|
314
|
+
<span class="cstat-no" title="statement not covered" > Array.isArray(row[fieldName]) && row[fieldName].length > 0</span>
|
|
315
|
+
|
|
316
|
+
// Check values are valid if values are specified
|
|
317
|
+
<span class="cstat-no" title="statement not covered" > if (hasValues) {</span>
|
|
305
318
|
<span class="cstat-no" title="statement not covered" > row[fieldName].map(<span class="fstat-no" title="function not covered" >va</span>l => {</span>
|
|
306
319
|
<span class="cstat-no" title="statement not covered" > if (!constraints.inclusion.includes(val)) {</span>
|
|
307
|
-
<span class="cstat-no" title="statement not covered" > errors[fieldName] = "
|
|
320
|
+
<span class="cstat-no" title="statement not covered" > errors[fieldName] = "Value not in list"</span>
|
|
308
321
|
}
|
|
309
322
|
})
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
// Check for required constraint
|
|
326
|
+
<span class="cstat-no" title="statement not covered" > if (constraints.presence === true && !hasValues) {</span>
|
|
327
|
+
<span class="cstat-no" title="statement not covered" > errors[fieldName] = "Required field"</span>
|
|
313
328
|
}
|
|
314
329
|
} else <span class="missing-if-branch" title="if path not taken" >I</span>if (type === FieldTypes.JSON && <span class="branch-1 cbranch-no" title="branch not covered" >typeof row[fieldName] === "string")</span> {
|
|
315
330
|
// this should only happen if there is an error
|
|
@@ -337,7 +352,7 @@ exports.validate = async ({ tableId, row, table }) => {
|
|
|
337
352
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
338
353
|
Code coverage generated by
|
|
339
354
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
340
|
-
at
|
|
355
|
+
at Fri Feb 04 2022 12:19:28 GMT+0000 (Coordinated Universal Time)
|
|
341
356
|
</div>
|
|
342
357
|
</div>
|
|
343
358
|
<script src="../../../prettify.js"></script>
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
26
|
<span class="strong">100% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>23/23</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
47
|
<span class="strong">100% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>23/23</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -103,11 +103,14 @@
|
|
|
103
103
|
<a name='L44'></a><a href='#L44'>44</a>
|
|
104
104
|
<a name='L45'></a><a href='#L45'>45</a>
|
|
105
105
|
<a name='L46'></a><a href='#L46'>46</a>
|
|
106
|
-
<a name='L47'></a><a href='#L47'>47</a
|
|
107
|
-
<
|
|
108
|
-
<span class="cline-any cline-yes">
|
|
106
|
+
<a name='L47'></a><a href='#L47'>47</a>
|
|
107
|
+
<a name='L48'></a><a href='#L48'>48</a>
|
|
108
|
+
<a name='L49'></a><a href='#L49'>49</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">33x</span>
|
|
109
|
+
<span class="cline-any cline-yes">33x</span>
|
|
110
|
+
<span class="cline-any cline-yes">33x</span>
|
|
109
111
|
<span class="cline-any cline-neutral"> </span>
|
|
110
|
-
<span class="cline-any cline-yes">
|
|
112
|
+
<span class="cline-any cline-yes">33x</span>
|
|
113
|
+
<span class="cline-any cline-yes">1x</span>
|
|
111
114
|
<span class="cline-any cline-yes">1x</span>
|
|
112
115
|
<span class="cline-any cline-neutral"> </span>
|
|
113
116
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -124,7 +127,8 @@
|
|
|
124
127
|
<span class="cline-any cline-neutral"> </span>
|
|
125
128
|
<span class="cline-any cline-neutral"> </span>
|
|
126
129
|
<span class="cline-any cline-neutral"> </span>
|
|
127
|
-
<span class="cline-any cline-yes">
|
|
130
|
+
<span class="cline-any cline-yes">33x</span>
|
|
131
|
+
<span class="cline-any cline-yes">19x</span>
|
|
128
132
|
<span class="cline-any cline-yes">19x</span>
|
|
129
133
|
<span class="cline-any cline-yes">19x</span>
|
|
130
134
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -141,7 +145,7 @@
|
|
|
141
145
|
<span class="cline-any cline-neutral"> </span>
|
|
142
146
|
<span class="cline-any cline-neutral"> </span>
|
|
143
147
|
<span class="cline-any cline-neutral"> </span>
|
|
144
|
-
<span class="cline-any cline-yes">
|
|
148
|
+
<span class="cline-any cline-yes">33x</span>
|
|
145
149
|
<span class="cline-any cline-yes">1x</span>
|
|
146
150
|
<span class="cline-any cline-yes">1x</span>
|
|
147
151
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -149,12 +153,13 @@
|
|
|
149
153
|
<span class="cline-any cline-neutral"> </span>
|
|
150
154
|
<span class="cline-any cline-yes">1x</span>
|
|
151
155
|
<span class="cline-any cline-neutral"> </span>
|
|
152
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">const
|
|
156
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">const CouchDB = require("../../db")
|
|
157
|
+
const { getScreenParams, generateScreenID } = require("../../db/utils")
|
|
153
158
|
const { AccessController } = require("@budibase/backend-core/roles")
|
|
154
|
-
const { getAppDB } = require("@budibase/backend-core/context")
|
|
155
159
|
|
|
156
160
|
exports.fetch = async ctx => {
|
|
157
|
-
const
|
|
161
|
+
const appId = ctx.appId
|
|
162
|
+
const db = new CouchDB(appId)
|
|
158
163
|
|
|
159
164
|
const screens = (
|
|
160
165
|
await db.allDocs(
|
|
@@ -164,14 +169,15 @@ exports.fetch = async ctx => {
|
|
|
164
169
|
)
|
|
165
170
|
).rows.map(element => element.doc)
|
|
166
171
|
|
|
167
|
-
ctx.body = await new AccessController().checkScreensAccess(
|
|
172
|
+
ctx.body = await new AccessController(appId).checkScreensAccess(
|
|
168
173
|
screens,
|
|
169
174
|
ctx.user.role._id
|
|
170
175
|
)
|
|
171
176
|
}
|
|
172
177
|
|
|
173
178
|
exports.save = async ctx => {
|
|
174
|
-
const
|
|
179
|
+
const appId = ctx.appId
|
|
180
|
+
const db = new CouchDB(appId)
|
|
175
181
|
let screen = ctx.request.body
|
|
176
182
|
|
|
177
183
|
if (!screen._id) {
|
|
@@ -188,7 +194,7 @@ exports.save = async ctx => {
|
|
|
188
194
|
}
|
|
189
195
|
|
|
190
196
|
exports.destroy = async ctx => {
|
|
191
|
-
const db =
|
|
197
|
+
const db = new CouchDB(ctx.appId)
|
|
192
198
|
await db.remove(ctx.params.screenId, ctx.params.screenRev)
|
|
193
199
|
ctx.body = {
|
|
194
200
|
message: "Screen deleted successfully",
|
|
@@ -202,7 +208,7 @@ exports.destroy = async ctx => {
|
|
|
202
208
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
203
209
|
Code coverage generated by
|
|
204
210
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
205
|
-
at
|
|
211
|
+
at Fri Feb 04 2022 12:19:28 GMT+0000 (Coordinated Universal Time)
|
|
206
212
|
</div>
|
|
207
213
|
</div>
|
|
208
214
|
<script src="../../prettify.js"></script>
|