@budibase/server 2.3.2-alpha.3 → 2.3.3
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 +1 -1
- package/builder/assets/{index.584d49b4.css → index.4488f38d.css} +1 -1
- package/builder/assets/{index.bef36368.js → index.ef71e5c7.js} +199 -199
- package/builder/index.html +2 -2
- package/coverage/clover.xml +6527 -11196
- package/coverage/coverage-final.json +269 -353
- package/coverage/lcov-report/index.html +180 -405
- package/coverage/lcov-report/src/api/controllers/analytics.ts.html +6 -6
- package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +5 -5
- package/coverage/lcov-report/src/api/controllers/application.ts.html +140 -140
- package/coverage/lcov-report/src/api/controllers/auth.ts.html +9 -9
- package/coverage/lcov-report/src/api/controllers/automation.ts.html +47 -47
- package/coverage/lcov-report/src/api/controllers/backup.ts.html +6 -6
- package/coverage/lcov-report/src/api/controllers/cloud.ts.html +26 -26
- package/coverage/lcov-report/src/api/controllers/component.ts.html +5 -5
- package/coverage/lcov-report/src/api/controllers/datasource.ts.html +37 -37
- package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +14 -14
- package/coverage/lcov-report/src/api/controllers/deploy/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +81 -81
- package/coverage/lcov-report/src/api/controllers/dev.ts.html +26 -26
- package/coverage/lcov-report/src/api/controllers/index.html +37 -37
- package/coverage/lcov-report/src/api/controllers/integration.ts.html +4 -4
- package/coverage/lcov-report/src/api/controllers/layout.ts.html +15 -15
- package/coverage/lcov-report/src/api/controllers/metadata.ts.html +9 -9
- package/coverage/lcov-report/src/api/controllers/migrations.ts.html +4 -4
- package/coverage/lcov-report/src/api/controllers/permission.ts.html +34 -34
- package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +2 -2
- package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +4 -4
- package/coverage/lcov-report/src/api/controllers/plugin/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +18 -18
- package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +5 -5
- package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +5 -5
- package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +3 -3
- package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +3 -3
- package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +6 -6
- package/coverage/lcov-report/src/api/controllers/public/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +2 -2
- package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +7 -7
- package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +2 -2
- package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +2 -2
- package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +2 -2
- package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +2 -2
- package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +4 -4
- package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +5 -5
- package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +4 -4
- package/coverage/lcov-report/src/api/controllers/public/users.ts.html +6 -6
- package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +4 -4
- package/coverage/lcov-report/src/api/controllers/query/import/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +7 -7
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +3 -3
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +5 -5
- package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +7 -7
- package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +9 -9
- package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +13 -13
- package/coverage/lcov-report/src/api/controllers/query/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/query/index.ts.html +33 -33
- package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +9 -9
- package/coverage/lcov-report/src/api/controllers/role.ts.html +8 -8
- package/coverage/lcov-report/src/api/controllers/routing.ts.html +6 -6
- package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +419 -431
- package/coverage/lcov-report/src/api/controllers/row/external.ts.html +175 -211
- package/coverage/lcov-report/src/api/controllers/row/index.html +42 -42
- package/coverage/lcov-report/src/api/controllers/row/index.ts.html +78 -78
- package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +34 -34
- package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +6 -6
- package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +22 -22
- package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +31 -31
- package/coverage/lcov-report/src/api/controllers/screen.ts.html +26 -26
- package/coverage/lcov-report/src/api/controllers/script.ts.html +2 -2
- package/coverage/lcov-report/src/api/controllers/static/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/static/index.ts.html +22 -22
- package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +51 -51
- package/coverage/lcov-report/src/api/controllers/table/external.ts.html +195 -198
- package/coverage/lcov-report/src/api/controllers/table/index.html +47 -47
- package/coverage/lcov-report/src/api/controllers/table/index.ts.html +42 -42
- package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +61 -61
- package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +63 -63
- package/coverage/lcov-report/src/api/controllers/templates.ts.html +7 -7
- package/coverage/lcov-report/src/api/controllers/user.ts.html +28 -28
- package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +2 -2
- package/coverage/lcov-report/src/api/controllers/view/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/view/index.ts.html +16 -16
- package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +5 -5
- package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +7 -7
- package/coverage/lcov-report/src/api/controllers/webhook.ts.html +25 -25
- package/coverage/lcov-report/src/api/index.html +1 -1
- package/coverage/lcov-report/src/api/index.ts.html +27 -27
- package/coverage/lcov-report/src/api/routes/analytics.ts.html +7 -7
- package/coverage/lcov-report/src/api/routes/apikeys.ts.html +8 -8
- package/coverage/lcov-report/src/api/routes/application.ts.html +10 -10
- package/coverage/lcov-report/src/api/routes/auth.ts.html +6 -6
- package/coverage/lcov-report/src/api/routes/automation.ts.html +11 -11
- package/coverage/lcov-report/src/api/routes/backup.ts.html +8 -8
- package/coverage/lcov-report/src/api/routes/cloud.ts.html +8 -8
- package/coverage/lcov-report/src/api/routes/component.ts.html +8 -8
- package/coverage/lcov-report/src/api/routes/datasource.ts.html +9 -9
- package/coverage/lcov-report/src/api/routes/deploy.ts.html +8 -8
- package/coverage/lcov-report/src/api/routes/dev.ts.html +13 -13
- package/coverage/lcov-report/src/api/routes/index.html +1 -1
- package/coverage/lcov-report/src/api/routes/index.ts.html +35 -35
- package/coverage/lcov-report/src/api/routes/integration.ts.html +8 -8
- package/coverage/lcov-report/src/api/routes/layout.ts.html +8 -8
- package/coverage/lcov-report/src/api/routes/metadata.ts.html +9 -9
- package/coverage/lcov-report/src/api/routes/migrations.ts.html +7 -7
- package/coverage/lcov-report/src/api/routes/permission.ts.html +9 -9
- package/coverage/lcov-report/src/api/routes/plugin.ts.html +8 -8
- package/coverage/lcov-report/src/api/routes/public/applications.ts.html +17 -14
- package/coverage/lcov-report/src/api/routes/public/index.html +1 -1
- package/coverage/lcov-report/src/api/routes/public/index.ts.html +52 -52
- package/coverage/lcov-report/src/api/routes/public/middleware/index.html +1 -1
- package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +4 -4
- package/coverage/lcov-report/src/api/routes/public/queries.ts.html +9 -9
- package/coverage/lcov-report/src/api/routes/public/rows.ts.html +12 -12
- package/coverage/lcov-report/src/api/routes/public/tables.ts.html +12 -12
- package/coverage/lcov-report/src/api/routes/public/tests/index.html +12 -42
- package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +27 -78
- package/coverage/lcov-report/src/api/routes/public/users.ts.html +12 -12
- package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +19 -19
- package/coverage/lcov-report/src/api/routes/public/utils/index.html +1 -1
- package/coverage/lcov-report/src/api/routes/query.ts.html +11 -11
- package/coverage/lcov-report/src/api/routes/role.ts.html +9 -9
- package/coverage/lcov-report/src/api/routes/routing.ts.html +8 -8
- package/coverage/lcov-report/src/api/routes/row.ts.html +11 -11
- package/coverage/lcov-report/src/api/routes/screen.ts.html +9 -9
- package/coverage/lcov-report/src/api/routes/script.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/static.ts.html +14 -14
- package/coverage/lcov-report/src/api/routes/table.ts.html +11 -11
- package/coverage/lcov-report/src/api/routes/templates.ts.html +8 -8
- package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +41 -110
- package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +19 -19
- package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +17 -23
- package/coverage/lcov-report/src/api/routes/user.ts.html +9 -9
- package/coverage/lcov-report/src/api/routes/utils/index.html +1 -1
- package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +42 -42
- package/coverage/lcov-report/src/api/routes/view.ts.html +10 -10
- package/coverage/lcov-report/src/api/routes/webhook.ts.html +10 -10
- package/coverage/lcov-report/src/app.ts.html +35 -38
- package/coverage/lcov-report/src/automations/actions.ts.html +24 -24
- package/coverage/lcov-report/src/automations/automationUtils.ts.html +4 -4
- package/coverage/lcov-report/src/automations/bullboard.ts.html +9 -9
- package/coverage/lcov-report/src/automations/index.html +27 -27
- package/coverage/lcov-report/src/automations/index.ts.html +9 -9
- package/coverage/lcov-report/src/automations/logging/index.html +1 -1
- package/coverage/lcov-report/src/automations/logging/index.ts.html +10 -10
- package/coverage/lcov-report/src/automations/steps/bash.ts.html +8 -8
- package/coverage/lcov-report/src/automations/steps/createRow.ts.html +7 -7
- package/coverage/lcov-report/src/automations/steps/delay.ts.html +5 -5
- package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +7 -7
- package/coverage/lcov-report/src/automations/steps/discord.ts.html +8 -8
- package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +7 -7
- package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +7 -7
- package/coverage/lcov-report/src/automations/steps/filter.ts.html +6 -6
- package/coverage/lcov-report/src/automations/steps/index.html +1 -1
- package/coverage/lcov-report/src/automations/steps/integromat.ts.html +6 -6
- package/coverage/lcov-report/src/automations/steps/loop.ts.html +3 -3
- package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +9 -9
- package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +13 -13
- package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +6 -6
- package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +4 -4
- package/coverage/lcov-report/src/automations/steps/slack.ts.html +6 -6
- package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +7 -7
- package/coverage/lcov-report/src/automations/steps/utils.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/zapier.ts.html +6 -6
- package/coverage/lcov-report/src/automations/tests/utilities/index.html +1 -1
- package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +1 -1
- package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +3 -3
- package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +3 -3
- package/coverage/lcov-report/src/automations/triggerInfo/index.html +1 -1
- package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +8 -8
- package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +3 -3
- package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +3 -3
- package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +3 -3
- package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +3 -3
- package/coverage/lcov-report/src/automations/triggers.ts.html +46 -46
- package/coverage/lcov-report/src/automations/utils.ts.html +63 -63
- package/coverage/lcov-report/src/constants/index.html +16 -16
- package/coverage/lcov-report/src/constants/index.ts.html +99 -33
- package/coverage/lcov-report/src/constants/layouts.ts.html +4 -4
- package/coverage/lcov-report/src/constants/screens.ts.html +5 -5
- package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +45 -33
- package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +2 -2
- package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +2 -2
- package/coverage/lcov-report/src/db/defaultData/index.html +11 -11
- package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +2 -2
- package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +2 -2
- package/coverage/lcov-report/src/db/dynamoClient.ts.html +15 -15
- package/coverage/lcov-report/src/db/inMemoryView.ts.html +4 -4
- package/coverage/lcov-report/src/db/index.html +16 -16
- package/coverage/lcov-report/src/db/index.ts.html +19 -19
- package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +23 -26
- package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +4 -4
- package/coverage/lcov-report/src/db/linkedRows/index.html +10 -10
- package/coverage/lcov-report/src/db/linkedRows/index.ts.html +23 -23
- package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +10 -10
- package/coverage/lcov-report/src/db/newid.ts.html +4 -4
- package/coverage/lcov-report/src/db/utils.ts.html +52 -52
- package/coverage/lcov-report/src/definitions/automations.ts.html +2 -2
- package/coverage/lcov-report/src/definitions/index.html +1 -1
- package/coverage/lcov-report/src/environment.ts.html +32 -32
- package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +6 -6
- package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +6 -6
- package/coverage/lcov-report/src/events/index.html +1 -1
- package/coverage/lcov-report/src/events/index.ts.html +4 -4
- package/coverage/lcov-report/src/events/utils.ts.html +10 -10
- package/coverage/lcov-report/src/index.html +16 -16
- package/coverage/lcov-report/src/index.ts.html +1 -1
- package/coverage/lcov-report/src/integrations/airtable.ts.html +5 -5
- package/coverage/lcov-report/src/integrations/arangodb.ts.html +5 -5
- package/coverage/lcov-report/src/integrations/base/index.html +30 -30
- package/coverage/lcov-report/src/integrations/base/query.ts.html +9 -9
- package/coverage/lcov-report/src/integrations/base/sql.ts.html +187 -217
- package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +107 -107
- package/coverage/lcov-report/src/integrations/base/utils.ts.html +5 -5
- package/coverage/lcov-report/src/integrations/couchdb.ts.html +5 -5
- package/coverage/lcov-report/src/integrations/dynamodb.ts.html +6 -6
- package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +5 -5
- package/coverage/lcov-report/src/integrations/firebase.ts.html +5 -5
- package/coverage/lcov-report/src/integrations/googlesheets.ts.html +11 -11
- package/coverage/lcov-report/src/integrations/index.html +27 -27
- package/coverage/lcov-report/src/integrations/index.ts.html +37 -37
- package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +8 -8
- package/coverage/lcov-report/src/integrations/mongodb.ts.html +11 -11
- package/coverage/lcov-report/src/integrations/mysql.ts.html +10 -10
- package/coverage/lcov-report/src/integrations/oracle.ts.html +14 -14
- package/coverage/lcov-report/src/integrations/postgres.ts.html +65 -65
- package/coverage/lcov-report/src/integrations/queries/index.html +1 -1
- package/coverage/lcov-report/src/integrations/queries/sql.ts.html +1 -1
- package/coverage/lcov-report/src/integrations/redis.ts.html +5 -5
- package/coverage/lcov-report/src/integrations/rest.ts.html +15 -15
- package/coverage/lcov-report/src/integrations/s3.ts.html +6 -6
- package/coverage/lcov-report/src/integrations/snowflake.ts.html +5 -5
- package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
- package/coverage/lcov-report/src/integrations/tests/index.html +5 -230
- package/coverage/lcov-report/src/integrations/utils.ts.html +74 -74
- package/coverage/lcov-report/src/middleware/appInfo.ts.html +5 -5
- package/coverage/lcov-report/src/middleware/authorized.ts.html +29 -29
- package/coverage/lcov-report/src/middleware/builder.ts.html +17 -17
- package/coverage/lcov-report/src/middleware/currentapp.ts.html +53 -53
- package/coverage/lcov-report/src/middleware/index.html +15 -15
- package/coverage/lcov-report/src/middleware/joi-validator.ts.html +1 -1
- package/coverage/lcov-report/src/middleware/publicApi.ts.html +4 -4
- package/coverage/lcov-report/src/middleware/resourceId.ts.html +28 -28
- package/coverage/lcov-report/src/middleware/selfhost.ts.html +1 -1
- package/coverage/lcov-report/src/middleware/utils.ts.html +4 -4
- package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +4 -4
- package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +5 -5
- package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +5 -5
- package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +5 -5
- package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +7 -7
- package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +5 -5
- package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +5 -5
- package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +4 -4
- package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +19 -19
- package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +6 -6
- package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +7 -7
- package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +6 -6
- package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +15 -15
- package/coverage/lcov-report/src/migrations/functions/backfill/index.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +5 -5
- package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +8 -8
- package/coverage/lcov-report/src/migrations/functions/index.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +6 -6
- package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +6 -6
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +2 -2
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +5 -5
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +4 -4
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +6 -6
- package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +3 -3
- package/coverage/lcov-report/src/migrations/index.html +1 -1
- package/coverage/lcov-report/src/migrations/index.ts.html +32 -32
- package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/tests/index.html +8 -23
- package/coverage/lcov-report/src/migrations/tests/structures.ts.html +1 -1
- package/coverage/lcov-report/src/sdk/app/applications/index.html +1 -1
- package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +4 -4
- package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +22 -22
- package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +9 -9
- package/coverage/lcov-report/src/sdk/app/automations/index.html +1 -1
- package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +3 -3
- package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +10 -10
- package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +3 -3
- package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +23 -41
- package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +18 -18
- package/coverage/lcov-report/src/sdk/app/backups/index.html +10 -10
- package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +5 -5
- package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +7 -7
- package/coverage/lcov-report/src/sdk/app/datasources/datasources.ts.html +39 -39
- package/coverage/lcov-report/src/sdk/app/datasources/index.html +1 -1
- package/coverage/lcov-report/src/sdk/app/datasources/index.ts.html +3 -3
- package/coverage/lcov-report/src/sdk/app/queries/index.html +1 -1
- package/coverage/lcov-report/src/sdk/app/queries/index.ts.html +3 -3
- package/coverage/lcov-report/src/sdk/app/queries/queries.ts.html +4 -4
- package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +6 -6
- package/coverage/lcov-report/src/sdk/app/rows/index.html +1 -1
- package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +4 -4
- package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +4 -4
- package/coverage/lcov-report/src/sdk/app/tables/index.html +1 -1
- package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +10 -10
- package/coverage/lcov-report/src/sdk/index.html +1 -1
- package/coverage/lcov-report/src/sdk/index.ts.html +11 -11
- package/coverage/lcov-report/src/sdk/users/index.html +1 -1
- package/coverage/lcov-report/src/sdk/users/index.ts.html +3 -3
- package/coverage/lcov-report/src/sdk/users/utils.ts.html +31 -31
- package/coverage/lcov-report/src/sdk/utils/index.html +1 -1
- package/coverage/lcov-report/src/sdk/utils/index.ts.html +11 -11
- package/coverage/lcov-report/src/startup.ts.html +42 -42
- package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +189 -387
- package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +15 -15
- package/coverage/lcov-report/src/tests/utilities/index.html +18 -18
- package/coverage/lcov-report/src/tests/utilities/index.ts.html +1 -1
- package/coverage/lcov-report/src/tests/utilities/structures.ts.html +27 -33
- package/coverage/lcov-report/src/threads/automation.ts.html +22 -22
- package/coverage/lcov-report/src/threads/index.html +1 -1
- package/coverage/lcov-report/src/threads/index.ts.html +10 -10
- package/coverage/lcov-report/src/threads/query.ts.html +1 -1
- package/coverage/lcov-report/src/threads/utils.ts.html +9 -9
- package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +3 -3
- package/coverage/lcov-report/src/utilities/centralPath.ts.html +2 -2
- package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +17 -17
- package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +8 -8
- package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +25 -25
- package/coverage/lcov-report/src/utilities/fileSystem/index.html +1 -1
- package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +6 -6
- package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +8 -8
- package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +7 -7
- package/coverage/lcov-report/src/utilities/global.ts.html +40 -40
- package/coverage/lcov-report/src/utilities/index.html +19 -34
- package/coverage/lcov-report/src/utilities/index.ts.html +26 -26
- package/coverage/lcov-report/src/utilities/redis.ts.html +12 -12
- package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
- package/coverage/lcov-report/src/utilities/routing/index.ts.html +4 -4
- package/coverage/lcov-report/src/utilities/rowProcessor/index.html +19 -19
- package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +49 -49
- package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +3 -3
- package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +38 -38
- package/coverage/lcov-report/src/utilities/schema.ts.html +3 -3
- package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +5 -5
- package/coverage/lcov-report/src/utilities/security.ts.html +22 -22
- package/coverage/lcov-report/src/utilities/usageQuota/index.html +1 -1
- package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +35 -35
- package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/users.ts.html +4 -4
- package/coverage/lcov-report/src/utilities/workerRequests.ts.html +15 -15
- package/coverage/lcov-report/src/watch.ts.html +7 -7
- package/coverage/lcov-report/src/websocket.ts.html +5 -5
- package/coverage/lcov.info +11292 -18907
- package/dist/api/controllers/row/ExternalRequest.js +2 -4
- package/dist/api/controllers/row/external.js +1 -12
- package/dist/api/controllers/table/external.js +8 -8
- package/dist/api/routes/public/tests/utils.js +2 -29
- package/dist/app.js +1 -1
- package/dist/constants/index.js +24 -4
- package/dist/db/defaultData/datasource_bb_default.js +5 -6
- package/dist/db/linkedRows/LinkController.js +8 -9
- package/dist/integrations/base/sql.js +3 -10
- package/dist/package.json +6 -8
- package/dist/sdk/app/backups/exports.js +2 -8
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/jest.config.ts +11 -28
- package/package.json +7 -9
- package/specs/openapi.json +6 -6
- package/specs/openapi.yaml +3 -3
- package/src/api/controllers/query/import/tests/index.spec.js +1 -1
- package/src/api/controllers/row/ExternalRequest.ts +2 -6
- package/src/api/controllers/row/external.ts +1 -13
- package/src/api/controllers/table/external.ts +2 -3
- package/src/api/routes/public/applications.ts +1 -0
- package/src/api/routes/public/tests/compare.spec.js +1 -1
- package/src/api/routes/public/tests/users.spec.js +1 -1
- package/src/api/routes/public/tests/utils.ts +8 -25
- package/src/api/routes/tests/__snapshots__/datasource.spec.ts.snap +1 -1
- package/src/api/routes/tests/analytics.spec.js +1 -4
- package/src/api/routes/tests/apikeys.spec.js +1 -1
- package/src/api/routes/tests/application.spec.ts +6 -20
- package/src/api/routes/tests/auth.spec.js +2 -2
- package/src/api/routes/tests/automation.spec.js +2 -6
- package/src/api/routes/tests/backup.spec.ts +13 -4
- package/src/api/routes/tests/{cloud.seq.spec.ts → cloud.spec.ts} +15 -11
- package/src/api/routes/tests/component.spec.js +1 -1
- package/src/api/routes/tests/datasource.spec.ts +3 -20
- package/src/api/routes/tests/dev.spec.js +1 -1
- package/src/api/routes/tests/integration.spec.js +1 -1
- package/src/api/routes/tests/layout.spec.js +1 -1
- package/src/api/routes/tests/metadata.spec.js +1 -1
- package/src/api/routes/tests/misc.spec.js +1 -1
- package/src/api/routes/tests/permissions.spec.js +1 -4
- package/src/api/routes/tests/{query.seq.spec.js → query.spec.js} +1 -21
- package/src/api/routes/tests/role.spec.js +1 -6
- package/src/api/routes/tests/routing.spec.js +1 -1
- package/src/api/routes/tests/row.spec.js +3 -11
- package/src/api/routes/tests/screen.spec.js +1 -1
- package/src/api/routes/tests/static.spec.js +1 -2
- package/src/api/routes/tests/table.spec.js +1 -1
- package/src/api/routes/tests/templates.spec.js +1 -1
- package/src/api/routes/tests/user.spec.js +0 -3
- package/src/api/routes/tests/utilities/TestFunctions.ts +2 -25
- package/src/api/routes/tests/utilities/index.ts +3 -5
- package/src/api/routes/tests/view.spec.js +1 -4
- package/src/api/routes/tests/webhook.spec.js +2 -11
- package/src/app.ts +1 -2
- package/src/automations/tests/automation.spec.js +4 -4
- package/src/automations/tests/bash.spec.js +1 -1
- package/src/automations/tests/discord.spec.js +1 -1
- package/src/automations/tests/executeQuery.spec.js +3 -2
- package/src/automations/tests/executeScript.spec.js +1 -1
- package/src/automations/tests/outgoingWebhook.spec.js +1 -1
- package/src/automations/tests/sendSmtpEmail.spec.js +1 -1
- package/src/automations/tests/serverLog.spec.js +1 -1
- package/src/automations/tests/updateRow.spec.js +1 -1
- package/src/automations/tests/zapier.spec.js +1 -1
- package/src/constants/index.ts +23 -1
- package/src/db/defaultData/datasource_bb_default.ts +10 -6
- package/src/db/linkedRows/LinkController.ts +1 -2
- package/src/db/tests/linkController.spec.js +1 -4
- package/src/db/tests/linkTests.spec.js +1 -1
- package/src/integrations/base/sql.ts +5 -15
- package/src/integrations/oracle.ts +1 -1
- package/src/migrations/functions/tests/appUrls.spec.js +1 -1
- package/src/migrations/functions/tests/syncQuotas.spec.js +1 -1
- package/src/migrations/functions/tests/userEmailViewCasing.spec.js +1 -1
- package/src/migrations/tests/index.spec.ts +2 -3
- package/src/sdk/app/backups/exports.ts +2 -8
- package/src/tests/jestEnv.ts +6 -2
- package/src/tests/jestSetup.ts +6 -5
- package/src/tests/utilities/TestConfiguration.ts +46 -112
- package/src/tests/utilities/structures.ts +2 -4
- package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/curl/curl.spec.js.html +0 -391
- package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/curl/index.html +0 -116
- package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi2/index.html +0 -116
- package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi2/openapi2.spec.js.html +0 -796
- package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi3/index.html +0 -116
- package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi3/openapi3.spec.js.html +0 -805
- package/coverage/lcov-report/src/api/controllers/query/import/tests/index.html +0 -116
- package/coverage/lcov-report/src/api/controllers/query/import/tests/index.spec.js.html +0 -568
- package/coverage/lcov-report/src/api/controllers/view/tests/index.html +0 -116
- package/coverage/lcov-report/src/api/controllers/view/tests/viewBuilder.spec.js.html +0 -277
- package/coverage/lcov-report/src/api/routes/public/tests/compare.spec.js.html +0 -583
- package/coverage/lcov-report/src/api/routes/public/tests/users.spec.js.html +0 -199
- package/coverage/lcov-report/src/api/routes/tests/analytics.spec.js.html +0 -271
- package/coverage/lcov-report/src/api/routes/tests/apikeys.spec.js.html +0 -259
- package/coverage/lcov-report/src/api/routes/tests/application.spec.ts.html +0 -1066
- package/coverage/lcov-report/src/api/routes/tests/auth.spec.js.html +0 -154
- package/coverage/lcov-report/src/api/routes/tests/automation.spec.js.html +0 -1123
- package/coverage/lcov-report/src/api/routes/tests/backup.spec.ts.html +0 -223
- package/coverage/lcov-report/src/api/routes/tests/cloud.seq.spec.ts.html +0 -268
- package/coverage/lcov-report/src/api/routes/tests/component.spec.js.html +0 -178
- package/coverage/lcov-report/src/api/routes/tests/datasource.spec.ts.html +0 -799
- package/coverage/lcov-report/src/api/routes/tests/dev.spec.js.html +0 -202
- package/coverage/lcov-report/src/api/routes/tests/index.html +0 -521
- package/coverage/lcov-report/src/api/routes/tests/integration.spec.js.html +0 -238
- package/coverage/lcov-report/src/api/routes/tests/internalSearch.spec.js.html +0 -670
- package/coverage/lcov-report/src/api/routes/tests/layout.spec.js.html +0 -259
- package/coverage/lcov-report/src/api/routes/tests/metadata.spec.js.html +0 -280
- package/coverage/lcov-report/src/api/routes/tests/misc.spec.js.html +0 -358
- package/coverage/lcov-report/src/api/routes/tests/permissions.spec.js.html +0 -484
- package/coverage/lcov-report/src/api/routes/tests/plugin.spec.ts.html +0 -622
- package/coverage/lcov-report/src/api/routes/tests/query.seq.spec.js.html +0 -1696
- package/coverage/lcov-report/src/api/routes/tests/role.spec.js.html +0 -478
- package/coverage/lcov-report/src/api/routes/tests/routing.spec.js.html +0 -430
- package/coverage/lcov-report/src/api/routes/tests/row.spec.js.html +0 -1804
- package/coverage/lcov-report/src/api/routes/tests/screen.spec.js.html +0 -391
- package/coverage/lcov-report/src/api/routes/tests/static.spec.js.html +0 -541
- package/coverage/lcov-report/src/api/routes/tests/table.spec.js.html +0 -991
- package/coverage/lcov-report/src/api/routes/tests/templates.spec.js.html +0 -154
- package/coverage/lcov-report/src/api/routes/tests/user.spec.js.html +0 -688
- package/coverage/lcov-report/src/api/routes/tests/view.spec.js.html +0 -1342
- package/coverage/lcov-report/src/api/routes/tests/webhook.spec.js.html +0 -484
- package/coverage/lcov-report/src/automations/tests/automation.spec.js.html +0 -337
- package/coverage/lcov-report/src/automations/tests/bash.spec.js.html +0 -187
- package/coverage/lcov-report/src/automations/tests/createRow.spec.ts.html +0 -223
- package/coverage/lcov-report/src/automations/tests/delay.spec.js.html +0 -133
- package/coverage/lcov-report/src/automations/tests/deleteRow.spec.ts.html +0 -250
- package/coverage/lcov-report/src/automations/tests/discord.spec.js.html +0 -166
- package/coverage/lcov-report/src/automations/tests/executeQuery.spec.js.html +0 -229
- package/coverage/lcov-report/src/automations/tests/executeScript.spec.js.html +0 -229
- package/coverage/lcov-report/src/automations/tests/filter.spec.js.html +0 -232
- package/coverage/lcov-report/src/automations/tests/index.html +0 -341
- package/coverage/lcov-report/src/automations/tests/loop.spec.ts.html +0 -220
- package/coverage/lcov-report/src/automations/tests/outgoingWebhook.spec.js.html +0 -202
- package/coverage/lcov-report/src/automations/tests/queryRows.spec.js.html +0 -436
- package/coverage/lcov-report/src/automations/tests/sendSmtpEmail.spec.js.html +0 -298
- package/coverage/lcov-report/src/automations/tests/serverLog.spec.js.html +0 -151
- package/coverage/lcov-report/src/automations/tests/updateRow.spec.js.html +0 -217
- package/coverage/lcov-report/src/automations/tests/zapier.spec.js.html +0 -166
- package/coverage/lcov-report/src/automations/unitTests/automationUtils.spec.ts.html +0 -280
- package/coverage/lcov-report/src/automations/unitTests/index.html +0 -116
- package/coverage/lcov-report/src/db/tests/index.html +0 -131
- package/coverage/lcov-report/src/db/tests/linkController.spec.js.html +0 -793
- package/coverage/lcov-report/src/db/tests/linkTests.spec.js.html +0 -277
- package/coverage/lcov-report/src/integration-test/index.html +0 -116
- package/coverage/lcov-report/src/integration-test/postgres.spec.ts.html +0 -2341
- package/coverage/lcov-report/src/integrations/tests/airtable.spec.ts.html +0 -310
- package/coverage/lcov-report/src/integrations/tests/arangodb.spec.ts.html +0 -199
- package/coverage/lcov-report/src/integrations/tests/couchdb.spec.ts.html +0 -349
- package/coverage/lcov-report/src/integrations/tests/dynamodb.spec.ts.html +0 -550
- package/coverage/lcov-report/src/integrations/tests/elasticsearch.spec.ts.html +0 -331
- package/coverage/lcov-report/src/integrations/tests/firebase.spec.ts.html +0 -376
- package/coverage/lcov-report/src/integrations/tests/microsoftSqlServer.spec.ts.html +0 -253
- package/coverage/lcov-report/src/integrations/tests/mongo.spec.ts.html +0 -1087
- package/coverage/lcov-report/src/integrations/tests/mysql.spec.ts.html +0 -484
- package/coverage/lcov-report/src/integrations/tests/oracle.spec.ts.html +0 -373
- package/coverage/lcov-report/src/integrations/tests/postgres.spec.ts.html +0 -328
- package/coverage/lcov-report/src/integrations/tests/redis.spec.ts.html +0 -337
- package/coverage/lcov-report/src/integrations/tests/rest.spec.ts.html +0 -1870
- package/coverage/lcov-report/src/integrations/tests/s3.spec.ts.html +0 -421
- package/coverage/lcov-report/src/integrations/tests/sql.spec.ts.html +0 -1753
- package/coverage/lcov-report/src/middleware/tests/authorized.spec.js.html +0 -574
- package/coverage/lcov-report/src/middleware/tests/currentapp.spec.js.html +0 -814
- package/coverage/lcov-report/src/middleware/tests/index.html +0 -161
- package/coverage/lcov-report/src/middleware/tests/resourceId.spec.js.html +0 -397
- package/coverage/lcov-report/src/middleware/tests/selfhost.spec.js.html +0 -214
- package/coverage/lcov-report/src/migrations/functions/tests/appUrls.spec.js.html +0 -163
- package/coverage/lcov-report/src/migrations/functions/tests/index.html +0 -161
- package/coverage/lcov-report/src/migrations/functions/tests/syncQuotas.spec.js.html +0 -163
- package/coverage/lcov-report/src/migrations/functions/tests/tableSettings.spec.ts.html +0 -517
- package/coverage/lcov-report/src/migrations/functions/tests/userEmailViewCasing.spec.js.html +0 -190
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/tests/index.html +0 -131
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/tests/syncApps.spec.ts.html +0 -190
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts.html +0 -244
- package/coverage/lcov-report/src/migrations/tests/index.spec.ts.html +0 -535
- package/coverage/lcov-report/src/sdk/tests/attachments.spec.ts.html +0 -313
- package/coverage/lcov-report/src/sdk/tests/index.html +0 -116
- package/coverage/lcov-report/src/utilities/retry.ts.html +0 -139
- package/coverage/lcov-report/src/utilities/rowProcessor/tests/index.html +0 -116
- package/coverage/lcov-report/src/utilities/rowProcessor/tests/utils.spec.ts.html +0 -256
- package/dist/api/routes/tests/utilities/index.js +0 -131
- package/dist/tests/utilities/TestConfiguration.js +0 -618
- package/dist/tests/utilities/controllers.js +0 -40
- package/dist/tests/utilities/structures.js +0 -226
- package/dist/utilities/retry.js +0 -30
- package/jest-testcontainers-config.js +0 -8
- package/scripts/load/create-many-apps.js +0 -24
- package/scripts/load/create-many-rows.js +0 -30
- package/scripts/load/utils.js +0 -66
- package/src/integration-test/postgres.spec.ts +0 -752
- package/src/utilities/retry.ts +0 -18
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">2.73% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>8/293</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">0% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>0/186</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">0% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>0/33</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">2.74% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>8/291</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
</div>
|
|
62
62
|
</template>
|
|
63
63
|
</div>
|
|
64
|
-
<div class='status-line
|
|
64
|
+
<div class='status-line low'></div>
|
|
65
65
|
<pre><table class="coverage">
|
|
66
66
|
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
67
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
@@ -803,11 +803,7 @@
|
|
|
803
803
|
<a name='L738'></a><a href='#L738'>738</a>
|
|
804
804
|
<a name='L739'></a><a href='#L739'>739</a>
|
|
805
805
|
<a name='L740'></a><a href='#L740'>740</a>
|
|
806
|
-
<a name='L741'></a><a href='#L741'>741</a>
|
|
807
|
-
<a name='L742'></a><a href='#L742'>742</a>
|
|
808
|
-
<a name='L743'></a><a href='#L743'>743</a>
|
|
809
|
-
<a name='L744'></a><a href='#L744'>744</a>
|
|
810
|
-
<a name='L745'></a><a href='#L745'>745</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
806
|
+
<a name='L741'></a><a href='#L741'>741</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
811
807
|
<span class="cline-any cline-neutral"> </span>
|
|
812
808
|
<span class="cline-any cline-neutral"> </span>
|
|
813
809
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -819,23 +815,23 @@
|
|
|
819
815
|
<span class="cline-any cline-neutral"> </span>
|
|
820
816
|
<span class="cline-any cline-neutral"> </span>
|
|
821
817
|
<span class="cline-any cline-neutral"> </span>
|
|
818
|
+
<span class="cline-any cline-yes">56x</span>
|
|
822
819
|
<span class="cline-any cline-neutral"> </span>
|
|
823
|
-
<span class="cline-any cline-yes">57x</span>
|
|
824
820
|
<span class="cline-any cline-neutral"> </span>
|
|
825
821
|
<span class="cline-any cline-neutral"> </span>
|
|
826
822
|
<span class="cline-any cline-neutral"> </span>
|
|
827
823
|
<span class="cline-any cline-neutral"> </span>
|
|
824
|
+
<span class="cline-any cline-yes">56x</span>
|
|
825
|
+
<span class="cline-any cline-yes">56x</span>
|
|
826
|
+
<span class="cline-any cline-yes">56x</span>
|
|
828
827
|
<span class="cline-any cline-neutral"> </span>
|
|
829
|
-
<span class="cline-any cline-yes">
|
|
830
|
-
<span class="cline-any cline-yes">
|
|
831
|
-
<span class="cline-any cline-yes">
|
|
828
|
+
<span class="cline-any cline-yes">56x</span>
|
|
829
|
+
<span class="cline-any cline-yes">56x</span>
|
|
830
|
+
<span class="cline-any cline-yes">56x</span>
|
|
832
831
|
<span class="cline-any cline-neutral"> </span>
|
|
833
|
-
<span class="cline-any cline-yes">57x</span>
|
|
834
|
-
<span class="cline-any cline-yes">57x</span>
|
|
835
|
-
<span class="cline-any cline-yes">57x</span>
|
|
836
832
|
<span class="cline-any cline-neutral"> </span>
|
|
833
|
+
<span class="cline-any cline-yes">56x</span>
|
|
837
834
|
<span class="cline-any cline-neutral"> </span>
|
|
838
|
-
<span class="cline-any cline-yes">57x</span>
|
|
839
835
|
<span class="cline-any cline-neutral"> </span>
|
|
840
836
|
<span class="cline-any cline-neutral"> </span>
|
|
841
837
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -860,17 +856,15 @@
|
|
|
860
856
|
<span class="cline-any cline-neutral"> </span>
|
|
861
857
|
<span class="cline-any cline-neutral"> </span>
|
|
862
858
|
<span class="cline-any cline-neutral"> </span>
|
|
859
|
+
<span class="cline-any cline-no"> </span>
|
|
863
860
|
<span class="cline-any cline-neutral"> </span>
|
|
861
|
+
<span class="cline-any cline-no"> </span>
|
|
862
|
+
<span class="cline-any cline-no"> </span>
|
|
864
863
|
<span class="cline-any cline-neutral"> </span>
|
|
865
|
-
<span class="cline-any cline-
|
|
866
|
-
<span class="cline-any cline-
|
|
867
|
-
<span class="cline-any cline-
|
|
868
|
-
<span class="cline-any cline-
|
|
869
|
-
<span class="cline-any cline-neutral"> </span>
|
|
870
|
-
<span class="cline-any cline-yes">264x</span>
|
|
871
|
-
<span class="cline-any cline-yes">264x</span>
|
|
872
|
-
<span class="cline-any cline-yes">2x</span>
|
|
873
|
-
<span class="cline-any cline-yes">2x</span>
|
|
864
|
+
<span class="cline-any cline-no"> </span>
|
|
865
|
+
<span class="cline-any cline-no"> </span>
|
|
866
|
+
<span class="cline-any cline-no"> </span>
|
|
867
|
+
<span class="cline-any cline-no"> </span>
|
|
874
868
|
<span class="cline-any cline-no"> </span>
|
|
875
869
|
<span class="cline-any cline-no"> </span>
|
|
876
870
|
<span class="cline-any cline-no"> </span>
|
|
@@ -885,21 +879,21 @@
|
|
|
885
879
|
<span class="cline-any cline-neutral"> </span>
|
|
886
880
|
<span class="cline-any cline-neutral"> </span>
|
|
887
881
|
<span class="cline-any cline-neutral"> </span>
|
|
888
|
-
<span class="cline-any cline-
|
|
889
|
-
<span class="cline-any cline-
|
|
882
|
+
<span class="cline-any cline-no"> </span>
|
|
883
|
+
<span class="cline-any cline-no"> </span>
|
|
890
884
|
<span class="cline-any cline-neutral"> </span>
|
|
891
885
|
<span class="cline-any cline-neutral"> </span>
|
|
892
|
-
<span class="cline-any cline-
|
|
893
|
-
<span class="cline-any cline-
|
|
886
|
+
<span class="cline-any cline-no"> </span>
|
|
887
|
+
<span class="cline-any cline-no"> </span>
|
|
894
888
|
<span class="cline-any cline-neutral"> </span>
|
|
895
|
-
<span class="cline-any cline-
|
|
896
|
-
<span class="cline-any cline-
|
|
897
|
-
<span class="cline-any cline-
|
|
889
|
+
<span class="cline-any cline-no"> </span>
|
|
890
|
+
<span class="cline-any cline-no"> </span>
|
|
891
|
+
<span class="cline-any cline-no"> </span>
|
|
898
892
|
<span class="cline-any cline-neutral"> </span>
|
|
899
|
-
<span class="cline-any cline-
|
|
893
|
+
<span class="cline-any cline-no"> </span>
|
|
900
894
|
<span class="cline-any cline-neutral"> </span>
|
|
901
895
|
<span class="cline-any cline-neutral"> </span>
|
|
902
|
-
<span class="cline-any cline-
|
|
896
|
+
<span class="cline-any cline-no"> </span>
|
|
903
897
|
<span class="cline-any cline-neutral"> </span>
|
|
904
898
|
<span class="cline-any cline-neutral"> </span>
|
|
905
899
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -913,62 +907,62 @@
|
|
|
913
907
|
<span class="cline-any cline-neutral"> </span>
|
|
914
908
|
<span class="cline-any cline-neutral"> </span>
|
|
915
909
|
<span class="cline-any cline-neutral"> </span>
|
|
916
|
-
<span class="cline-any cline-
|
|
910
|
+
<span class="cline-any cline-no"> </span>
|
|
917
911
|
<span class="cline-any cline-neutral"> </span>
|
|
918
912
|
<span class="cline-any cline-neutral"> </span>
|
|
919
913
|
<span class="cline-any cline-neutral"> </span>
|
|
920
914
|
<span class="cline-any cline-neutral"> </span>
|
|
921
915
|
<span class="cline-any cline-neutral"> </span>
|
|
922
916
|
<span class="cline-any cline-neutral"> </span>
|
|
923
|
-
<span class="cline-any cline-
|
|
924
|
-
<span class="cline-any cline-
|
|
925
|
-
<span class="cline-any cline-
|
|
926
|
-
<span class="cline-any cline-
|
|
927
|
-
<span class="cline-any cline-
|
|
928
|
-
<span class="cline-any cline-
|
|
917
|
+
<span class="cline-any cline-no"> </span>
|
|
918
|
+
<span class="cline-any cline-no"> </span>
|
|
919
|
+
<span class="cline-any cline-no"> </span>
|
|
920
|
+
<span class="cline-any cline-no"> </span>
|
|
921
|
+
<span class="cline-any cline-no"> </span>
|
|
922
|
+
<span class="cline-any cline-no"> </span>
|
|
929
923
|
<span class="cline-any cline-no"> </span>
|
|
930
924
|
<span class="cline-any cline-neutral"> </span>
|
|
931
925
|
<span class="cline-any cline-neutral"> </span>
|
|
932
926
|
<span class="cline-any cline-neutral"> </span>
|
|
933
927
|
<span class="cline-any cline-neutral"> </span>
|
|
934
|
-
<span class="cline-any cline-
|
|
935
|
-
<span class="cline-any cline-
|
|
928
|
+
<span class="cline-any cline-no"> </span>
|
|
929
|
+
<span class="cline-any cline-no"> </span>
|
|
936
930
|
<span class="cline-any cline-neutral"> </span>
|
|
937
|
-
<span class="cline-any cline-
|
|
931
|
+
<span class="cline-any cline-no"> </span>
|
|
938
932
|
<span class="cline-any cline-neutral"> </span>
|
|
939
933
|
<span class="cline-any cline-neutral"> </span>
|
|
940
934
|
<span class="cline-any cline-neutral"> </span>
|
|
941
935
|
<span class="cline-any cline-neutral"> </span>
|
|
942
|
-
<span class="cline-any cline-
|
|
936
|
+
<span class="cline-any cline-no"> </span>
|
|
943
937
|
<span class="cline-any cline-neutral"> </span>
|
|
944
|
-
<span class="cline-any cline-
|
|
938
|
+
<span class="cline-any cline-no"> </span>
|
|
945
939
|
<span class="cline-any cline-neutral"> </span>
|
|
946
940
|
<span class="cline-any cline-neutral"> </span>
|
|
947
|
-
<span class="cline-any cline-
|
|
948
|
-
<span class="cline-any cline-
|
|
941
|
+
<span class="cline-any cline-no"> </span>
|
|
942
|
+
<span class="cline-any cline-no"> </span>
|
|
949
943
|
<span class="cline-any cline-neutral"> </span>
|
|
950
944
|
<span class="cline-any cline-neutral"> </span>
|
|
951
|
-
<span class="cline-any cline-
|
|
945
|
+
<span class="cline-any cline-no"> </span>
|
|
952
946
|
<span class="cline-any cline-neutral"> </span>
|
|
953
947
|
<span class="cline-any cline-neutral"> </span>
|
|
954
948
|
<span class="cline-any cline-neutral"> </span>
|
|
955
|
-
<span class="cline-any cline-
|
|
956
|
-
<span class="cline-any cline-
|
|
957
|
-
<span class="cline-any cline-
|
|
949
|
+
<span class="cline-any cline-no"> </span>
|
|
950
|
+
<span class="cline-any cline-no"> </span>
|
|
951
|
+
<span class="cline-any cline-no"> </span>
|
|
958
952
|
<span class="cline-any cline-neutral"> </span>
|
|
959
953
|
<span class="cline-any cline-neutral"> </span>
|
|
960
|
-
<span class="cline-any cline-
|
|
961
|
-
<span class="cline-any cline-
|
|
954
|
+
<span class="cline-any cline-no"> </span>
|
|
955
|
+
<span class="cline-any cline-no"> </span>
|
|
962
956
|
<span class="cline-any cline-neutral"> </span>
|
|
963
|
-
<span class="cline-any cline-
|
|
964
|
-
<span class="cline-any cline-
|
|
965
|
-
<span class="cline-any cline-
|
|
957
|
+
<span class="cline-any cline-no"> </span>
|
|
958
|
+
<span class="cline-any cline-no"> </span>
|
|
959
|
+
<span class="cline-any cline-no"> </span>
|
|
966
960
|
<span class="cline-any cline-neutral"> </span>
|
|
967
961
|
<span class="cline-any cline-neutral"> </span>
|
|
968
|
-
<span class="cline-any cline-
|
|
969
|
-
<span class="cline-any cline-
|
|
962
|
+
<span class="cline-any cline-no"> </span>
|
|
963
|
+
<span class="cline-any cline-no"> </span>
|
|
970
964
|
<span class="cline-any cline-neutral"> </span>
|
|
971
|
-
<span class="cline-any cline-
|
|
965
|
+
<span class="cline-any cline-no"> </span>
|
|
972
966
|
<span class="cline-any cline-neutral"> </span>
|
|
973
967
|
<span class="cline-any cline-neutral"> </span>
|
|
974
968
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -984,25 +978,25 @@
|
|
|
984
978
|
<span class="cline-any cline-neutral"> </span>
|
|
985
979
|
<span class="cline-any cline-neutral"> </span>
|
|
986
980
|
<span class="cline-any cline-neutral"> </span>
|
|
987
|
-
<span class="cline-any cline-
|
|
981
|
+
<span class="cline-any cline-no"> </span>
|
|
988
982
|
<span class="cline-any cline-neutral"> </span>
|
|
989
|
-
<span class="cline-any cline-
|
|
990
|
-
<span class="cline-any cline-
|
|
991
|
-
<span class="cline-any cline-
|
|
983
|
+
<span class="cline-any cline-no"> </span>
|
|
984
|
+
<span class="cline-any cline-no"> </span>
|
|
985
|
+
<span class="cline-any cline-no"> </span>
|
|
992
986
|
<span class="cline-any cline-neutral"> </span>
|
|
993
|
-
<span class="cline-any cline-
|
|
994
|
-
<span class="cline-any cline-
|
|
987
|
+
<span class="cline-any cline-no"> </span>
|
|
988
|
+
<span class="cline-any cline-no"> </span>
|
|
995
989
|
<span class="cline-any cline-neutral"> </span>
|
|
996
990
|
<span class="cline-any cline-neutral"> </span>
|
|
997
|
-
<span class="cline-any cline-
|
|
998
|
-
<span class="cline-any cline-
|
|
999
|
-
<span class="cline-any cline-
|
|
1000
|
-
<span class="cline-any cline-
|
|
991
|
+
<span class="cline-any cline-no"> </span>
|
|
992
|
+
<span class="cline-any cline-no"> </span>
|
|
993
|
+
<span class="cline-any cline-no"> </span>
|
|
994
|
+
<span class="cline-any cline-no"> </span>
|
|
1001
995
|
<span class="cline-any cline-neutral"> </span>
|
|
1002
996
|
<span class="cline-any cline-neutral"> </span>
|
|
1003
997
|
<span class="cline-any cline-neutral"> </span>
|
|
1004
|
-
<span class="cline-any cline-
|
|
1005
|
-
<span class="cline-any cline-
|
|
998
|
+
<span class="cline-any cline-no"> </span>
|
|
999
|
+
<span class="cline-any cline-no"> </span>
|
|
1006
1000
|
<span class="cline-any cline-neutral"> </span>
|
|
1007
1001
|
<span class="cline-any cline-neutral"> </span>
|
|
1008
1002
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1014,27 +1008,27 @@
|
|
|
1014
1008
|
<span class="cline-any cline-neutral"> </span>
|
|
1015
1009
|
<span class="cline-any cline-neutral"> </span>
|
|
1016
1010
|
<span class="cline-any cline-neutral"> </span>
|
|
1017
|
-
<span class="cline-any cline-
|
|
1011
|
+
<span class="cline-any cline-no"> </span>
|
|
1018
1012
|
<span class="cline-any cline-neutral"> </span>
|
|
1019
1013
|
<span class="cline-any cline-neutral"> </span>
|
|
1020
1014
|
<span class="cline-any cline-neutral"> </span>
|
|
1021
|
-
<span class="cline-any cline-
|
|
1015
|
+
<span class="cline-any cline-no"> </span>
|
|
1022
1016
|
<span class="cline-any cline-neutral"> </span>
|
|
1023
1017
|
<span class="cline-any cline-neutral"> </span>
|
|
1024
1018
|
<span class="cline-any cline-neutral"> </span>
|
|
1025
1019
|
<span class="cline-any cline-neutral"> </span>
|
|
1026
|
-
<span class="cline-any cline-
|
|
1020
|
+
<span class="cline-any cline-no"> </span>
|
|
1027
1021
|
<span class="cline-any cline-neutral"> </span>
|
|
1028
1022
|
<span class="cline-any cline-neutral"> </span>
|
|
1029
1023
|
<span class="cline-any cline-neutral"> </span>
|
|
1030
|
-
<span class="cline-any cline-
|
|
1024
|
+
<span class="cline-any cline-no"> </span>
|
|
1031
1025
|
<span class="cline-any cline-neutral"> </span>
|
|
1032
1026
|
<span class="cline-any cline-neutral"> </span>
|
|
1033
|
-
<span class="cline-any cline-
|
|
1034
|
-
<span class="cline-any cline-
|
|
1035
|
-
<span class="cline-any cline-
|
|
1036
|
-
<span class="cline-any cline-
|
|
1037
|
-
<span class="cline-any cline-
|
|
1027
|
+
<span class="cline-any cline-no"> </span>
|
|
1028
|
+
<span class="cline-any cline-no"> </span>
|
|
1029
|
+
<span class="cline-any cline-no"> </span>
|
|
1030
|
+
<span class="cline-any cline-no"> </span>
|
|
1031
|
+
<span class="cline-any cline-no"> </span>
|
|
1038
1032
|
<span class="cline-any cline-neutral"> </span>
|
|
1039
1033
|
<span class="cline-any cline-neutral"> </span>
|
|
1040
1034
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1049,37 +1043,37 @@
|
|
|
1049
1043
|
<span class="cline-any cline-neutral"> </span>
|
|
1050
1044
|
<span class="cline-any cline-neutral"> </span>
|
|
1051
1045
|
<span class="cline-any cline-neutral"> </span>
|
|
1052
|
-
<span class="cline-any cline-
|
|
1053
|
-
<span class="cline-any cline-
|
|
1046
|
+
<span class="cline-any cline-no"> </span>
|
|
1047
|
+
<span class="cline-any cline-no"> </span>
|
|
1054
1048
|
<span class="cline-any cline-neutral"> </span>
|
|
1055
1049
|
<span class="cline-any cline-neutral"> </span>
|
|
1056
1050
|
<span class="cline-any cline-neutral"> </span>
|
|
1057
|
-
<span class="cline-any cline-
|
|
1058
|
-
<span class="cline-any cline-
|
|
1059
|
-
<span class="cline-any cline-
|
|
1060
|
-
<span class="cline-any cline-
|
|
1051
|
+
<span class="cline-any cline-no"> </span>
|
|
1052
|
+
<span class="cline-any cline-no"> </span>
|
|
1053
|
+
<span class="cline-any cline-no"> </span>
|
|
1054
|
+
<span class="cline-any cline-no"> </span>
|
|
1061
1055
|
<span class="cline-any cline-neutral"> </span>
|
|
1062
|
-
<span class="cline-any cline-
|
|
1056
|
+
<span class="cline-any cline-no"> </span>
|
|
1063
1057
|
<span class="cline-any cline-neutral"> </span>
|
|
1064
1058
|
<span class="cline-any cline-neutral"> </span>
|
|
1065
1059
|
<span class="cline-any cline-neutral"> </span>
|
|
1066
1060
|
<span class="cline-any cline-neutral"> </span>
|
|
1067
1061
|
<span class="cline-any cline-neutral"> </span>
|
|
1068
|
-
<span class="cline-any cline-
|
|
1062
|
+
<span class="cline-any cline-no"> </span>
|
|
1069
1063
|
<span class="cline-any cline-neutral"> </span>
|
|
1070
1064
|
<span class="cline-any cline-neutral"> </span>
|
|
1071
|
-
<span class="cline-any cline-
|
|
1065
|
+
<span class="cline-any cline-no"> </span>
|
|
1072
1066
|
<span class="cline-any cline-no"> </span>
|
|
1073
1067
|
<span class="cline-any cline-no"> </span>
|
|
1074
1068
|
<span class="cline-any cline-neutral"> </span>
|
|
1075
1069
|
<span class="cline-any cline-neutral"> </span>
|
|
1076
|
-
<span class="cline-any cline-
|
|
1077
|
-
<span class="cline-any cline-
|
|
1070
|
+
<span class="cline-any cline-no"> </span>
|
|
1071
|
+
<span class="cline-any cline-no"> </span>
|
|
1078
1072
|
<span class="cline-any cline-neutral"> </span>
|
|
1079
1073
|
<span class="cline-any cline-neutral"> </span>
|
|
1080
|
-
<span class="cline-any cline-
|
|
1081
|
-
<span class="cline-any cline-
|
|
1082
|
-
<span class="cline-any cline-
|
|
1074
|
+
<span class="cline-any cline-no"> </span>
|
|
1075
|
+
<span class="cline-any cline-no"> </span>
|
|
1076
|
+
<span class="cline-any cline-no"> </span>
|
|
1083
1077
|
<span class="cline-any cline-neutral"> </span>
|
|
1084
1078
|
<span class="cline-any cline-no"> </span>
|
|
1085
1079
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1133,7 +1127,7 @@
|
|
|
1133
1127
|
<span class="cline-any cline-neutral"> </span>
|
|
1134
1128
|
<span class="cline-any cline-neutral"> </span>
|
|
1135
1129
|
<span class="cline-any cline-neutral"> </span>
|
|
1136
|
-
<span class="cline-any cline-
|
|
1130
|
+
<span class="cline-any cline-no"> </span>
|
|
1137
1131
|
<span class="cline-any cline-neutral"> </span>
|
|
1138
1132
|
<span class="cline-any cline-neutral"> </span>
|
|
1139
1133
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1141,21 +1135,21 @@
|
|
|
1141
1135
|
<span class="cline-any cline-neutral"> </span>
|
|
1142
1136
|
<span class="cline-any cline-neutral"> </span>
|
|
1143
1137
|
<span class="cline-any cline-neutral"> </span>
|
|
1144
|
-
<span class="cline-any cline-
|
|
1145
|
-
<span class="cline-any cline-
|
|
1146
|
-
<span class="cline-any cline-
|
|
1147
|
-
<span class="cline-any cline-
|
|
1138
|
+
<span class="cline-any cline-no"> </span>
|
|
1139
|
+
<span class="cline-any cline-no"> </span>
|
|
1140
|
+
<span class="cline-any cline-no"> </span>
|
|
1141
|
+
<span class="cline-any cline-no"> </span>
|
|
1148
1142
|
<span class="cline-any cline-neutral"> </span>
|
|
1149
|
-
<span class="cline-any cline-
|
|
1150
|
-
<span class="cline-any cline-
|
|
1151
|
-
<span class="cline-any cline-
|
|
1152
|
-
<span class="cline-any cline-
|
|
1143
|
+
<span class="cline-any cline-no"> </span>
|
|
1144
|
+
<span class="cline-any cline-no"> </span>
|
|
1145
|
+
<span class="cline-any cline-no"> </span>
|
|
1146
|
+
<span class="cline-any cline-no"> </span>
|
|
1153
1147
|
<span class="cline-any cline-neutral"> </span>
|
|
1154
1148
|
<span class="cline-any cline-neutral"> </span>
|
|
1155
1149
|
<span class="cline-any cline-neutral"> </span>
|
|
1156
1150
|
<span class="cline-any cline-neutral"> </span>
|
|
1157
1151
|
<span class="cline-any cline-neutral"> </span>
|
|
1158
|
-
<span class="cline-any cline-
|
|
1152
|
+
<span class="cline-any cline-no"> </span>
|
|
1159
1153
|
<span class="cline-any cline-neutral"> </span>
|
|
1160
1154
|
<span class="cline-any cline-neutral"> </span>
|
|
1161
1155
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1172,46 +1166,46 @@
|
|
|
1172
1166
|
<span class="cline-any cline-neutral"> </span>
|
|
1173
1167
|
<span class="cline-any cline-neutral"> </span>
|
|
1174
1168
|
<span class="cline-any cline-neutral"> </span>
|
|
1175
|
-
<span class="cline-any cline-
|
|
1176
|
-
<span class="cline-any cline-
|
|
1177
|
-
<span class="cline-any cline-
|
|
1178
|
-
<span class="cline-any cline-
|
|
1169
|
+
<span class="cline-any cline-no"> </span>
|
|
1170
|
+
<span class="cline-any cline-no"> </span>
|
|
1171
|
+
<span class="cline-any cline-no"> </span>
|
|
1172
|
+
<span class="cline-any cline-no"> </span>
|
|
1179
1173
|
<span class="cline-any cline-no"> </span>
|
|
1180
1174
|
<span class="cline-any cline-neutral"> </span>
|
|
1181
|
-
<span class="cline-any cline-
|
|
1182
|
-
<span class="cline-any cline-
|
|
1175
|
+
<span class="cline-any cline-no"> </span>
|
|
1176
|
+
<span class="cline-any cline-no"> </span>
|
|
1183
1177
|
<span class="cline-any cline-neutral"> </span>
|
|
1184
1178
|
<span class="cline-any cline-neutral"> </span>
|
|
1185
|
-
<span class="cline-any cline-
|
|
1179
|
+
<span class="cline-any cline-no"> </span>
|
|
1186
1180
|
<span class="cline-any cline-neutral"> </span>
|
|
1187
1181
|
<span class="cline-any cline-neutral"> </span>
|
|
1188
1182
|
<span class="cline-any cline-neutral"> </span>
|
|
1189
|
-
<span class="cline-any cline-
|
|
1183
|
+
<span class="cline-any cline-no"> </span>
|
|
1190
1184
|
<span class="cline-any cline-neutral"> </span>
|
|
1191
|
-
<span class="cline-any cline-
|
|
1192
|
-
<span class="cline-any cline-
|
|
1193
|
-
<span class="cline-any cline-
|
|
1185
|
+
<span class="cline-any cline-no"> </span>
|
|
1186
|
+
<span class="cline-any cline-no"> </span>
|
|
1187
|
+
<span class="cline-any cline-no"> </span>
|
|
1194
1188
|
<span class="cline-any cline-neutral"> </span>
|
|
1195
|
-
<span class="cline-any cline-
|
|
1189
|
+
<span class="cline-any cline-no"> </span>
|
|
1196
1190
|
<span class="cline-any cline-neutral"> </span>
|
|
1197
|
-
<span class="cline-any cline-
|
|
1198
|
-
<span class="cline-any cline-
|
|
1191
|
+
<span class="cline-any cline-no"> </span>
|
|
1192
|
+
<span class="cline-any cline-no"> </span>
|
|
1199
1193
|
<span class="cline-any cline-no"> </span>
|
|
1200
1194
|
<span class="cline-any cline-neutral"> </span>
|
|
1201
|
-
<span class="cline-any cline-
|
|
1202
|
-
<span class="cline-any cline-
|
|
1203
|
-
<span class="cline-any cline-
|
|
1195
|
+
<span class="cline-any cline-no"> </span>
|
|
1196
|
+
<span class="cline-any cline-no"> </span>
|
|
1197
|
+
<span class="cline-any cline-no"> </span>
|
|
1204
1198
|
<span class="cline-any cline-neutral"> </span>
|
|
1205
1199
|
<span class="cline-any cline-neutral"> </span>
|
|
1206
|
-
<span class="cline-any cline-
|
|
1200
|
+
<span class="cline-any cline-no"> </span>
|
|
1207
1201
|
<span class="cline-any cline-neutral"> </span>
|
|
1208
1202
|
<span class="cline-any cline-no"> </span>
|
|
1209
1203
|
<span class="cline-any cline-neutral"> </span>
|
|
1210
1204
|
<span class="cline-any cline-neutral"> </span>
|
|
1211
|
-
<span class="cline-any cline-
|
|
1205
|
+
<span class="cline-any cline-no"> </span>
|
|
1212
1206
|
<span class="cline-any cline-neutral"> </span>
|
|
1213
1207
|
<span class="cline-any cline-neutral"> </span>
|
|
1214
|
-
<span class="cline-any cline-
|
|
1208
|
+
<span class="cline-any cline-no"> </span>
|
|
1215
1209
|
<span class="cline-any cline-neutral"> </span>
|
|
1216
1210
|
<span class="cline-any cline-neutral"> </span>
|
|
1217
1211
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1219,15 +1213,15 @@
|
|
|
1219
1213
|
<span class="cline-any cline-neutral"> </span>
|
|
1220
1214
|
<span class="cline-any cline-neutral"> </span>
|
|
1221
1215
|
<span class="cline-any cline-neutral"> </span>
|
|
1222
|
-
<span class="cline-any cline-
|
|
1223
|
-
<span class="cline-any cline-
|
|
1216
|
+
<span class="cline-any cline-no"> </span>
|
|
1217
|
+
<span class="cline-any cline-no"> </span>
|
|
1224
1218
|
<span class="cline-any cline-neutral"> </span>
|
|
1225
|
-
<span class="cline-any cline-
|
|
1226
|
-
<span class="cline-any cline-
|
|
1227
|
-
<span class="cline-any cline-
|
|
1228
|
-
<span class="cline-any cline-
|
|
1219
|
+
<span class="cline-any cline-no"> </span>
|
|
1220
|
+
<span class="cline-any cline-no"> </span>
|
|
1221
|
+
<span class="cline-any cline-no"> </span>
|
|
1222
|
+
<span class="cline-any cline-no"> </span>
|
|
1229
1223
|
<span class="cline-any cline-neutral"> </span>
|
|
1230
|
-
<span class="cline-any cline-
|
|
1224
|
+
<span class="cline-any cline-no"> </span>
|
|
1231
1225
|
<span class="cline-any cline-no"> </span>
|
|
1232
1226
|
<span class="cline-any cline-neutral"> </span>
|
|
1233
1227
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1236,13 +1230,13 @@
|
|
|
1236
1230
|
<span class="cline-any cline-neutral"> </span>
|
|
1237
1231
|
<span class="cline-any cline-no"> </span>
|
|
1238
1232
|
<span class="cline-any cline-neutral"> </span>
|
|
1239
|
-
<span class="cline-any cline-
|
|
1240
|
-
<span class="cline-any cline-
|
|
1233
|
+
<span class="cline-any cline-no"> </span>
|
|
1234
|
+
<span class="cline-any cline-no"> </span>
|
|
1241
1235
|
<span class="cline-any cline-no"> </span>
|
|
1242
1236
|
<span class="cline-any cline-neutral"> </span>
|
|
1243
|
-
<span class="cline-any cline-
|
|
1237
|
+
<span class="cline-any cline-no"> </span>
|
|
1244
1238
|
<span class="cline-any cline-neutral"> </span>
|
|
1245
|
-
<span class="cline-any cline-
|
|
1239
|
+
<span class="cline-any cline-no"> </span>
|
|
1246
1240
|
<span class="cline-any cline-neutral"> </span>
|
|
1247
1241
|
<span class="cline-any cline-neutral"> </span>
|
|
1248
1242
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1251,12 +1245,12 @@
|
|
|
1251
1245
|
<span class="cline-any cline-neutral"> </span>
|
|
1252
1246
|
<span class="cline-any cline-neutral"> </span>
|
|
1253
1247
|
<span class="cline-any cline-neutral"> </span>
|
|
1254
|
-
<span class="cline-any cline-
|
|
1255
|
-
<span class="cline-any cline-
|
|
1256
|
-
<span class="cline-any cline-
|
|
1248
|
+
<span class="cline-any cline-no"> </span>
|
|
1249
|
+
<span class="cline-any cline-no"> </span>
|
|
1250
|
+
<span class="cline-any cline-no"> </span>
|
|
1257
1251
|
<span class="cline-any cline-neutral"> </span>
|
|
1258
|
-
<span class="cline-any cline-
|
|
1259
|
-
<span class="cline-any cline-
|
|
1252
|
+
<span class="cline-any cline-no"> </span>
|
|
1253
|
+
<span class="cline-any cline-no"> </span>
|
|
1260
1254
|
<span class="cline-any cline-neutral"> </span>
|
|
1261
1255
|
<span class="cline-any cline-neutral"> </span>
|
|
1262
1256
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1266,21 +1260,21 @@
|
|
|
1266
1260
|
<span class="cline-any cline-neutral"> </span>
|
|
1267
1261
|
<span class="cline-any cline-neutral"> </span>
|
|
1268
1262
|
<span class="cline-any cline-neutral"> </span>
|
|
1269
|
-
<span class="cline-any cline-
|
|
1270
|
-
<span class="cline-any cline-
|
|
1271
|
-
<span class="cline-any cline-
|
|
1272
|
-
<span class="cline-any cline-
|
|
1263
|
+
<span class="cline-any cline-no"> </span>
|
|
1264
|
+
<span class="cline-any cline-no"> </span>
|
|
1265
|
+
<span class="cline-any cline-no"> </span>
|
|
1266
|
+
<span class="cline-any cline-no"> </span>
|
|
1273
1267
|
<span class="cline-any cline-neutral"> </span>
|
|
1274
|
-
<span class="cline-any cline-
|
|
1268
|
+
<span class="cline-any cline-no"> </span>
|
|
1275
1269
|
<span class="cline-any cline-neutral"> </span>
|
|
1276
|
-
<span class="cline-any cline-
|
|
1270
|
+
<span class="cline-any cline-no"> </span>
|
|
1277
1271
|
<span class="cline-any cline-no"> </span>
|
|
1278
1272
|
<span class="cline-any cline-neutral"> </span>
|
|
1279
|
-
<span class="cline-any cline-
|
|
1280
|
-
<span class="cline-any cline-
|
|
1273
|
+
<span class="cline-any cline-no"> </span>
|
|
1274
|
+
<span class="cline-any cline-no"> </span>
|
|
1281
1275
|
<span class="cline-any cline-no"> </span>
|
|
1282
1276
|
<span class="cline-any cline-neutral"> </span>
|
|
1283
|
-
<span class="cline-any cline-
|
|
1277
|
+
<span class="cline-any cline-no"> </span>
|
|
1284
1278
|
<span class="cline-any cline-neutral"> </span>
|
|
1285
1279
|
<span class="cline-any cline-neutral"> </span>
|
|
1286
1280
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1288,7 +1282,7 @@
|
|
|
1288
1282
|
<span class="cline-any cline-neutral"> </span>
|
|
1289
1283
|
<span class="cline-any cline-neutral"> </span>
|
|
1290
1284
|
<span class="cline-any cline-neutral"> </span>
|
|
1291
|
-
<span class="cline-any cline-
|
|
1285
|
+
<span class="cline-any cline-no"> </span>
|
|
1292
1286
|
<span class="cline-any cline-no"> </span>
|
|
1293
1287
|
<span class="cline-any cline-neutral"> </span>
|
|
1294
1288
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1299,9 +1293,9 @@
|
|
|
1299
1293
|
<span class="cline-any cline-no"> </span>
|
|
1300
1294
|
<span class="cline-any cline-no"> </span>
|
|
1301
1295
|
<span class="cline-any cline-neutral"> </span>
|
|
1302
|
-
<span class="cline-any cline-
|
|
1296
|
+
<span class="cline-any cline-no"> </span>
|
|
1303
1297
|
<span class="cline-any cline-neutral"> </span>
|
|
1304
|
-
<span class="cline-any cline-
|
|
1298
|
+
<span class="cline-any cline-no"> </span>
|
|
1305
1299
|
<span class="cline-any cline-neutral"> </span>
|
|
1306
1300
|
<span class="cline-any cline-neutral"> </span>
|
|
1307
1301
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1309,23 +1303,23 @@
|
|
|
1309
1303
|
<span class="cline-any cline-neutral"> </span>
|
|
1310
1304
|
<span class="cline-any cline-neutral"> </span>
|
|
1311
1305
|
<span class="cline-any cline-neutral"> </span>
|
|
1312
|
-
<span class="cline-any cline-
|
|
1313
|
-
<span class="cline-any cline-
|
|
1314
|
-
<span class="cline-any cline-
|
|
1306
|
+
<span class="cline-any cline-no"> </span>
|
|
1307
|
+
<span class="cline-any cline-no"> </span>
|
|
1308
|
+
<span class="cline-any cline-no"> </span>
|
|
1315
1309
|
<span class="cline-any cline-no"> </span>
|
|
1316
1310
|
<span class="cline-any cline-neutral"> </span>
|
|
1317
|
-
<span class="cline-any cline-
|
|
1311
|
+
<span class="cline-any cline-no"> </span>
|
|
1318
1312
|
<span class="cline-any cline-neutral"> </span>
|
|
1319
|
-
<span class="cline-any cline-
|
|
1313
|
+
<span class="cline-any cline-no"> </span>
|
|
1320
1314
|
<span class="cline-any cline-neutral"> </span>
|
|
1321
1315
|
<span class="cline-any cline-neutral"> </span>
|
|
1322
|
-
<span class="cline-any cline-
|
|
1323
|
-
<span class="cline-any cline-
|
|
1316
|
+
<span class="cline-any cline-no"> </span>
|
|
1317
|
+
<span class="cline-any cline-no"> </span>
|
|
1324
1318
|
<span class="cline-any cline-neutral"> </span>
|
|
1325
1319
|
<span class="cline-any cline-neutral"> </span>
|
|
1326
1320
|
<span class="cline-any cline-neutral"> </span>
|
|
1327
1321
|
<span class="cline-any cline-neutral"> </span>
|
|
1328
|
-
<span class="cline-any cline-
|
|
1322
|
+
<span class="cline-any cline-no"> </span>
|
|
1329
1323
|
<span class="cline-any cline-neutral"> </span>
|
|
1330
1324
|
<span class="cline-any cline-no"> </span>
|
|
1331
1325
|
<span class="cline-any cline-no"> </span>
|
|
@@ -1351,7 +1345,7 @@
|
|
|
1351
1345
|
<span class="cline-any cline-no"> </span>
|
|
1352
1346
|
<span class="cline-any cline-no"> </span>
|
|
1353
1347
|
<span class="cline-any cline-neutral"> </span>
|
|
1354
|
-
<span class="cline-any cline-
|
|
1348
|
+
<span class="cline-any cline-no"> </span>
|
|
1355
1349
|
<span class="cline-any cline-neutral"> </span>
|
|
1356
1350
|
<span class="cline-any cline-neutral"> </span>
|
|
1357
1351
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1370,9 +1364,9 @@
|
|
|
1370
1364
|
<span class="cline-any cline-neutral"> </span>
|
|
1371
1365
|
<span class="cline-any cline-neutral"> </span>
|
|
1372
1366
|
<span class="cline-any cline-neutral"> </span>
|
|
1373
|
-
<span class="cline-any cline-
|
|
1374
|
-
<span class="cline-any cline-
|
|
1375
|
-
<span class="cline-any cline-
|
|
1367
|
+
<span class="cline-any cline-no"> </span>
|
|
1368
|
+
<span class="cline-any cline-no"> </span>
|
|
1369
|
+
<span class="cline-any cline-no"> </span>
|
|
1376
1370
|
<span class="cline-any cline-no"> </span>
|
|
1377
1371
|
<span class="cline-any cline-no"> </span>
|
|
1378
1372
|
<span class="cline-any cline-no"> </span>
|
|
@@ -1403,7 +1397,7 @@
|
|
|
1403
1397
|
<span class="cline-any cline-neutral"> </span>
|
|
1404
1398
|
<span class="cline-any cline-neutral"> </span>
|
|
1405
1399
|
<span class="cline-any cline-neutral"> </span>
|
|
1406
|
-
<span class="cline-any cline-
|
|
1400
|
+
<span class="cline-any cline-no"> </span>
|
|
1407
1401
|
<span class="cline-any cline-no"> </span>
|
|
1408
1402
|
<span class="cline-any cline-neutral"> </span>
|
|
1409
1403
|
<span class="cline-any cline-no"> </span>
|
|
@@ -1428,7 +1422,7 @@
|
|
|
1428
1422
|
<span class="cline-any cline-neutral"> </span>
|
|
1429
1423
|
<span class="cline-any cline-neutral"> </span>
|
|
1430
1424
|
<span class="cline-any cline-neutral"> </span>
|
|
1431
|
-
<span class="cline-any cline-
|
|
1425
|
+
<span class="cline-any cline-no"> </span>
|
|
1432
1426
|
<span class="cline-any cline-neutral"> </span>
|
|
1433
1427
|
<span class="cline-any cline-neutral"> </span>
|
|
1434
1428
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1443,75 +1437,73 @@
|
|
|
1443
1437
|
<span class="cline-any cline-neutral"> </span>
|
|
1444
1438
|
<span class="cline-any cline-neutral"> </span>
|
|
1445
1439
|
<span class="cline-any cline-neutral"> </span>
|
|
1446
|
-
<span class="cline-any cline-
|
|
1440
|
+
<span class="cline-any cline-no"> </span>
|
|
1447
1441
|
<span class="cline-any cline-neutral"> </span>
|
|
1448
1442
|
<span class="cline-any cline-neutral"> </span>
|
|
1449
|
-
<span class="cline-any cline-
|
|
1443
|
+
<span class="cline-any cline-no"> </span>
|
|
1450
1444
|
<span class="cline-any cline-neutral"> </span>
|
|
1451
|
-
<span class="cline-any cline-
|
|
1445
|
+
<span class="cline-any cline-no"> </span>
|
|
1452
1446
|
<span class="cline-any cline-neutral"> </span>
|
|
1453
|
-
<span class="cline-any cline-
|
|
1447
|
+
<span class="cline-any cline-no"> </span>
|
|
1454
1448
|
<span class="cline-any cline-neutral"> </span>
|
|
1455
|
-
<span class="cline-any cline-
|
|
1456
|
-
<span class="cline-any cline-
|
|
1457
|
-
<span class="cline-any cline-
|
|
1458
|
-
<span class="cline-any cline-
|
|
1449
|
+
<span class="cline-any cline-no"> </span>
|
|
1450
|
+
<span class="cline-any cline-no"> </span>
|
|
1451
|
+
<span class="cline-any cline-no"> </span>
|
|
1452
|
+
<span class="cline-any cline-no"> </span>
|
|
1459
1453
|
<span class="cline-any cline-neutral"> </span>
|
|
1460
|
-
<span class="cline-any cline-
|
|
1461
|
-
<span class="cline-any cline-
|
|
1462
|
-
<span class="cline-any cline-
|
|
1463
|
-
<span class="cline-any cline-
|
|
1464
|
-
<span class="cline-any cline-
|
|
1465
|
-
<span class="cline-any cline-
|
|
1454
|
+
<span class="cline-any cline-no"> </span>
|
|
1455
|
+
<span class="cline-any cline-no"> </span>
|
|
1456
|
+
<span class="cline-any cline-no"> </span>
|
|
1457
|
+
<span class="cline-any cline-no"> </span>
|
|
1458
|
+
<span class="cline-any cline-no"> </span>
|
|
1459
|
+
<span class="cline-any cline-no"> </span>
|
|
1466
1460
|
<span class="cline-any cline-neutral"> </span>
|
|
1467
1461
|
<span class="cline-any cline-neutral"> </span>
|
|
1468
1462
|
<span class="cline-any cline-neutral"> </span>
|
|
1469
|
-
<span class="cline-any cline-
|
|
1463
|
+
<span class="cline-any cline-no"> </span>
|
|
1470
1464
|
<span class="cline-any cline-neutral"> </span>
|
|
1471
1465
|
<span class="cline-any cline-neutral"> </span>
|
|
1472
1466
|
<span class="cline-any cline-neutral"> </span>
|
|
1473
|
-
<span class="cline-any cline-
|
|
1474
|
-
<span class="cline-any cline-
|
|
1475
|
-
<span class="cline-any cline-
|
|
1467
|
+
<span class="cline-any cline-no"> </span>
|
|
1468
|
+
<span class="cline-any cline-no"> </span>
|
|
1469
|
+
<span class="cline-any cline-no"> </span>
|
|
1476
1470
|
<span class="cline-any cline-no"> </span>
|
|
1477
1471
|
<span class="cline-any cline-neutral"> </span>
|
|
1478
|
-
<span class="cline-any cline-
|
|
1479
|
-
<span class="cline-any cline-
|
|
1480
|
-
<span class="cline-any cline-
|
|
1472
|
+
<span class="cline-any cline-no"> </span>
|
|
1473
|
+
<span class="cline-any cline-no"> </span>
|
|
1474
|
+
<span class="cline-any cline-no"> </span>
|
|
1481
1475
|
<span class="cline-any cline-no"> </span>
|
|
1482
1476
|
<span class="cline-any cline-neutral"> </span>
|
|
1483
|
-
<span class="cline-any cline-
|
|
1477
|
+
<span class="cline-any cline-no"> </span>
|
|
1484
1478
|
<span class="cline-any cline-neutral"> </span>
|
|
1485
|
-
<span class="cline-any cline-
|
|
1486
|
-
<span class="cline-any cline-
|
|
1487
|
-
<span class="cline-any cline-
|
|
1479
|
+
<span class="cline-any cline-no"> </span>
|
|
1480
|
+
<span class="cline-any cline-no"> </span>
|
|
1481
|
+
<span class="cline-any cline-no"> </span>
|
|
1488
1482
|
<span class="cline-any cline-no"> </span>
|
|
1489
1483
|
<span class="cline-any cline-neutral"> </span>
|
|
1490
1484
|
<span class="cline-any cline-neutral"> </span>
|
|
1491
|
-
<span class="cline-any cline-
|
|
1485
|
+
<span class="cline-any cline-no"> </span>
|
|
1492
1486
|
<span class="cline-any cline-neutral"> </span>
|
|
1493
1487
|
<span class="cline-any cline-neutral"> </span>
|
|
1494
1488
|
<span class="cline-any cline-neutral"> </span>
|
|
1495
1489
|
<span class="cline-any cline-neutral"> </span>
|
|
1496
|
-
<span class="cline-any cline-
|
|
1497
|
-
<span class="cline-any cline-
|
|
1490
|
+
<span class="cline-any cline-no"> </span>
|
|
1491
|
+
<span class="cline-any cline-no"> </span>
|
|
1498
1492
|
<span class="cline-any cline-no"> </span>
|
|
1499
1493
|
<span class="cline-any cline-neutral"> </span>
|
|
1500
1494
|
<span class="cline-any cline-neutral"> </span>
|
|
1501
|
-
<span class="cline-any cline-
|
|
1502
|
-
<span class="cline-any cline-
|
|
1495
|
+
<span class="cline-any cline-no"> </span>
|
|
1496
|
+
<span class="cline-any cline-no"> </span>
|
|
1503
1497
|
<span class="cline-any cline-neutral"> </span>
|
|
1504
|
-
<span class="cline-any cline-
|
|
1505
|
-
<span class="cline-any cline-
|
|
1506
|
-
<span class="cline-any cline-
|
|
1498
|
+
<span class="cline-any cline-no"> </span>
|
|
1499
|
+
<span class="cline-any cline-no"> </span>
|
|
1500
|
+
<span class="cline-any cline-no"> </span>
|
|
1507
1501
|
<span class="cline-any cline-neutral"> </span>
|
|
1508
1502
|
<span class="cline-any cline-neutral"> </span>
|
|
1509
1503
|
<span class="cline-any cline-neutral"> </span>
|
|
1510
1504
|
<span class="cline-any cline-no"> </span>
|
|
1511
1505
|
<span class="cline-any cline-neutral"> </span>
|
|
1512
|
-
<span class="cline-any cline-
|
|
1513
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1514
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1506
|
+
<span class="cline-any cline-no"> </span>
|
|
1515
1507
|
<span class="cline-any cline-neutral"> </span>
|
|
1516
1508
|
<span class="cline-any cline-neutral"> </span>
|
|
1517
1509
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1535,18 +1527,18 @@
|
|
|
1535
1527
|
<span class="cline-any cline-neutral"> </span>
|
|
1536
1528
|
<span class="cline-any cline-neutral"> </span>
|
|
1537
1529
|
<span class="cline-any cline-neutral"> </span>
|
|
1538
|
-
<span class="cline-any cline-
|
|
1530
|
+
<span class="cline-any cline-no"> </span>
|
|
1539
1531
|
<span class="cline-any cline-neutral"> </span>
|
|
1540
|
-
<span class="cline-any cline-
|
|
1541
|
-
<span class="cline-any cline-
|
|
1532
|
+
<span class="cline-any cline-no"> </span>
|
|
1533
|
+
<span class="cline-any cline-no"> </span>
|
|
1542
1534
|
<span class="cline-any cline-neutral"> </span>
|
|
1543
1535
|
<span class="cline-any cline-neutral"> </span>
|
|
1544
1536
|
<span class="cline-any cline-neutral"> </span>
|
|
1545
1537
|
<span class="cline-any cline-neutral"> </span>
|
|
1546
1538
|
<span class="cline-any cline-neutral"> </span>
|
|
1547
|
-
<span class="cline-any cline-
|
|
1539
|
+
<span class="cline-any cline-no"> </span>
|
|
1548
1540
|
<span class="cline-any cline-neutral"> </span>
|
|
1549
|
-
<span class="cline-any cline-
|
|
1541
|
+
<span class="cline-any cline-no"> </span>
|
|
1550
1542
|
<span class="cline-any cline-neutral"> </span>
|
|
1551
1543
|
<span class="cline-any cline-neutral"> </span>
|
|
1552
1544
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1563,7 +1555,6 @@
|
|
|
1563
1555
|
FieldSchema,
|
|
1564
1556
|
Row,
|
|
1565
1557
|
Table,
|
|
1566
|
-
RelationshipTypes,
|
|
1567
1558
|
} from "@budibase/types"
|
|
1568
1559
|
import {
|
|
1569
1560
|
breakRowIdField,
|
|
@@ -1572,7 +1563,7 @@ import {
|
|
|
1572
1563
|
convertRowId,
|
|
1573
1564
|
} from "../../../integrations/utils"
|
|
1574
1565
|
import { getDatasourceAndQuery } from "./utils"
|
|
1575
|
-
import { FieldTypes } from "../../../constants"
|
|
1566
|
+
import { FieldTypes, RelationshipTypes } from "../../../constants"
|
|
1576
1567
|
import { breakExternalTableId, isSQL } from "../../../integrations/utils"
|
|
1577
1568
|
import { processObjectSync } from "@budibase/string-templates"
|
|
1578
1569
|
import { cloneDeep } from "lodash/fp"
|
|
@@ -1598,23 +1589,22 @@ export interface RunConfig {
|
|
|
1598
1589
|
row?: Row
|
|
1599
1590
|
rows?: Row[]
|
|
1600
1591
|
tables?: Record<string, Table>
|
|
1601
|
-
includeSqlRelationships?: IncludeRelationship
|
|
1602
1592
|
}
|
|
1603
1593
|
|
|
1604
|
-
function buildFilters(
|
|
1594
|
+
function <span class="fstat-no" title="function not covered" >buildFilters(</span>
|
|
1605
1595
|
id: string | undefined | string[],
|
|
1606
1596
|
filters: SearchFilters,
|
|
1607
1597
|
table: Table
|
|
1608
1598
|
) {
|
|
1609
|
-
const primary = table.primary
|
|
1599
|
+
const primary = <span class="cstat-no" title="statement not covered" >table.primary</span>
|
|
1610
1600
|
// if passed in array need to copy for shifting etc
|
|
1611
|
-
let idCopy: undefined | string | any[] = cloneDeep(id)
|
|
1612
|
-
if (filters) {
|
|
1601
|
+
let idCopy: undefined | string | any[] = <span class="cstat-no" title="statement not covered" >cloneDeep(id)</span>
|
|
1602
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (filters) {</span>
|
|
1613
1603
|
// need to map over the filters and make sure the _id field isn't present
|
|
1614
|
-
let prefix = 1
|
|
1615
|
-
for (let operator of Object.values(filters)) {
|
|
1616
|
-
|
|
1617
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (removeKeyNumbering(field) === "_id") {
|
|
1604
|
+
let prefix = <span class="cstat-no" title="statement not covered" >1</span>
|
|
1605
|
+
<span class="cstat-no" title="statement not covered" > for (let operator of Object.values(filters)) {</span>
|
|
1606
|
+
<span class="cstat-no" title="statement not covered" > for (let field of Object.keys(operator || {})) {</span>
|
|
1607
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (removeKeyNumbering(field) === "_id") {</span>
|
|
1618
1608
|
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (primary) {</span>
|
|
1619
1609
|
const parts = <span class="cstat-no" title="statement not covered" >breakRowIdField(operator[field])</span>
|
|
1620
1610
|
<span class="cstat-no" title="statement not covered" > for (let field of primary) {</span>
|
|
@@ -1629,21 +1619,21 @@ function buildFilters(
|
|
|
1629
1619
|
}
|
|
1630
1620
|
}
|
|
1631
1621
|
// there is no id, just use the user provided filters
|
|
1632
|
-
if (!idCopy || !table) {
|
|
1633
|
-
return filters
|
|
1622
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!idCopy || !table) {</span>
|
|
1623
|
+
<span class="cstat-no" title="statement not covered" > return filters</span>
|
|
1634
1624
|
}
|
|
1635
1625
|
// if used as URL parameter it will have been joined
|
|
1636
|
-
if (!Array.isArray(idCopy)) {
|
|
1637
|
-
idCopy = breakRowIdField(idCopy)
|
|
1626
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!Array.isArray(idCopy)) {</span>
|
|
1627
|
+
<span class="cstat-no" title="statement not covered" > idCopy = breakRowIdField(idCopy)</span>
|
|
1638
1628
|
}
|
|
1639
|
-
const equal: any = {}
|
|
1640
|
-
if (primary && idCopy) {
|
|
1641
|
-
for (let field of primary) {
|
|
1629
|
+
const equal: any = <span class="cstat-no" title="statement not covered" >{}</span>
|
|
1630
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (primary && idCopy) {</span>
|
|
1631
|
+
<span class="cstat-no" title="statement not covered" > for (let field of primary) {</span>
|
|
1642
1632
|
// work through the ID and get the parts
|
|
1643
|
-
equal[field] = idCopy.shift()
|
|
1633
|
+
<span class="cstat-no" title="statement not covered" > equal[field] = idCopy.shift()</span>
|
|
1644
1634
|
}
|
|
1645
1635
|
}
|
|
1646
|
-
return {
|
|
1636
|
+
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
1647
1637
|
equal,
|
|
1648
1638
|
}
|
|
1649
1639
|
}
|
|
@@ -1656,63 +1646,63 @@ function buildFilters(
|
|
|
1656
1646
|
* simplify it down to the requirements. This function is quite complex as we try to be
|
|
1657
1647
|
* relatively restrictive over what types of columns we will perform this action for.
|
|
1658
1648
|
*/
|
|
1659
|
-
function cleanupConfig(
|
|
1660
|
-
const primaryOptions = [
|
|
1649
|
+
function <span class="fstat-no" title="function not covered" >cleanupConfig(c</span>onfig: RunConfig, table: Table): RunConfig {
|
|
1650
|
+
const primaryOptions = <span class="cstat-no" title="statement not covered" >[</span>
|
|
1661
1651
|
FieldTypes.STRING,
|
|
1662
1652
|
FieldTypes.LONGFORM,
|
|
1663
1653
|
FieldTypes.OPTIONS,
|
|
1664
1654
|
FieldTypes.NUMBER,
|
|
1665
1655
|
]
|
|
1666
1656
|
// filter out fields which cannot be keys
|
|
1667
|
-
const fieldNames = Object.entries(table.schema)
|
|
1668
|
-
.filter(schema =>
|
|
1669
|
-
.map(([fieldName]) => fieldName)
|
|
1670
|
-
const iterateObject = (
|
|
1671
|
-
for (let [field, value] of Object.entries(obj)) {
|
|
1672
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (fieldNames.find(name =>
|
|
1657
|
+
const fieldNames = <span class="cstat-no" title="statement not covered" >Object.entries(table.schema)</span>
|
|
1658
|
+
.filter(<span class="fstat-no" title="function not covered" >schema => <span class="cstat-no" title="statement not covered" >p</span>rimaryOptions.find(<span class="fstat-no" title="function not covered" >val => <span class="cstat-no" title="statement not covered" >v</span>al === schema[1].type)</span>)</span>
|
|
1659
|
+
.map(<span class="fstat-no" title="function not covered" >([</span>fieldName]) => <span class="cstat-no" title="statement not covered" >fieldName)</span>
|
|
1660
|
+
const iterateObject = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(o</span>bj: { [key: string]: any }) => {</span>
|
|
1661
|
+
<span class="cstat-no" title="statement not covered" > for (let [field, value] of Object.entries(obj)) {</span>
|
|
1662
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (fieldNames.find(<span class="fstat-no" title="function not covered" >name => <span class="cstat-no" title="statement not covered" >n</span>ame === field) && i</span>sRowId(value)) {</span>
|
|
1673
1663
|
<span class="cstat-no" title="statement not covered" > obj[field] = convertRowId(value)</span>
|
|
1674
1664
|
}
|
|
1675
1665
|
}
|
|
1676
1666
|
}
|
|
1677
1667
|
// check the row and filters to make sure they aren't a key of some sort
|
|
1678
|
-
if (config.filters) {
|
|
1679
|
-
for (let [key, filter] of Object.entries(config.filters)) {
|
|
1668
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (config.filters) {</span>
|
|
1669
|
+
<span class="cstat-no" title="statement not covered" > for (let [key, filter] of Object.entries(config.filters)) {</span>
|
|
1680
1670
|
// oneOf is an array, don't iterate it
|
|
1681
|
-
if (
|
|
1671
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
|
|
1682
1672
|
typeof filter !== "object" ||
|
|
1683
1673
|
Object.keys(filter).length === 0 ||
|
|
1684
1674
|
key === FilterType.ONE_OF
|
|
1685
1675
|
) {
|
|
1686
|
-
continue
|
|
1676
|
+
<span class="cstat-no" title="statement not covered" > continue</span>
|
|
1687
1677
|
}
|
|
1688
|
-
iterateObject(filter)
|
|
1678
|
+
<span class="cstat-no" title="statement not covered" > iterateObject(filter)</span>
|
|
1689
1679
|
}
|
|
1690
1680
|
}
|
|
1691
|
-
if (config.row) {
|
|
1692
|
-
iterateObject(config.row)
|
|
1681
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (config.row) {</span>
|
|
1682
|
+
<span class="cstat-no" title="statement not covered" > iterateObject(config.row)</span>
|
|
1693
1683
|
}
|
|
1694
1684
|
|
|
1695
|
-
return config
|
|
1685
|
+
<span class="cstat-no" title="statement not covered" > return config</span>
|
|
1696
1686
|
}
|
|
1697
1687
|
|
|
1698
|
-
function generateIdForRow(
|
|
1699
|
-
const primary = table.primary
|
|
1700
|
-
if (!row || !primary) {
|
|
1701
|
-
return ""
|
|
1688
|
+
function <span class="fstat-no" title="function not covered" >generateIdForRow(r</span>ow: Row | undefined, table: Table): string {
|
|
1689
|
+
const primary = <span class="cstat-no" title="statement not covered" >table.primary</span>
|
|
1690
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!row || !primary) {</span>
|
|
1691
|
+
<span class="cstat-no" title="statement not covered" > return ""</span>
|
|
1702
1692
|
}
|
|
1703
1693
|
// build id array
|
|
1704
|
-
let idParts = []
|
|
1705
|
-
for (let field of primary) {
|
|
1694
|
+
let idParts = <span class="cstat-no" title="statement not covered" >[]</span>
|
|
1695
|
+
<span class="cstat-no" title="statement not covered" > for (let field of primary) {</span>
|
|
1706
1696
|
// need to handle table name + field or just field, depending on if relationships used
|
|
1707
|
-
const fieldValue = row[`${table.name}.${field}`] || row[field]
|
|
1708
|
-
if (fieldValue) {
|
|
1709
|
-
idParts.push(fieldValue)
|
|
1697
|
+
const fieldValue = <span class="cstat-no" title="statement not covered" >row[`${table.name}.${field}`] || row[field]</span>
|
|
1698
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (fieldValue) {</span>
|
|
1699
|
+
<span class="cstat-no" title="statement not covered" > idParts.push(fieldValue)</span>
|
|
1710
1700
|
}
|
|
1711
1701
|
}
|
|
1712
|
-
if (idParts.length === 0) {
|
|
1713
|
-
return ""
|
|
1702
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (idParts.length === 0) {</span>
|
|
1703
|
+
<span class="cstat-no" title="statement not covered" > return ""</span>
|
|
1714
1704
|
}
|
|
1715
|
-
return generateRowIdField(idParts)
|
|
1705
|
+
<span class="cstat-no" title="statement not covered" > return generateRowIdField(idParts)</span>
|
|
1716
1706
|
}
|
|
1717
1707
|
|
|
1718
1708
|
function <span class="fstat-no" title="function not covered" >getEndpoint(t</span>ableId: string | undefined, operation: string) {
|
|
@@ -1727,28 +1717,28 @@ function <span class="fstat-no" title="function not covered" >getEndpoint(t</spa
|
|
|
1727
1717
|
}
|
|
1728
1718
|
}
|
|
1729
1719
|
|
|
1730
|
-
function basicProcessing(
|
|
1731
|
-
const thisRow: Row = {}
|
|
1720
|
+
function <span class="fstat-no" title="function not covered" >basicProcessing(r</span>ow: Row, table: Table): Row {
|
|
1721
|
+
const thisRow: Row = <span class="cstat-no" title="statement not covered" >{}</span>
|
|
1732
1722
|
// filter the row down to what is actually the row (not joined)
|
|
1733
|
-
for (let fieldName of Object.keys(table.schema)) {
|
|
1734
|
-
const pathValue = row[`${table.name}.${fieldName}`]
|
|
1735
|
-
const value = pathValue != null ? pathValue : row[fieldName]
|
|
1723
|
+
<span class="cstat-no" title="statement not covered" > for (let fieldName of Object.keys(table.schema)) {</span>
|
|
1724
|
+
const pathValue = <span class="cstat-no" title="statement not covered" >row[`${table.name}.${fieldName}`]</span>
|
|
1725
|
+
const value = <span class="cstat-no" title="statement not covered" >pathValue != null ? pathValue : row[fieldName]</span>
|
|
1736
1726
|
// all responses include "select col as table.col" so that overlaps are handled
|
|
1737
|
-
if (value != null) {
|
|
1738
|
-
thisRow[fieldName] = value
|
|
1727
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (value != null) {</span>
|
|
1728
|
+
<span class="cstat-no" title="statement not covered" > thisRow[fieldName] = value</span>
|
|
1739
1729
|
}
|
|
1740
1730
|
}
|
|
1741
|
-
thisRow._id = generateIdForRow(row, table)
|
|
1742
|
-
thisRow.tableId = table._id
|
|
1743
|
-
thisRow._rev = "rev"
|
|
1744
|
-
return processFormulas(table, thisRow)
|
|
1731
|
+
<span class="cstat-no" title="statement not covered" > thisRow._id = generateIdForRow(row, table)</span>
|
|
1732
|
+
<span class="cstat-no" title="statement not covered" > thisRow.tableId = table._id</span>
|
|
1733
|
+
<span class="cstat-no" title="statement not covered" > thisRow._rev = "rev"</span>
|
|
1734
|
+
<span class="cstat-no" title="statement not covered" > return processFormulas(table, thisRow)</span>
|
|
1745
1735
|
}
|
|
1746
1736
|
|
|
1747
|
-
function fixArrayTypes(
|
|
1748
|
-
for (let [fieldName, schema] of Object.entries(table.schema)) {
|
|
1749
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (
|
|
1737
|
+
function <span class="fstat-no" title="function not covered" >fixArrayTypes(r</span>ow: Row, table: Table) {
|
|
1738
|
+
<span class="cstat-no" title="statement not covered" > for (let [fieldName, schema] of Object.entries(table.schema)) {</span>
|
|
1739
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
|
|
1750
1740
|
schema.type === FieldTypes.ARRAY &&
|
|
1751
|
-
|
|
1741
|
+
typeof row[fieldName] === "string"
|
|
1752
1742
|
) {
|
|
1753
1743
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1754
1744
|
<span class="cstat-no" title="statement not covered" > row[fieldName] = JSON.parse(row[fieldName])</span>
|
|
@@ -1758,27 +1748,27 @@ function fixArrayTypes(row: Row, table: Table) {
|
|
|
1758
1748
|
}
|
|
1759
1749
|
}
|
|
1760
1750
|
}
|
|
1761
|
-
return row
|
|
1751
|
+
<span class="cstat-no" title="statement not covered" > return row</span>
|
|
1762
1752
|
}
|
|
1763
1753
|
|
|
1764
|
-
function isOneSide(
|
|
1765
|
-
return (
|
|
1754
|
+
function <span class="fstat-no" title="function not covered" >isOneSide(f</span>ield: FieldSchema) {
|
|
1755
|
+
<span class="cstat-no" title="statement not covered" > return (</span>
|
|
1766
1756
|
field.relationshipType && field.relationshipType.split("-")[0] === "one"
|
|
1767
1757
|
)
|
|
1768
1758
|
}
|
|
1769
1759
|
|
|
1770
|
-
export class ExternalRequest {
|
|
1760
|
+
export class <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >ExternalRequest {</span></span>
|
|
1771
1761
|
private operation: Operation
|
|
1772
1762
|
private tableId: string
|
|
1773
1763
|
private datasource?: Datasource
|
|
1774
|
-
private tables: { [key: string]: Table } = {}
|
|
1764
|
+
private <span class="cstat-no" title="statement not covered" >tables: { [key: string]: Table } = {}</span>
|
|
1775
1765
|
|
|
1776
|
-
constructor(
|
|
1777
|
-
this.operation = operation
|
|
1778
|
-
this.tableId = tableId
|
|
1779
|
-
this.datasource = datasource
|
|
1780
|
-
if (datasource && datasource.entities) {
|
|
1781
|
-
this.tables = datasource.entities
|
|
1766
|
+
<span class="fstat-no" title="function not covered" > constructor(o</span>peration: Operation, tableId: string, datasource?: Datasource) {
|
|
1767
|
+
<span class="cstat-no" title="statement not covered" > this.operation = operation</span>
|
|
1768
|
+
<span class="cstat-no" title="statement not covered" > this.tableId = tableId</span>
|
|
1769
|
+
<span class="cstat-no" title="statement not covered" > this.datasource = datasource</span>
|
|
1770
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (datasource && datasource.entities) {</span>
|
|
1771
|
+
<span class="cstat-no" title="statement not covered" > this.tables = datasource.entities</span>
|
|
1782
1772
|
}
|
|
1783
1773
|
}
|
|
1784
1774
|
|
|
@@ -1792,38 +1782,38 @@ export class ExternalRequest {
|
|
|
1792
1782
|
}
|
|
1793
1783
|
}
|
|
1794
1784
|
|
|
1795
|
-
inputProcessing(
|
|
1796
|
-
if (!row) {
|
|
1797
|
-
return { row, manyRelationships: [] }
|
|
1785
|
+
<span class="fstat-no" title="function not covered" > inputProcessing(r</span>ow: Row | undefined, table: Table) {
|
|
1786
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!row) {</span>
|
|
1787
|
+
<span class="cstat-no" title="statement not covered" > return { row, manyRelationships: [] }</span>
|
|
1798
1788
|
}
|
|
1799
1789
|
// we don't really support composite keys for relationships, this is why [0] is used
|
|
1800
1790
|
// @ts-ignore
|
|
1801
|
-
const tablePrimary: string = table.primary[0]
|
|
1802
|
-
let newRow: Row = {}
|
|
1803
|
-
manyRelationships: ManyRelationship[] = []
|
|
1804
|
-
for (let [key, field] of Object.entries(table.schema)) {
|
|
1791
|
+
const tablePrimary: string = <span class="cstat-no" title="statement not covered" >table.primary[0]</span>
|
|
1792
|
+
let newRow: Row = <span class="cstat-no" title="statement not covered" >{},</span>
|
|
1793
|
+
manyRelationships: ManyRelationship[] = <span class="cstat-no" title="statement not covered" >[]</span>
|
|
1794
|
+
<span class="cstat-no" title="statement not covered" > for (let [key, field] of Object.entries(table.schema)) {</span>
|
|
1805
1795
|
// if set already, or not set just skip it
|
|
1806
|
-
if (
|
|
1796
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
|
|
1807
1797
|
row[key] == null ||
|
|
1808
1798
|
newRow[key] ||
|
|
1809
1799
|
field.autocolumn ||
|
|
1810
1800
|
field.type === FieldTypes.FORMULA
|
|
1811
1801
|
) {
|
|
1812
|
-
continue
|
|
1802
|
+
<span class="cstat-no" title="statement not covered" > continue</span>
|
|
1813
1803
|
}
|
|
1814
1804
|
// if its an empty string then it means return the column to null (if possible)
|
|
1815
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (row[key] === "") {
|
|
1805
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (row[key] === "") {</span>
|
|
1816
1806
|
<span class="cstat-no" title="statement not covered" > newRow[key] = null</span>
|
|
1817
1807
|
<span class="cstat-no" title="statement not covered" > continue</span>
|
|
1818
1808
|
}
|
|
1819
1809
|
// parse floats/numbers
|
|
1820
|
-
if (field.type === FieldTypes.NUMBER && !isNaN(parseFloat(row[key]))) {
|
|
1821
|
-
newRow[key] = parseFloat(row[key])
|
|
1810
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (field.type === FieldTypes.NUMBER && !isNaN(parseFloat(row[key]))) {</span>
|
|
1811
|
+
<span class="cstat-no" title="statement not covered" > newRow[key] = parseFloat(row[key])</span>
|
|
1822
1812
|
}
|
|
1823
1813
|
// if its not a link then just copy it over
|
|
1824
|
-
if (field.type !== FieldTypes.LINK) {
|
|
1825
|
-
newRow[key] = row[key]
|
|
1826
|
-
continue
|
|
1814
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (field.type !== FieldTypes.LINK) {</span>
|
|
1815
|
+
<span class="cstat-no" title="statement not covered" > newRow[key] = row[key]</span>
|
|
1816
|
+
<span class="cstat-no" title="statement not covered" > continue</span>
|
|
1827
1817
|
}
|
|
1828
1818
|
const { tableName: linkTableName } = <span class="cstat-no" title="statement not covered" >breakExternalTableId(field?.tableId)</span>
|
|
1829
1819
|
// table has to exist for many to many
|
|
@@ -1877,29 +1867,29 @@ export class ExternalRequest {
|
|
|
1877
1867
|
// we return the relationships that may need to be created in the through table
|
|
1878
1868
|
// we do this so that if the ID is generated by the DB it can be inserted
|
|
1879
1869
|
// after the fact
|
|
1880
|
-
return { row: newRow, manyRelationships }
|
|
1870
|
+
<span class="cstat-no" title="statement not covered" > return { row: newRow, manyRelationships }</span>
|
|
1881
1871
|
}
|
|
1882
1872
|
|
|
1883
|
-
squashRelationshipColumns(
|
|
1873
|
+
<span class="fstat-no" title="function not covered" > squashRelationshipColumns(</span>
|
|
1884
1874
|
table: Table,
|
|
1885
1875
|
row: Row,
|
|
1886
1876
|
relationships: RelationshipsJson[]
|
|
1887
1877
|
): Row {
|
|
1888
|
-
for (let relationship of relationships) {
|
|
1889
|
-
const linkedTable = this.tables[relationship.tableName]
|
|
1890
|
-
if (!linkedTable || !row[relationship.column]) {
|
|
1891
|
-
continue
|
|
1878
|
+
<span class="cstat-no" title="statement not covered" > for (let relationship of relationships) {</span>
|
|
1879
|
+
const linkedTable = <span class="cstat-no" title="statement not covered" >this.tables[relationship.tableName]</span>
|
|
1880
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!linkedTable || !row[relationship.column]) {</span>
|
|
1881
|
+
<span class="cstat-no" title="statement not covered" > continue</span>
|
|
1892
1882
|
}
|
|
1893
|
-
const display = linkedTable.primaryDisplay
|
|
1894
|
-
for (let key of Object.keys(row[relationship.column])) {
|
|
1895
|
-
const related: Row = row[relationship.column][key]
|
|
1896
|
-
row[relationship.column][key] = {
|
|
1897
|
-
primaryDisplay: display ?
|
|
1883
|
+
const display = <span class="cstat-no" title="statement not covered" >linkedTable.primaryDisplay</span>
|
|
1884
|
+
<span class="cstat-no" title="statement not covered" > for (let key of Object.keys(row[relationship.column])) {</span>
|
|
1885
|
+
const related: Row = <span class="cstat-no" title="statement not covered" >row[relationship.column][key]</span>
|
|
1886
|
+
<span class="cstat-no" title="statement not covered" > row[relationship.column][key] = {</span>
|
|
1887
|
+
primaryDisplay: display ? related[display] : undefined,
|
|
1898
1888
|
_id: related._id,
|
|
1899
1889
|
}
|
|
1900
1890
|
}
|
|
1901
1891
|
}
|
|
1902
|
-
return row
|
|
1892
|
+
<span class="cstat-no" title="statement not covered" > return row</span>
|
|
1903
1893
|
}
|
|
1904
1894
|
|
|
1905
1895
|
/**
|
|
@@ -1910,68 +1900,68 @@ export class ExternalRequest {
|
|
|
1910
1900
|
* will be separate rows, with all of the data in each row. We have to decipher what comes
|
|
1911
1901
|
* from where (which tables) and how to convert that into budibase columns.
|
|
1912
1902
|
*/
|
|
1913
|
-
updateRelationshipColumns(
|
|
1903
|
+
<span class="fstat-no" title="function not covered" > updateRelationshipColumns(</span>
|
|
1914
1904
|
table: Table,
|
|
1915
1905
|
row: Row,
|
|
1916
1906
|
rows: { [key: string]: Row },
|
|
1917
1907
|
relationships: RelationshipsJson[]
|
|
1918
1908
|
) {
|
|
1919
|
-
const columns: { [key: string]: any } = {}
|
|
1920
|
-
for (let relationship of relationships) {
|
|
1921
|
-
const linkedTable = this.tables[relationship.tableName]
|
|
1922
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!linkedTable) {
|
|
1909
|
+
const columns: { [key: string]: any } = <span class="cstat-no" title="statement not covered" >{}</span>
|
|
1910
|
+
<span class="cstat-no" title="statement not covered" > for (let relationship of relationships) {</span>
|
|
1911
|
+
const linkedTable = <span class="cstat-no" title="statement not covered" >this.tables[relationship.tableName]</span>
|
|
1912
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!linkedTable) {</span>
|
|
1923
1913
|
<span class="cstat-no" title="statement not covered" > continue</span>
|
|
1924
1914
|
}
|
|
1925
|
-
const fromColumn =
|
|
1926
|
-
const toColumn =
|
|
1915
|
+
const fromColumn = <span class="cstat-no" title="statement not covered" >`${table.name}.${relationship.from}`</span>
|
|
1916
|
+
const toColumn = <span class="cstat-no" title="statement not covered" >`${linkedTable.name}.${relationship.to}`</span>
|
|
1927
1917
|
// this is important when working with multiple relationships
|
|
1928
1918
|
// between the same tables, don't want to overlap/multiply the relations
|
|
1929
|
-
if (
|
|
1919
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
|
|
1930
1920
|
!relationship.through &&
|
|
1931
1921
|
row[fromColumn]?.toString() !== row[toColumn]?.toString()
|
|
1932
1922
|
) {
|
|
1933
|
-
continue
|
|
1923
|
+
<span class="cstat-no" title="statement not covered" > continue</span>
|
|
1934
1924
|
}
|
|
1935
|
-
let linked = basicProcessing(row, linkedTable)
|
|
1936
|
-
if (!linked._id) {
|
|
1937
|
-
continue
|
|
1925
|
+
let linked = <span class="cstat-no" title="statement not covered" >basicProcessing(row, linkedTable)</span>
|
|
1926
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!linked._id) {</span>
|
|
1927
|
+
<span class="cstat-no" title="statement not covered" > continue</span>
|
|
1938
1928
|
}
|
|
1939
|
-
columns[relationship.column] = linked
|
|
1929
|
+
<span class="cstat-no" title="statement not covered" > columns[relationship.column] = linked</span>
|
|
1940
1930
|
}
|
|
1941
|
-
for (let [column, related] of Object.entries(columns)) {
|
|
1942
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!row._id) {
|
|
1931
|
+
<span class="cstat-no" title="statement not covered" > for (let [column, related] of Object.entries(columns)) {</span>
|
|
1932
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!row._id) {</span>
|
|
1943
1933
|
<span class="cstat-no" title="statement not covered" > continue</span>
|
|
1944
1934
|
}
|
|
1945
|
-
const rowId: string = row._id
|
|
1946
|
-
if (!Array.isArray(rows[rowId][column])) {
|
|
1947
|
-
rows[rowId][column] = []
|
|
1935
|
+
const rowId: string = <span class="cstat-no" title="statement not covered" >row._id</span>
|
|
1936
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!Array.isArray(rows[rowId][column])) {</span>
|
|
1937
|
+
<span class="cstat-no" title="statement not covered" > rows[rowId][column] = []</span>
|
|
1948
1938
|
}
|
|
1949
1939
|
// make sure relationship hasn't been found already
|
|
1950
|
-
if (
|
|
1940
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
|
|
1951
1941
|
!rows[rowId][column].find(
|
|
1952
1942
|
<span class="fstat-no" title="function not covered" > (r</span>elation: Row) => <span class="cstat-no" title="statement not covered" >relation._id === related._id</span>
|
|
1953
1943
|
)
|
|
1954
1944
|
) {
|
|
1955
|
-
rows[rowId][column].push(related)
|
|
1945
|
+
<span class="cstat-no" title="statement not covered" > rows[rowId][column].push(related)</span>
|
|
1956
1946
|
}
|
|
1957
1947
|
}
|
|
1958
|
-
return rows
|
|
1948
|
+
<span class="cstat-no" title="statement not covered" > return rows</span>
|
|
1959
1949
|
}
|
|
1960
1950
|
|
|
1961
|
-
outputProcessing(
|
|
1951
|
+
<span class="fstat-no" title="function not covered" > outputProcessing(</span>
|
|
1962
1952
|
rows: Row[] = <span class="branch-0 cbranch-no" title="branch not covered" >[],</span>
|
|
1963
1953
|
table: Table,
|
|
1964
1954
|
relationships: RelationshipsJson[]
|
|
1965
1955
|
) {
|
|
1966
|
-
if (!rows || rows.length === 0 || rows[0].read === true) {
|
|
1967
|
-
return []
|
|
1956
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!rows || rows.length === 0 || rows[0].read === true) {</span>
|
|
1957
|
+
<span class="cstat-no" title="statement not covered" > return []</span>
|
|
1968
1958
|
}
|
|
1969
|
-
let finalRows: { [key: string]: Row } = {}
|
|
1970
|
-
for (let row of rows) {
|
|
1971
|
-
const rowId = generateIdForRow(row, table)
|
|
1972
|
-
row._id = rowId
|
|
1959
|
+
let finalRows: { [key: string]: Row } = <span class="cstat-no" title="statement not covered" >{}</span>
|
|
1960
|
+
<span class="cstat-no" title="statement not covered" > for (let row of rows) {</span>
|
|
1961
|
+
const rowId = <span class="cstat-no" title="statement not covered" >generateIdForRow(row, table)</span>
|
|
1962
|
+
<span class="cstat-no" title="statement not covered" > row._id = rowId</span>
|
|
1973
1963
|
// this is a relationship of some sort
|
|
1974
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (finalRows[rowId]) {
|
|
1964
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (finalRows[rowId]) {</span>
|
|
1975
1965
|
<span class="cstat-no" title="statement not covered" > finalRows = this.updateRelationshipColumns(</span>
|
|
1976
1966
|
table,
|
|
1977
1967
|
row,
|
|
@@ -1980,13 +1970,13 @@ export class ExternalRequest {
|
|
|
1980
1970
|
)
|
|
1981
1971
|
<span class="cstat-no" title="statement not covered" > continue</span>
|
|
1982
1972
|
}
|
|
1983
|
-
const thisRow = fixArrayTypes(basicProcessing(row, table), table)
|
|
1984
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (thisRow._id == null) {
|
|
1973
|
+
const thisRow = <span class="cstat-no" title="statement not covered" >fixArrayTypes(basicProcessing(row, table), table)</span>
|
|
1974
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (thisRow._id == null) {</span>
|
|
1985
1975
|
<span class="cstat-no" title="statement not covered" > throw "Unable to generate row ID for SQL rows"</span>
|
|
1986
1976
|
}
|
|
1987
|
-
finalRows[thisRow._id] = thisRow
|
|
1977
|
+
<span class="cstat-no" title="statement not covered" > finalRows[thisRow._id] = thisRow</span>
|
|
1988
1978
|
// do this at end once its been added to the final rows
|
|
1989
|
-
finalRows = this.updateRelationshipColumns(
|
|
1979
|
+
<span class="cstat-no" title="statement not covered" > finalRows = this.updateRelationshipColumns(</span>
|
|
1990
1980
|
table,
|
|
1991
1981
|
row,
|
|
1992
1982
|
finalRows,
|
|
@@ -1995,12 +1985,12 @@ export class ExternalRequest {
|
|
|
1995
1985
|
}
|
|
1996
1986
|
|
|
1997
1987
|
// Process some additional data types
|
|
1998
|
-
let finalRowArray = Object.values(finalRows)
|
|
1999
|
-
finalRowArray = processDates(table, finalRowArray)
|
|
2000
|
-
finalRowArray = processFormulas(table, finalRowArray) as Row[]
|
|
1988
|
+
let finalRowArray = <span class="cstat-no" title="statement not covered" >Object.values(finalRows)</span>
|
|
1989
|
+
<span class="cstat-no" title="statement not covered" > finalRowArray = processDates(table, finalRowArray)</span>
|
|
1990
|
+
<span class="cstat-no" title="statement not covered" > finalRowArray = processFormulas(table, finalRowArray) as Row[]</span>
|
|
2001
1991
|
|
|
2002
|
-
return finalRowArray.map((
|
|
2003
|
-
this.squashRelationshipColumns(table, row, relationships)
|
|
1992
|
+
<span class="cstat-no" title="statement not covered" > return finalRowArray.map(<span class="fstat-no" title="function not covered" >(r</span>ow: Row) =></span>
|
|
1993
|
+
<span class="cstat-no" title="statement not covered" > this.squashRelationshipColumns(table, row, relationships)</span>
|
|
2004
1994
|
)
|
|
2005
1995
|
}
|
|
2006
1996
|
|
|
@@ -2009,30 +1999,30 @@ export class ExternalRequest {
|
|
|
2009
1999
|
* this will be used by the underlying library to build whatever relationship mechanism
|
|
2010
2000
|
* it has (e.g. SQL joins).
|
|
2011
2001
|
*/
|
|
2012
|
-
buildRelationships(
|
|
2013
|
-
const relationships = []
|
|
2014
|
-
for (let [fieldName, field] of Object.entries(table.schema)) {
|
|
2015
|
-
if (field.type !== FieldTypes.LINK) {
|
|
2016
|
-
continue
|
|
2002
|
+
<span class="fstat-no" title="function not covered" > buildRelationships(t</span>able: Table): RelationshipsJson[] {
|
|
2003
|
+
const relationships = <span class="cstat-no" title="statement not covered" >[]</span>
|
|
2004
|
+
<span class="cstat-no" title="statement not covered" > for (let [fieldName, field] of Object.entries(table.schema)) {</span>
|
|
2005
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (field.type !== FieldTypes.LINK) {</span>
|
|
2006
|
+
<span class="cstat-no" title="statement not covered" > continue</span>
|
|
2017
2007
|
}
|
|
2018
|
-
const { tableName: linkTableName } = breakExternalTableId(field.tableId)
|
|
2008
|
+
const { tableName: linkTableName } = <span class="cstat-no" title="statement not covered" >breakExternalTableId(field.tableId)</span>
|
|
2019
2009
|
// no table to link to, this is not a valid relationships
|
|
2020
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!linkTableName || !this.tables[linkTableName]) {
|
|
2010
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!linkTableName || !this.tables[linkTableName]) {</span>
|
|
2021
2011
|
<span class="cstat-no" title="statement not covered" > continue</span>
|
|
2022
2012
|
}
|
|
2023
|
-
const linkTable = this.tables[linkTableName]
|
|
2024
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!table.primary || !linkTable.primary) {
|
|
2013
|
+
const linkTable = <span class="cstat-no" title="statement not covered" >this.tables[linkTableName]</span>
|
|
2014
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!table.primary || !linkTable.primary) {</span>
|
|
2025
2015
|
<span class="cstat-no" title="statement not covered" > continue</span>
|
|
2026
2016
|
}
|
|
2027
|
-
const definition: any = {
|
|
2017
|
+
const definition: any = <span class="cstat-no" title="statement not covered" >{</span>
|
|
2028
2018
|
// if no foreign key specified then use the name of the field in other table
|
|
2029
|
-
from: field.foreignKey ||
|
|
2019
|
+
from: field.foreignKey || table.primary[0],
|
|
2030
2020
|
to: field.fieldName,
|
|
2031
2021
|
tableName: linkTableName,
|
|
2032
2022
|
// need to specify where to put this back into
|
|
2033
2023
|
column: fieldName,
|
|
2034
2024
|
}
|
|
2035
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (field.through) {
|
|
2025
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (field.through) {</span>
|
|
2036
2026
|
const { tableName: throughTableName } = <span class="cstat-no" title="statement not covered" >breakExternalTableId(</span>
|
|
2037
2027
|
field.through
|
|
2038
2028
|
)
|
|
@@ -2043,33 +2033,33 @@ export class ExternalRequest {
|
|
|
2043
2033
|
<span class="cstat-no" title="statement not covered" > definition.fromPrimary = table.primary[0]</span>
|
|
2044
2034
|
<span class="cstat-no" title="statement not covered" > definition.toPrimary = linkTable.primary[0]</span>
|
|
2045
2035
|
}
|
|
2046
|
-
relationships.push(definition)
|
|
2036
|
+
<span class="cstat-no" title="statement not covered" > relationships.push(definition)</span>
|
|
2047
2037
|
}
|
|
2048
|
-
return relationships
|
|
2038
|
+
<span class="cstat-no" title="statement not covered" > return relationships</span>
|
|
2049
2039
|
}
|
|
2050
2040
|
|
|
2051
2041
|
/**
|
|
2052
2042
|
* This is a cached lookup, of relationship records, this is mainly for creating/deleting junction
|
|
2053
2043
|
* information.
|
|
2054
2044
|
*/
|
|
2055
|
-
async
|
|
2056
|
-
const related: { [key: string]: any } = {}
|
|
2057
|
-
const { tableName } = breakExternalTableId(tableId)
|
|
2058
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!tableName) {
|
|
2045
|
+
<span class="fstat-no" title="function not covered" > async l</span>ookupRelations(tableId: string, row: Row) {
|
|
2046
|
+
const related: { [key: string]: any } = <span class="cstat-no" title="statement not covered" >{}</span>
|
|
2047
|
+
const { tableName } = <span class="cstat-no" title="statement not covered" >breakExternalTableId(tableId)</span>
|
|
2048
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!tableName) {</span>
|
|
2059
2049
|
<span class="cstat-no" title="statement not covered" > return related</span>
|
|
2060
2050
|
}
|
|
2061
|
-
const table = this.tables[tableName]
|
|
2051
|
+
const table = <span class="cstat-no" title="statement not covered" >this.tables[tableName]</span>
|
|
2062
2052
|
// @ts-ignore
|
|
2063
|
-
const primaryKey = table.primary[0]
|
|
2053
|
+
const primaryKey = <span class="cstat-no" title="statement not covered" >table.primary[0]</span>
|
|
2064
2054
|
// make a new request to get the row with all its relationships
|
|
2065
2055
|
// we need this to work out if any relationships need removed
|
|
2066
|
-
for (let field of Object.values(table.schema)) {
|
|
2067
|
-
if (
|
|
2056
|
+
<span class="cstat-no" title="statement not covered" > for (let field of Object.values(table.schema)) {</span>
|
|
2057
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
|
|
2068
2058
|
field.type !== FieldTypes.LINK ||
|
|
2069
2059
|
!field.fieldName ||
|
|
2070
2060
|
isOneSide(field)
|
|
2071
2061
|
) {
|
|
2072
|
-
continue
|
|
2062
|
+
<span class="cstat-no" title="statement not covered" > continue</span>
|
|
2073
2063
|
}
|
|
2074
2064
|
const isMany = <span class="cstat-no" title="statement not covered" >field.relationshipType === RelationshipTypes.MANY_TO_MANY</span>
|
|
2075
2065
|
const tableId = <span class="cstat-no" title="statement not covered" >isMany ? field.through : field.tableId</span>
|
|
@@ -2095,7 +2085,7 @@ export class ExternalRequest {
|
|
|
2095
2085
|
const storeTo = <span class="cstat-no" title="statement not covered" >isMany ? field.throughFrom || linkPrimaryKey : fieldName</span>
|
|
2096
2086
|
<span class="cstat-no" title="statement not covered" > related[storeTo] = { rows, isMany, tableId }</span>
|
|
2097
2087
|
}
|
|
2098
|
-
return related
|
|
2088
|
+
<span class="cstat-no" title="statement not covered" > return related</span>
|
|
2099
2089
|
}
|
|
2100
2090
|
|
|
2101
2091
|
/**
|
|
@@ -2108,15 +2098,15 @@ export class ExternalRequest {
|
|
|
2108
2098
|
* isn't supposed to exist anymore and delete those. This is better than the usual method of delete them
|
|
2109
2099
|
* all and then re-create, as theres no chance of losing data (e.g. delete succeed, but write fail).
|
|
2110
2100
|
*/
|
|
2111
|
-
async
|
|
2101
|
+
<span class="fstat-no" title="function not covered" > async h</span>andleManyRelationships(
|
|
2112
2102
|
mainTableId: string,
|
|
2113
2103
|
row: Row,
|
|
2114
2104
|
relationships: ManyRelationship[]
|
|
2115
2105
|
) {
|
|
2116
2106
|
// if we're creating (in a through table) need to wipe the existing ones first
|
|
2117
|
-
const promises = []
|
|
2118
|
-
const related = await this.lookupRelations(mainTableId, row)
|
|
2119
|
-
for (let relationship of relationships) {
|
|
2107
|
+
const promises = <span class="cstat-no" title="statement not covered" >[]</span>
|
|
2108
|
+
const related = <span class="cstat-no" title="statement not covered" >await this.lookupRelations(mainTableId, row)</span>
|
|
2109
|
+
<span class="cstat-no" title="statement not covered" > for (let relationship of relationships) {</span>
|
|
2120
2110
|
const { key, tableId, isUpdate, id, ...rest } = <span class="cstat-no" title="statement not covered" >relationship</span>
|
|
2121
2111
|
const body: { [key: string]: any } = <span class="cstat-no" title="statement not covered" >processObjectSync(rest, row, {})</span>
|
|
2122
2112
|
const linkTable = <span class="cstat-no" title="statement not covered" >this.getTable(tableId)</span>
|
|
@@ -2147,7 +2137,7 @@ export class ExternalRequest {
|
|
|
2147
2137
|
}
|
|
2148
2138
|
}
|
|
2149
2139
|
// finally cleanup anything that needs to be removed
|
|
2150
|
-
for (let [colName, { isMany, rows, tableId }] of Object.entries(related)) {
|
|
2140
|
+
<span class="cstat-no" title="statement not covered" > for (let [colName, { isMany, rows, tableId }] of Object.entries(related)) {</span>
|
|
2151
2141
|
const table: Table | undefined = <span class="cstat-no" title="statement not covered" >this.getTable(tableId)</span>
|
|
2152
2142
|
// if its not the foreign key skip it, nothing to do
|
|
2153
2143
|
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
|
|
@@ -2172,7 +2162,7 @@ export class ExternalRequest {
|
|
|
2172
2162
|
}
|
|
2173
2163
|
}
|
|
2174
2164
|
}
|
|
2175
|
-
await Promise.all(promises)
|
|
2165
|
+
<span class="cstat-no" title="statement not covered" > await Promise.all(promises)</span>
|
|
2176
2166
|
}
|
|
2177
2167
|
|
|
2178
2168
|
/**
|
|
@@ -2182,78 +2172,78 @@ export class ExternalRequest {
|
|
|
2182
2172
|
* Creating the specific list of fields that we desire, and excluding the ones that are no use to us
|
|
2183
2173
|
* is more performant and has the added benefit of protecting against this scenario.
|
|
2184
2174
|
*/
|
|
2185
|
-
buildFields(
|
|
2175
|
+
<span class="fstat-no" title="function not covered" > buildFields(</span>
|
|
2186
2176
|
table: Table,
|
|
2187
2177
|
includeRelations: IncludeRelationship = <span class="branch-0 cbranch-no" title="branch not covered" >IncludeRelationship.INCLUDE</span>
|
|
2188
2178
|
) {
|
|
2189
|
-
function extractRealFields(
|
|
2190
|
-
return Object.entries(table.schema)
|
|
2179
|
+
function <span class="fstat-no" title="function not covered" >extractRealFields(t</span>able: Table, existing: string[] = <span class="branch-0 cbranch-no" title="branch not covered" >[])</span> {
|
|
2180
|
+
<span class="cstat-no" title="statement not covered" > return Object.entries(table.schema)</span>
|
|
2191
2181
|
.filter(
|
|
2192
|
-
column =>
|
|
2193
|
-
column[1].type !== FieldTypes.LINK &&
|
|
2182
|
+
<span class="fstat-no" title="function not covered" > column =></span>
|
|
2183
|
+
<span class="cstat-no" title="statement not covered" > column[1].type !== FieldTypes.LINK &&</span>
|
|
2194
2184
|
column[1].type !== FieldTypes.FORMULA &&
|
|
2195
|
-
!existing.find((
|
|
2185
|
+
!existing.find(<span class="fstat-no" title="function not covered" >(f</span>ield: string) => <span class="cstat-no" title="statement not covered" >field === column[0])</span>
|
|
2196
2186
|
)
|
|
2197
|
-
.map(column =>
|
|
2187
|
+
.map(<span class="fstat-no" title="function not covered" >column => <span class="cstat-no" title="statement not covered" >`</span>${table.name}.${column[0]}`)</span>
|
|
2198
2188
|
}
|
|
2199
|
-
let fields = extractRealFields(table)
|
|
2200
|
-
for (let field of Object.values(table.schema)) {
|
|
2201
|
-
if (field.type !== FieldTypes.LINK || !includeRelations) {
|
|
2202
|
-
continue
|
|
2189
|
+
let fields = <span class="cstat-no" title="statement not covered" >extractRealFields(table)</span>
|
|
2190
|
+
<span class="cstat-no" title="statement not covered" > for (let field of Object.values(table.schema)) {</span>
|
|
2191
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (field.type !== FieldTypes.LINK || !includeRelations) {</span>
|
|
2192
|
+
<span class="cstat-no" title="statement not covered" > continue</span>
|
|
2203
2193
|
}
|
|
2204
|
-
const { tableName: linkTableName } = breakExternalTableId(field.tableId)
|
|
2205
|
-
if (linkTableName) {
|
|
2206
|
-
const linkTable = this.tables[linkTableName]
|
|
2207
|
-
if (linkTable) {
|
|
2208
|
-
const linkedFields = extractRealFields(linkTable, fields)
|
|
2209
|
-
fields = fields.concat(linkedFields)
|
|
2194
|
+
const { tableName: linkTableName } = <span class="cstat-no" title="statement not covered" >breakExternalTableId(field.tableId)</span>
|
|
2195
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (linkTableName) {</span>
|
|
2196
|
+
const linkTable = <span class="cstat-no" title="statement not covered" >this.tables[linkTableName]</span>
|
|
2197
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (linkTable) {</span>
|
|
2198
|
+
const linkedFields = <span class="cstat-no" title="statement not covered" >extractRealFields(linkTable, fields)</span>
|
|
2199
|
+
<span class="cstat-no" title="statement not covered" > fields = fields.concat(linkedFields)</span>
|
|
2210
2200
|
}
|
|
2211
2201
|
}
|
|
2212
2202
|
}
|
|
2213
|
-
return fields
|
|
2203
|
+
<span class="cstat-no" title="statement not covered" > return fields</span>
|
|
2214
2204
|
}
|
|
2215
2205
|
|
|
2216
|
-
async
|
|
2217
|
-
const { operation, tableId } = this
|
|
2218
|
-
let { datasourceId, tableName } = breakExternalTableId(tableId)
|
|
2219
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!tableName) {
|
|
2206
|
+
<span class="fstat-no" title="function not covered" > async r</span>un(config: RunConfig) {
|
|
2207
|
+
const { operation, tableId } = <span class="cstat-no" title="statement not covered" >this</span>
|
|
2208
|
+
let { datasourceId, tableName } = <span class="cstat-no" title="statement not covered" >breakExternalTableId(tableId)</span>
|
|
2209
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!tableName) {</span>
|
|
2220
2210
|
<span class="cstat-no" title="statement not covered" > throw "Unable to run without a table name"</span>
|
|
2221
2211
|
}
|
|
2222
|
-
if (!this.datasource) {
|
|
2223
|
-
this.datasource = await sdk.datasources.get(datasourceId!)
|
|
2224
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!this.datasource || !this.datasource.entities) {
|
|
2212
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.datasource) {</span>
|
|
2213
|
+
<span class="cstat-no" title="statement not covered" > this.datasource = await sdk.datasources.get(datasourceId!)</span>
|
|
2214
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.datasource || !this.datasource.entities) {</span>
|
|
2225
2215
|
<span class="cstat-no" title="statement not covered" > throw "No tables found, fetch tables before query."</span>
|
|
2226
2216
|
}
|
|
2227
|
-
this.tables = this.datasource.entities
|
|
2217
|
+
<span class="cstat-no" title="statement not covered" > this.tables = this.datasource.entities</span>
|
|
2228
2218
|
}
|
|
2229
|
-
const table = this.tables[tableName]
|
|
2230
|
-
let isSql = isSQL(this.datasource)
|
|
2231
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!table) {
|
|
2219
|
+
const table = <span class="cstat-no" title="statement not covered" >this.tables[tableName]</span>
|
|
2220
|
+
let isSql = <span class="cstat-no" title="statement not covered" >isSQL(this.datasource)</span>
|
|
2221
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!table) {</span>
|
|
2232
2222
|
<span class="cstat-no" title="statement not covered" > throw `Unable to process query, table "${tableName}" not defined.`</span>
|
|
2233
2223
|
}
|
|
2234
2224
|
// look for specific components of config which may not be considered acceptable
|
|
2235
|
-
let { id, row, filters, sort, paginate, rows } = cleanupConfig(
|
|
2225
|
+
let { id, row, filters, sort, paginate, rows } = <span class="cstat-no" title="statement not covered" >cleanupConfig(</span>
|
|
2236
2226
|
config,
|
|
2237
2227
|
table
|
|
2238
2228
|
)
|
|
2239
2229
|
//if the sort column is a formula, remove it
|
|
2240
|
-
for (let sortColumn of Object.keys(sort || {})) {
|
|
2241
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (table.schema[sortColumn]?.type === "formula") {
|
|
2230
|
+
<span class="cstat-no" title="statement not covered" > for (let sortColumn of Object.keys(sort || {})) {</span>
|
|
2231
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (table.schema[sortColumn]?.type === "formula") {</span>
|
|
2242
2232
|
<span class="cstat-no" title="statement not covered" > delete sort?.[sortColumn]</span>
|
|
2243
2233
|
}
|
|
2244
2234
|
}
|
|
2245
|
-
filters = buildFilters(id, filters || {}, table)
|
|
2246
|
-
const relationships = this.buildRelationships(table)
|
|
2235
|
+
<span class="cstat-no" title="statement not covered" > filters = buildFilters(id, filters || {}, table)</span>
|
|
2236
|
+
const relationships = <span class="cstat-no" title="statement not covered" >this.buildRelationships(table)</span>
|
|
2247
2237
|
// clean up row on ingress using schema
|
|
2248
|
-
const processed = this.inputProcessing(row, table)
|
|
2249
|
-
row = processed.row
|
|
2250
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (
|
|
2238
|
+
const processed = <span class="cstat-no" title="statement not covered" >this.inputProcessing(row, table)</span>
|
|
2239
|
+
<span class="cstat-no" title="statement not covered" > row = processed.row</span>
|
|
2240
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
|
|
2251
2241
|
operation === Operation.DELETE &&
|
|
2252
2242
|
(filters == null || Object.keys(filters).length === 0)
|
|
2253
2243
|
) {
|
|
2254
2244
|
<span class="cstat-no" title="statement not covered" > throw "Deletion must be filtered"</span>
|
|
2255
2245
|
}
|
|
2256
|
-
let json = {
|
|
2246
|
+
let json = <span class="cstat-no" title="statement not covered" >{</span>
|
|
2257
2247
|
endpoint: {
|
|
2258
2248
|
datasourceId,
|
|
2259
2249
|
entityId: tableName,
|
|
@@ -2261,9 +2251,7 @@ export class ExternalRequest {
|
|
|
2261
2251
|
},
|
|
2262
2252
|
resource: {
|
|
2263
2253
|
// have to specify the fields to avoid column overlap (for SQL)
|
|
2264
|
-
fields: isSql
|
|
2265
|
-
? this.buildFields(table, config.includeSqlRelationships)
|
|
2266
|
-
: <span class="branch-1 cbranch-no" title="branch not covered" >[],</span>
|
|
2254
|
+
fields: isSql ? this.buildFields(table) : [],
|
|
2267
2255
|
},
|
|
2268
2256
|
filters,
|
|
2269
2257
|
sort,
|
|
@@ -2279,18 +2267,18 @@ export class ExternalRequest {
|
|
|
2279
2267
|
},
|
|
2280
2268
|
}
|
|
2281
2269
|
// can't really use response right now
|
|
2282
|
-
const response = await getDatasourceAndQuery(json)
|
|
2270
|
+
const response = <span class="cstat-no" title="statement not covered" >await getDatasourceAndQuery(json)</span>
|
|
2283
2271
|
// handle many to many relationships now if we know the ID (could be auto increment)
|
|
2284
|
-
if (operation !== Operation.READ && processed.manyRelationships) {
|
|
2285
|
-
await this.handleManyRelationships(
|
|
2286
|
-
table._id ||
|
|
2272
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (operation !== Operation.READ && processed.manyRelationships) {</span>
|
|
2273
|
+
<span class="cstat-no" title="statement not covered" > await this.handleManyRelationships(</span>
|
|
2274
|
+
table._id || "",
|
|
2287
2275
|
response[0],
|
|
2288
2276
|
processed.manyRelationships
|
|
2289
2277
|
)
|
|
2290
2278
|
}
|
|
2291
|
-
const output = this.outputProcessing(response, table, relationships)
|
|
2279
|
+
const output = <span class="cstat-no" title="statement not covered" >this.outputProcessing(response, table, relationships)</span>
|
|
2292
2280
|
// if reading it'll just be an array of rows, return whole thing
|
|
2293
|
-
return operation === Operation.READ && Array.isArray(response)
|
|
2281
|
+
<span class="cstat-no" title="statement not covered" > return operation === Operation.READ && Array.isArray(response)</span>
|
|
2294
2282
|
? output
|
|
2295
2283
|
: { row: output[0], table }
|
|
2296
2284
|
}
|
|
@@ -2302,7 +2290,7 @@ export class ExternalRequest {
|
|
|
2302
2290
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
2303
2291
|
Code coverage generated by
|
|
2304
2292
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
2305
|
-
at Tue Feb 07 2023 16:
|
|
2293
|
+
at Tue Feb 07 2023 16:10:30 GMT+0000 (Coordinated Universal Time)
|
|
2306
2294
|
</div>
|
|
2307
2295
|
<script src="../../../../prettify.js"></script>
|
|
2308
2296
|
<script>
|