@budibase/server 1.0.123-alpha.0 → 1.0.123
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/builder/assets/index.68a7f4e3.css +6 -0
- package/builder/assets/index.8d4a5b33.js +1291 -0
- package/builder/assets/{vendor.5240f480.js → vendor.8e34a169.js} +1 -1
- package/builder/index.html +3 -3
- package/coverage/clover.xml +1763 -758
- package/coverage/coverage-final.json +43 -28
- package/coverage/lcov-report/api/controllers/analytics.js.html +3 -8
- package/coverage/lcov-report/api/controllers/apikeys.js.html +4 -9
- package/coverage/lcov-report/api/controllers/application.js.html +1436 -0
- package/coverage/lcov-report/api/controllers/auth.js.html +3 -8
- package/coverage/lcov-report/api/controllers/automation.js.html +3 -8
- package/coverage/lcov-report/api/controllers/backup.js.html +3 -8
- package/coverage/lcov-report/api/controllers/cloud.js.html +3 -8
- package/coverage/lcov-report/api/controllers/component.js.html +3 -8
- package/coverage/lcov-report/api/controllers/datasource.js.html +6 -11
- package/coverage/lcov-report/api/controllers/dev.js.html +3 -8
- package/coverage/lcov-report/api/controllers/index.html +26 -16
- package/coverage/lcov-report/api/controllers/integration.js.html +3 -8
- package/coverage/lcov-report/api/controllers/layout.js.html +3 -8
- package/coverage/lcov-report/api/controllers/metadata.js.html +3 -8
- package/coverage/lcov-report/api/controllers/migrations.js.html +3 -8
- package/coverage/lcov-report/api/controllers/permission.js.html +3 -8
- package/coverage/lcov-report/api/controllers/query/index.html +26 -16
- package/coverage/lcov-report/api/controllers/query/index.js.html +713 -0
- package/coverage/lcov-report/api/controllers/query/validation.js.html +3 -8
- package/coverage/lcov-report/api/controllers/role.js.html +5 -10
- package/coverage/lcov-report/api/controllers/routing.js.html +4 -9
- package/coverage/lcov-report/api/controllers/row/external.js.html +3 -8
- package/coverage/lcov-report/api/controllers/row/index.html +35 -25
- package/coverage/lcov-report/api/controllers/row/index.js.html +524 -0
- package/coverage/lcov-report/api/controllers/row/internal.js.html +24 -32
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +16 -21
- package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +19 -24
- package/coverage/lcov-report/api/controllers/row/utils.js.html +19 -33
- package/coverage/lcov-report/api/controllers/screen.js.html +4 -9
- package/coverage/lcov-report/api/controllers/script.js.html +3 -8
- package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +50 -55
- package/coverage/lcov-report/api/controllers/table/external.js.html +3 -8
- package/coverage/lcov-report/api/controllers/table/index.html +44 -19
- package/coverage/lcov-report/api/controllers/table/index.js.html +15 -20
- package/coverage/lcov-report/api/controllers/table/internal.js.html +620 -0
- package/coverage/lcov-report/api/controllers/table/utils.js.html +1331 -0
- package/coverage/lcov-report/api/controllers/templates.js.html +3 -8
- package/coverage/lcov-report/api/controllers/user.js.html +3 -8
- package/coverage/lcov-report/api/controllers/view/exporters.js.html +3 -8
- package/coverage/lcov-report/api/controllers/view/index.html +3 -8
- package/coverage/lcov-report/api/controllers/view/index.js.html +5 -10
- package/coverage/lcov-report/api/controllers/view/utils.js.html +3 -8
- package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +3 -8
- package/coverage/lcov-report/api/controllers/webhook.js.html +5 -10
- package/coverage/lcov-report/api/index.html +13 -18
- package/coverage/lcov-report/api/index.js.html +8 -28
- package/coverage/lcov-report/api/routes/analytics.js.html +3 -8
- package/coverage/lcov-report/api/routes/apikeys.js.html +3 -8
- package/coverage/lcov-report/api/routes/application.js.html +179 -0
- package/coverage/lcov-report/api/routes/auth.js.html +3 -8
- package/coverage/lcov-report/api/routes/automation.js.html +3 -8
- package/coverage/lcov-report/api/routes/backup.js.html +3 -8
- package/coverage/lcov-report/api/routes/cloud.js.html +3 -8
- package/coverage/lcov-report/api/routes/component.js.html +3 -8
- package/coverage/lcov-report/api/routes/datasource.js.html +3 -8
- package/coverage/lcov-report/api/routes/deploy.js.html +3 -8
- package/coverage/lcov-report/api/routes/dev.js.html +4 -9
- package/coverage/lcov-report/api/routes/index.html +68 -13
- package/coverage/lcov-report/api/routes/index.js.html +266 -0
- package/coverage/lcov-report/api/routes/integration.js.html +3 -8
- package/coverage/lcov-report/api/routes/layout.js.html +3 -8
- package/coverage/lcov-report/api/routes/metadata.js.html +3 -8
- package/coverage/lcov-report/api/routes/migrations.js.html +3 -8
- package/coverage/lcov-report/api/routes/permission.js.html +3 -8
- package/coverage/lcov-report/api/routes/query.js.html +3 -8
- package/coverage/lcov-report/api/routes/role.js.html +3 -8
- package/coverage/lcov-report/api/routes/routing.js.html +3 -8
- package/coverage/lcov-report/api/routes/row.js.html +908 -0
- package/coverage/lcov-report/api/routes/screen.js.html +3 -8
- package/coverage/lcov-report/api/routes/script.js.html +3 -8
- package/coverage/lcov-report/{automations/steps/loop.js.html → api/routes/static.js.html} +80 -70
- package/coverage/lcov-report/api/routes/table.js.html +3 -8
- package/coverage/lcov-report/api/routes/templates.js.html +3 -8
- package/coverage/lcov-report/api/routes/user.js.html +3 -8
- package/coverage/lcov-report/api/routes/utils/index.html +3 -8
- package/coverage/lcov-report/api/routes/utils/validators.js.html +3 -8
- package/coverage/lcov-report/api/routes/view.js.html +3 -8
- package/coverage/lcov-report/api/routes/webhook.js.html +3 -8
- package/coverage/lcov-report/automations/actions.js.html +7 -21
- package/coverage/lcov-report/automations/automationUtils.js.html +23 -64
- package/coverage/lcov-report/automations/bullboard.js.html +3 -8
- package/coverage/lcov-report/automations/index.html +37 -27
- package/coverage/lcov-report/automations/index.js.html +3 -8
- package/coverage/lcov-report/automations/steps/bash.js.html +3 -8
- package/coverage/lcov-report/automations/steps/createRow.js.html +380 -0
- package/coverage/lcov-report/automations/steps/delay.js.html +3 -8
- package/coverage/lcov-report/automations/steps/deleteRow.js.html +347 -0
- package/coverage/lcov-report/automations/steps/discord.js.html +3 -8
- package/coverage/lcov-report/automations/steps/executeQuery.js.html +3 -8
- package/coverage/lcov-report/automations/steps/executeScript.js.html +3 -8
- package/coverage/lcov-report/automations/steps/filter.js.html +3 -8
- package/coverage/lcov-report/automations/steps/index.html +41 -31
- package/coverage/lcov-report/automations/steps/integromat.js.html +3 -8
- package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +4 -9
- package/coverage/lcov-report/automations/steps/queryRows.js.html +4 -9
- package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +3 -8
- package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -8
- package/coverage/lcov-report/automations/steps/slack.js.html +3 -8
- package/coverage/lcov-report/automations/steps/updateRow.js.html +3 -8
- package/coverage/lcov-report/automations/steps/utils.js.html +9 -14
- package/coverage/lcov-report/automations/steps/zapier.js.html +3 -8
- package/coverage/lcov-report/automations/triggerInfo/app.js.html +3 -8
- package/coverage/lcov-report/automations/triggerInfo/cron.js.html +3 -8
- package/coverage/lcov-report/automations/triggerInfo/index.html +3 -8
- package/coverage/lcov-report/automations/triggerInfo/index.js.html +3 -8
- package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +3 -8
- package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +3 -8
- package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +3 -8
- package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +3 -8
- package/coverage/lcov-report/automations/triggers.js.html +11 -16
- package/coverage/lcov-report/automations/utils.js.html +665 -0
- package/coverage/lcov-report/block-navigation.js +0 -8
- package/coverage/lcov-report/constants/index.html +3 -8
- package/coverage/lcov-report/constants/index.js.html +42 -41
- package/coverage/lcov-report/constants/layouts.js.html +3 -8
- package/coverage/lcov-report/constants/screens.js.html +3 -8
- package/coverage/lcov-report/db/inMemoryView.js.html +3 -8
- package/coverage/lcov-report/db/index.html +3 -8
- package/coverage/lcov-report/db/index.js.html +4 -9
- package/coverage/lcov-report/db/linkedRows/LinkController.js.html +23 -25
- package/coverage/lcov-report/db/linkedRows/index.html +12 -17
- package/coverage/lcov-report/db/linkedRows/index.js.html +17 -22
- package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +7 -12
- package/coverage/lcov-report/db/newid.js.html +6 -11
- package/coverage/lcov-report/db/utils.js.html +79 -84
- package/coverage/lcov-report/events/AutomationEmitter.js.html +9 -14
- package/coverage/lcov-report/events/index.html +3 -8
- package/coverage/lcov-report/events/index.js.html +4 -9
- package/coverage/lcov-report/events/utils.js.html +13 -18
- package/coverage/lcov-report/index.html +132 -137
- package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +3 -8
- package/coverage/lcov-report/integrations/tests/index.html +3 -8
- package/coverage/lcov-report/middleware/appInfo.js.html +3 -8
- package/coverage/lcov-report/middleware/authorized.js.html +458 -0
- package/coverage/lcov-report/middleware/builder.js.html +3 -8
- package/coverage/lcov-report/middleware/currentapp.js.html +15 -65
- package/coverage/lcov-report/middleware/index.html +50 -25
- package/coverage/lcov-report/middleware/joi-validator.js.html +4 -9
- package/coverage/lcov-report/middleware/publicApi.js.html +3 -8
- package/coverage/lcov-report/middleware/resourceId.js.html +3 -8
- package/coverage/lcov-report/middleware/selfhost.js.html +4 -9
- package/coverage/lcov-report/middleware/usageQuota.js.html +572 -0
- package/coverage/lcov-report/middleware/utils.js.html +3 -8
- package/coverage/lcov-report/sorter.js +0 -26
- package/coverage/lcov-report/threads/automation.js.html +90 -581
- package/coverage/lcov-report/threads/index.html +40 -30
- package/coverage/lcov-report/threads/index.js.html +296 -0
- package/coverage/lcov-report/threads/query.js.html +4 -9
- package/coverage/lcov-report/threads/utils.js.html +9 -17
- package/coverage/lcov-report/utilities/bcrypt.js.html +3 -8
- package/coverage/lcov-report/utilities/budibaseDir.js.html +3 -8
- package/coverage/lcov-report/utilities/centralPath.js.html +3 -8
- package/coverage/lcov-report/utilities/csvParser.js.html +5 -10
- package/coverage/lcov-report/utilities/global.js.html +4 -9
- package/coverage/lcov-report/utilities/index.html +3 -8
- package/coverage/lcov-report/utilities/index.js.html +6 -11
- package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +9 -32
- package/coverage/lcov-report/utilities/queue/index.html +7 -12
- package/coverage/lcov-report/utilities/routing/index.html +3 -8
- package/coverage/lcov-report/utilities/routing/index.js.html +3 -8
- package/coverage/lcov-report/utilities/rowProcessor/index.html +27 -32
- package/coverage/lcov-report/utilities/rowProcessor/index.js.html +71 -67
- package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +106 -27
- package/coverage/lcov-report/utilities/scriptRunner.js.html +3 -8
- package/coverage/lcov-report/utilities/security.js.html +4 -9
- package/coverage/lcov-report/utilities/statusCodes.js.html +3 -8
- package/coverage/lcov-report/utilities/usageQuota/index.html +34 -24
- package/coverage/lcov-report/utilities/usageQuota/index.js.html +359 -0
- package/coverage/lcov-report/utilities/usageQuota/rows.js.html +39 -44
- package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +3 -8
- package/coverage/lcov-report/utilities/users.js.html +3 -8
- package/coverage/lcov-report/utilities/workerRequests.js.html +4 -9
- package/coverage/lcov.info +3061 -1290
- package/dist/api/controllers/application.js +73 -145
- package/dist/api/controllers/deploy/index.js +36 -68
- package/dist/api/controllers/public/applications.js +9 -29
- package/dist/api/controllers/public/queries.js +7 -27
- package/dist/api/controllers/public/rows.js +12 -32
- package/dist/api/controllers/public/tables.js +2 -2
- package/dist/api/controllers/public/users.js +8 -8
- package/dist/api/controllers/public/utils.js +1 -1
- package/dist/api/controllers/query/import/index.js +3 -3
- package/dist/api/controllers/query/index.js +44 -57
- package/dist/api/controllers/row/ExternalRequest.js +27 -27
- package/dist/api/controllers/row/index.js +60 -83
- package/dist/api/controllers/row/internal.js +1 -2
- package/dist/api/controllers/row/utils.js +1 -2
- package/dist/api/controllers/static/templates/BudibaseApp.svelte +0 -3
- package/dist/api/controllers/table/bulkFormula.js +1 -2
- package/dist/api/controllers/table/internal.js +55 -40
- package/dist/api/controllers/table/utils.js +229 -271
- package/dist/api/index.js +0 -5
- package/dist/api/routes/application.js +13 -39
- package/dist/api/routes/index.js +56 -61
- package/dist/api/routes/public/index.js +9 -6
- package/dist/api/routes/public/queries.js +1 -1
- package/dist/api/routes/public/rows.js +1 -1
- package/dist/api/routes/public/tables.js +3 -3
- package/dist/api/routes/public/users.js +1 -1
- package/dist/api/routes/row.js +17 -43
- package/dist/api/routes/static.js +13 -40
- package/dist/api/routes/tests/utilities/TestFunctions.js +33 -75
- package/dist/app.js +4 -8
- package/dist/automations/actions.js +0 -3
- package/dist/automations/automationUtils.js +0 -10
- package/dist/automations/steps/createRow.js +12 -12
- package/dist/automations/steps/deleteRow.js +16 -13
- package/dist/automations/tests/utilities/index.js +11 -13
- package/dist/automations/utils.js +133 -187
- package/dist/constants/index.js +7 -5
- package/dist/db/linkedRows/LinkController.js +1 -0
- package/dist/definitions/datasource.js +0 -1
- package/dist/environment.js +3 -2
- package/dist/index.js +0 -4
- package/dist/integrations/base/sql.js +2 -2
- package/dist/integrations/base/sqlTable.js +2 -2
- package/dist/integrations/googlesheets.js +1 -1
- package/dist/integrations/index.js +0 -4
- package/dist/integrations/microsoftSqlServer.js +8 -8
- package/dist/integrations/mysql.js +9 -9
- package/dist/integrations/oracle.js +7 -7
- package/dist/integrations/postgres.js +7 -7
- package/dist/integrations/queries/sql.js +2 -2
- package/dist/integrations/rest.js +1 -1
- package/dist/middleware/authorized.js +51 -51
- package/dist/middleware/currentapp.js +1 -15
- package/dist/middleware/usageQuota.js +154 -0
- package/dist/migrations/functions/appUrls.js +1 -1
- package/dist/migrations/functions/quotas1.js +2 -6
- package/dist/migrations/functions/usageQuotas/index.js +4 -0
- package/dist/migrations/functions/usageQuotas/syncApps.js +7 -4
- package/dist/migrations/functions/usageQuotas/syncRows.js +8 -5
- package/dist/migrations/index.js +1 -17
- package/dist/package.json +4 -10
- package/dist/threads/automation.js +27 -149
- package/dist/threads/index.js +10 -36
- package/dist/threads/utils.js +0 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/utilities/queue/inMemoryQueue.js +1 -6
- package/dist/utilities/rowProcessor/index.js +11 -6
- package/dist/utilities/rowProcessor/utils.js +27 -1
- package/dist/utilities/usageQuota/index.js +86 -0
- package/nodemon.json +1 -1
- package/package.json +9 -15
- package/scripts/dev/manage.js +0 -2
- package/src/api/controllers/{application.ts → application.js} +51 -118
- package/src/api/controllers/deploy/{index.ts → index.js} +29 -53
- package/src/api/controllers/public/applications.ts +2 -2
- package/src/api/controllers/public/queries.ts +1 -1
- package/src/api/controllers/public/rows.ts +1 -1
- package/src/api/controllers/query/{index.ts → index.js} +48 -51
- package/src/api/controllers/row/ExternalRequest.ts +1 -1
- package/src/api/controllers/row/{index.ts → index.js} +17 -24
- package/src/api/controllers/row/internal.js +1 -2
- package/src/api/controllers/row/utils.js +1 -4
- package/src/api/controllers/static/templates/BudibaseApp.svelte +0 -3
- package/src/api/controllers/table/bulkFormula.js +1 -1
- package/src/api/controllers/table/{internal.ts → internal.js} +48 -27
- package/src/api/controllers/table/{utils.ts → utils.js} +69 -86
- package/src/api/index.js +0 -5
- package/src/api/routes/{application.ts → application.js} +14 -8
- package/src/api/routes/index.js +62 -0
- package/src/api/routes/public/index.ts +4 -1
- package/src/api/routes/{row.ts → row.js} +15 -7
- package/src/api/routes/{static.ts → static.js} +11 -11
- package/src/api/routes/tests/misc.spec.js +37 -39
- package/src/api/routes/tests/routing.spec.js +0 -1
- package/src/api/routes/tests/utilities/{TestFunctions.ts → TestFunctions.js} +33 -57
- package/src/app.ts +2 -1
- package/src/automations/actions.js +0 -3
- package/src/automations/automationUtils.js +0 -12
- package/src/automations/steps/{createRow.ts → createRow.js} +15 -9
- package/src/automations/steps/{deleteRow.ts → deleteRow.js} +16 -10
- package/src/automations/tests/automation.spec.js +1 -0
- package/src/automations/tests/{createRow.spec.ts → createRow.spec.js} +15 -4
- package/src/automations/tests/{deleteRow.spec.ts → deleteRow.spec.js} +5 -3
- package/src/automations/tests/utilities/index.js +10 -12
- package/src/automations/{utils.ts → utils.js} +28 -39
- package/src/constants/index.js +8 -6
- package/src/db/linkedRows/LinkController.js +1 -0
- package/src/definitions/datasource.ts +0 -1
- package/src/environment.js +3 -2
- package/src/index.ts +0 -3
- package/src/integrations/index.ts +0 -4
- package/src/middleware/{authorized.ts → authorized.js} +14 -20
- package/src/middleware/currentapp.js +1 -16
- package/src/middleware/tests/usageQuota.spec.js +120 -0
- package/src/middleware/usageQuota.js +164 -0
- package/src/migrations/functions/tests/quotas1.spec.js +2 -0
- package/src/migrations/functions/usageQuotas/index.ts +5 -0
- package/src/migrations/functions/usageQuotas/syncApps.ts +6 -3
- package/src/migrations/functions/usageQuotas/syncRows.ts +6 -3
- package/src/migrations/functions/usageQuotas/tests/syncApps.spec.js +41 -0
- package/src/migrations/functions/usageQuotas/tests/syncRows.spec.js +45 -0
- package/src/migrations/index.ts +1 -13
- package/src/threads/automation.js +34 -196
- package/src/threads/{index.ts → index.js} +14 -18
- package/src/threads/utils.js +0 -1
- package/src/utilities/queue/inMemoryQueue.js +1 -7
- package/src/utilities/rowProcessor/index.js +12 -9
- package/src/utilities/rowProcessor/utils.js +29 -1
- package/src/utilities/tests/usageQuota/usageQuota.spec.js +72 -0
- package/src/utilities/usageQuota/index.js +93 -0
- package/tsconfig.json +2 -2
- package/builder/assets/index.89795487.css +0 -6
- package/builder/assets/index.be9a1b80.js +0 -1299
- package/dist/automations/steps/loop.js +0 -51
- package/dist/integrations/redis.js +0 -158
- package/dist/migrations/functions/developerQuota.js +0 -49
- package/dist/migrations/functions/publishedAppsQuota.js +0 -47
- package/dist/migrations/functions/usageQuotas/syncDevelopers.js +0 -24
- package/dist/migrations/functions/usageQuotas/syncPublishedApps.js +0 -26
- package/dist/tsconfig.build.tsbuildinfo +0 -1
- package/src/api/routes/index.ts +0 -60
- package/src/automations/steps/loop.js +0 -50
- package/src/integrations/redis.ts +0 -152
- package/src/integrations/tests/redis.spec.js +0 -60
- package/src/migrations/functions/developerQuota.ts +0 -15
- package/src/migrations/functions/publishedAppsQuota.ts +0 -13
- package/src/migrations/functions/usageQuotas/syncDevelopers.ts +0 -19
- package/src/migrations/functions/usageQuotas/syncPublishedApps.ts +0 -21
- package/src/migrations/functions/usageQuotas/tests/syncApps.spec.ts +0 -34
- package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +0 -40
- package/tsconfig.build.json +0 -10
|
@@ -1,18 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
const Deployment = require("./Deployment")
|
|
2
|
+
const {
|
|
3
3
|
Replication,
|
|
4
4
|
getProdAppID,
|
|
5
5
|
getDevelopmentAppID,
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
} = require("@budibase/backend-core/db")
|
|
7
|
+
const { DocumentTypes, getAutomationParams } = require("../../../db/utils")
|
|
8
|
+
const {
|
|
9
|
+
disableAllCrons,
|
|
10
|
+
enableCronTrigger,
|
|
11
|
+
} = require("../../../automations/utils")
|
|
12
|
+
const { app: appCache } = require("@budibase/backend-core/cache")
|
|
13
|
+
const {
|
|
11
14
|
getAppId,
|
|
12
15
|
getAppDB,
|
|
13
16
|
getProdAppDB,
|
|
14
|
-
}
|
|
15
|
-
import { quotas } from "@budibase/pro"
|
|
17
|
+
} = require("@budibase/backend-core/context")
|
|
16
18
|
|
|
17
19
|
// the max time we can wait for an invalidation to complete before considering it failed
|
|
18
20
|
const MAX_PENDING_TIME_MS = 30 * 60000
|
|
@@ -23,10 +25,9 @@ const DeploymentStatus = {
|
|
|
23
25
|
}
|
|
24
26
|
|
|
25
27
|
// checks that deployments are in a good state, any pending will be updated
|
|
26
|
-
async function checkAllDeployments(deployments
|
|
28
|
+
async function checkAllDeployments(deployments) {
|
|
27
29
|
let updated = false
|
|
28
|
-
let deployment
|
|
29
|
-
for (deployment of Object.values(deployments.history)) {
|
|
30
|
+
for (let deployment of Object.values(deployments.history)) {
|
|
30
31
|
// check that no deployments have crashed etc and are now stuck
|
|
31
32
|
if (
|
|
32
33
|
deployment.status === DeploymentStatus.PENDING &&
|
|
@@ -40,7 +41,7 @@ async function checkAllDeployments(deployments: any) {
|
|
|
40
41
|
return { updated, deployments }
|
|
41
42
|
}
|
|
42
43
|
|
|
43
|
-
async function storeDeploymentHistory(deployment
|
|
44
|
+
async function storeDeploymentHistory(deployment) {
|
|
44
45
|
const deploymentJSON = deployment.getJSON()
|
|
45
46
|
const db = getAppDB()
|
|
46
47
|
|
|
@@ -69,7 +70,7 @@ async function storeDeploymentHistory(deployment: any) {
|
|
|
69
70
|
return deployment
|
|
70
71
|
}
|
|
71
72
|
|
|
72
|
-
async function initDeployedApp(prodAppId
|
|
73
|
+
async function initDeployedApp(prodAppId) {
|
|
73
74
|
const db = getProdAppDB()
|
|
74
75
|
console.log("Reading automation docs")
|
|
75
76
|
const automations = (
|
|
@@ -78,7 +79,7 @@ async function initDeployedApp(prodAppId: any) {
|
|
|
78
79
|
include_docs: true,
|
|
79
80
|
})
|
|
80
81
|
)
|
|
81
|
-
).rows.map(
|
|
82
|
+
).rows.map(row => row.doc)
|
|
82
83
|
console.log("You have " + automations.length + " automations")
|
|
83
84
|
const promises = []
|
|
84
85
|
console.log("Disabling prod crons..")
|
|
@@ -92,27 +93,21 @@ async function initDeployedApp(prodAppId: any) {
|
|
|
92
93
|
console.log("Enabled cron triggers for deployed app..")
|
|
93
94
|
}
|
|
94
95
|
|
|
95
|
-
async function deployApp(deployment
|
|
96
|
+
async function deployApp(deployment) {
|
|
96
97
|
let replication
|
|
97
98
|
try {
|
|
98
99
|
const appId = getAppId()
|
|
99
100
|
const devAppId = getDevelopmentAppID(appId)
|
|
100
101
|
const productionAppId = getProdAppID(appId)
|
|
101
|
-
|
|
102
|
-
const config: any = {
|
|
102
|
+
replication = new Replication({
|
|
103
103
|
source: devAppId,
|
|
104
104
|
target: productionAppId,
|
|
105
|
-
}
|
|
106
|
-
replication = new Replication(config)
|
|
107
|
-
|
|
105
|
+
})
|
|
108
106
|
console.log("Replication object created")
|
|
109
107
|
await replication.replicate()
|
|
110
108
|
console.log("replication complete.. replacing app meta doc")
|
|
111
109
|
const db = getProdAppDB()
|
|
112
110
|
const appDoc = await db.get(DocumentTypes.APP_METADATA)
|
|
113
|
-
|
|
114
|
-
deployment.appUrl = appDoc.url
|
|
115
|
-
|
|
116
111
|
appDoc.appId = productionAppId
|
|
117
112
|
appDoc.instance._id = productionAppId
|
|
118
113
|
await db.put(appDoc)
|
|
@@ -122,7 +117,7 @@ async function deployApp(deployment: any) {
|
|
|
122
117
|
console.log("Deployed app initialised, setting deployment to successful")
|
|
123
118
|
deployment.setStatus(DeploymentStatus.SUCCESS)
|
|
124
119
|
await storeDeploymentHistory(deployment)
|
|
125
|
-
} catch (err
|
|
120
|
+
} catch (err) {
|
|
126
121
|
deployment.setStatus(DeploymentStatus.FAILURE, err.message)
|
|
127
122
|
await storeDeploymentHistory(deployment)
|
|
128
123
|
throw {
|
|
@@ -130,17 +125,18 @@ async function deployApp(deployment: any) {
|
|
|
130
125
|
message: `Deployment Failed: ${err.message}`,
|
|
131
126
|
}
|
|
132
127
|
} finally {
|
|
133
|
-
|
|
134
|
-
await replication.close()
|
|
135
|
-
}
|
|
128
|
+
await replication.close()
|
|
136
129
|
}
|
|
137
130
|
}
|
|
138
131
|
|
|
139
|
-
|
|
132
|
+
exports.fetchDeployments = async function (ctx) {
|
|
140
133
|
try {
|
|
141
134
|
const db = getAppDB()
|
|
142
135
|
const deploymentDoc = await db.get(DocumentTypes.DEPLOYMENTS)
|
|
143
|
-
const { updated, deployments } = await checkAllDeployments(
|
|
136
|
+
const { updated, deployments } = await checkAllDeployments(
|
|
137
|
+
deploymentDoc,
|
|
138
|
+
ctx.user
|
|
139
|
+
)
|
|
144
140
|
if (updated) {
|
|
145
141
|
await db.put(deployments)
|
|
146
142
|
}
|
|
@@ -150,7 +146,7 @@ export async function fetchDeployments(ctx: any) {
|
|
|
150
146
|
}
|
|
151
147
|
}
|
|
152
148
|
|
|
153
|
-
|
|
149
|
+
exports.deploymentProgress = async function (ctx) {
|
|
154
150
|
try {
|
|
155
151
|
const db = getAppDB()
|
|
156
152
|
const deploymentDoc = await db.get(DocumentTypes.DEPLOYMENTS)
|
|
@@ -163,20 +159,7 @@ export async function deploymentProgress(ctx: any) {
|
|
|
163
159
|
}
|
|
164
160
|
}
|
|
165
161
|
|
|
166
|
-
|
|
167
|
-
try {
|
|
168
|
-
const db = getProdAppDB()
|
|
169
|
-
await db.get(DocumentTypes.APP_METADATA)
|
|
170
|
-
} catch (e: any) {
|
|
171
|
-
if (e.status === 404) {
|
|
172
|
-
return true
|
|
173
|
-
}
|
|
174
|
-
throw e
|
|
175
|
-
}
|
|
176
|
-
return false
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
const _deployApp = async function (ctx: any) {
|
|
162
|
+
exports.deployApp = async function (ctx) {
|
|
180
163
|
let deployment = new Deployment()
|
|
181
164
|
console.log("Deployment object created")
|
|
182
165
|
deployment.setStatus(DeploymentStatus.PENDING)
|
|
@@ -185,14 +168,7 @@ const _deployApp = async function (ctx: any) {
|
|
|
185
168
|
console.log("Stored deployment history")
|
|
186
169
|
|
|
187
170
|
console.log("Deploying app...")
|
|
188
|
-
|
|
189
|
-
if (await isFirstDeploy()) {
|
|
190
|
-
await quotas.addPublishedApp(() => deployApp(deployment))
|
|
191
|
-
} else {
|
|
192
|
-
await deployApp(deployment)
|
|
193
|
-
}
|
|
171
|
+
await deployApp(deployment)
|
|
194
172
|
|
|
195
173
|
ctx.body = deployment
|
|
196
174
|
}
|
|
197
|
-
|
|
198
|
-
export { _deployApp as deployApp }
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const { getAllApps } = require("@budibase/backend-core/db")
|
|
2
2
|
const { updateAppId } = require("@budibase/backend-core/context")
|
|
3
3
|
import { search as stringSearch } from "./utils"
|
|
4
|
-
import
|
|
4
|
+
import { default as controller } from "../application"
|
|
5
5
|
import { Application } from "../../../definitions/common"
|
|
6
6
|
|
|
7
7
|
function fixAppID(app: Application, params: any) {
|
|
@@ -59,7 +59,7 @@ export async function destroy(ctx: any, next: any) {
|
|
|
59
59
|
// get the app before deleting it
|
|
60
60
|
await setResponseApp(ctx)
|
|
61
61
|
const body = ctx.body
|
|
62
|
-
await controller.
|
|
62
|
+
await controller.delete(ctx)
|
|
63
63
|
// overwrite the body again
|
|
64
64
|
ctx.body = body
|
|
65
65
|
await next()
|
|
@@ -1,19 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
const {
|
|
2
|
+
generateQueryID,
|
|
3
|
+
getQueryParams,
|
|
4
|
+
isProdAppID,
|
|
5
|
+
} = require("../../../db/utils")
|
|
6
|
+
const { BaseQueryVerbs } = require("../../../constants")
|
|
7
|
+
const { Thread, ThreadType } = require("../../../threads")
|
|
8
|
+
const { save: saveDatasource } = require("../datasource")
|
|
9
|
+
const { RestImporter } = require("./import")
|
|
10
|
+
const { invalidateDynamicVariables } = require("../../../threads/utils")
|
|
11
|
+
const environment = require("../../../environment")
|
|
12
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
10
13
|
|
|
11
14
|
const Runner = new Thread(ThreadType.QUERY, {
|
|
12
|
-
timeoutMs: QUERY_THREAD_TIMEOUT || 10000,
|
|
15
|
+
timeoutMs: environment.QUERY_THREAD_TIMEOUT || 10000,
|
|
13
16
|
})
|
|
14
17
|
|
|
15
18
|
// simple function to append "readable" to all read queries
|
|
16
|
-
function enrichQueries(input
|
|
19
|
+
function enrichQueries(input) {
|
|
17
20
|
const wasArray = Array.isArray(input)
|
|
18
21
|
const queries = wasArray ? input : [input]
|
|
19
22
|
for (let query of queries) {
|
|
@@ -24,7 +27,7 @@ function enrichQueries(input: any) {
|
|
|
24
27
|
return wasArray ? queries : queries[0]
|
|
25
28
|
}
|
|
26
29
|
|
|
27
|
-
|
|
30
|
+
exports.fetch = async function (ctx) {
|
|
28
31
|
const db = getAppDB()
|
|
29
32
|
|
|
30
33
|
const body = await db.allDocs(
|
|
@@ -33,10 +36,10 @@ export async function fetch(ctx: any) {
|
|
|
33
36
|
})
|
|
34
37
|
)
|
|
35
38
|
|
|
36
|
-
ctx.body = enrichQueries(body.rows.map(
|
|
39
|
+
ctx.body = enrichQueries(body.rows.map(row => row.doc))
|
|
37
40
|
}
|
|
38
41
|
|
|
39
|
-
|
|
42
|
+
exports.import = async ctx => {
|
|
40
43
|
const body = ctx.request.body
|
|
41
44
|
const data = body.data
|
|
42
45
|
|
|
@@ -46,7 +49,7 @@ const _import = async (ctx: any) => {
|
|
|
46
49
|
let datasourceId
|
|
47
50
|
if (!body.datasourceId) {
|
|
48
51
|
// construct new datasource
|
|
49
|
-
const info
|
|
52
|
+
const info = await importer.getInfo()
|
|
50
53
|
let datasource = {
|
|
51
54
|
type: "datasource",
|
|
52
55
|
source: "REST",
|
|
@@ -74,9 +77,8 @@ const _import = async (ctx: any) => {
|
|
|
74
77
|
}
|
|
75
78
|
ctx.status = 200
|
|
76
79
|
}
|
|
77
|
-
export { _import as import }
|
|
78
80
|
|
|
79
|
-
|
|
81
|
+
exports.save = async function (ctx) {
|
|
80
82
|
const db = getAppDB()
|
|
81
83
|
const query = ctx.request.body
|
|
82
84
|
|
|
@@ -91,7 +93,7 @@ export async function save(ctx: any) {
|
|
|
91
93
|
ctx.message = `Query ${query.name} saved successfully.`
|
|
92
94
|
}
|
|
93
95
|
|
|
94
|
-
|
|
96
|
+
exports.find = async function (ctx) {
|
|
95
97
|
const db = getAppDB()
|
|
96
98
|
const query = enrichQueries(await db.get(ctx.params.queryId))
|
|
97
99
|
// remove properties that could be dangerous in real app
|
|
@@ -102,7 +104,7 @@ export async function find(ctx: any) {
|
|
|
102
104
|
ctx.body = query
|
|
103
105
|
}
|
|
104
106
|
|
|
105
|
-
|
|
107
|
+
exports.preview = async function (ctx) {
|
|
106
108
|
const db = getAppDB()
|
|
107
109
|
|
|
108
110
|
const datasource = await db.get(ctx.request.body.datasourceId)
|
|
@@ -112,18 +114,16 @@ export async function preview(ctx: any) {
|
|
|
112
114
|
ctx.request.body
|
|
113
115
|
|
|
114
116
|
try {
|
|
115
|
-
const
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
const { rows, keys, info, extra } = await quotas.addQuery(runFn)
|
|
117
|
+
const { rows, keys, info, extra } = await Runner.run({
|
|
118
|
+
appId: ctx.appId,
|
|
119
|
+
datasource,
|
|
120
|
+
queryVerb,
|
|
121
|
+
fields,
|
|
122
|
+
parameters,
|
|
123
|
+
transformer,
|
|
124
|
+
queryId,
|
|
125
|
+
})
|
|
126
|
+
|
|
127
127
|
ctx.body = {
|
|
128
128
|
rows,
|
|
129
129
|
schemaFields: [...new Set(keys)],
|
|
@@ -135,7 +135,7 @@ export async function preview(ctx: any) {
|
|
|
135
135
|
}
|
|
136
136
|
}
|
|
137
137
|
|
|
138
|
-
async function execute(ctx
|
|
138
|
+
async function execute(ctx, opts = { rowsOnly: false }) {
|
|
139
139
|
const db = getAppDB()
|
|
140
140
|
|
|
141
141
|
const query = await db.get(ctx.params.queryId)
|
|
@@ -153,19 +153,16 @@ async function execute(ctx: any, opts = { rowsOnly: false }) {
|
|
|
153
153
|
|
|
154
154
|
// call the relevant CRUD method on the integration class
|
|
155
155
|
try {
|
|
156
|
-
const
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
})
|
|
167
|
-
|
|
168
|
-
const { rows, pagination, extra } = await quotas.addQuery(runFn)
|
|
156
|
+
const { rows, pagination, extra } = await Runner.run({
|
|
157
|
+
appId: ctx.appId,
|
|
158
|
+
datasource,
|
|
159
|
+
queryVerb: query.queryVerb,
|
|
160
|
+
fields: query.fields,
|
|
161
|
+
pagination: ctx.request.body.pagination,
|
|
162
|
+
parameters: enrichedParameters,
|
|
163
|
+
transformer: query.transformer,
|
|
164
|
+
queryId: ctx.params.queryId,
|
|
165
|
+
})
|
|
169
166
|
if (opts && opts.rowsOnly) {
|
|
170
167
|
ctx.body = rows
|
|
171
168
|
} else {
|
|
@@ -176,15 +173,15 @@ async function execute(ctx: any, opts = { rowsOnly: false }) {
|
|
|
176
173
|
}
|
|
177
174
|
}
|
|
178
175
|
|
|
179
|
-
|
|
176
|
+
exports.executeV1 = async function (ctx) {
|
|
180
177
|
return execute(ctx, { rowsOnly: true })
|
|
181
178
|
}
|
|
182
179
|
|
|
183
|
-
|
|
180
|
+
exports.executeV2 = async function (ctx) {
|
|
184
181
|
return execute(ctx, { rowsOnly: false })
|
|
185
182
|
}
|
|
186
183
|
|
|
187
|
-
const removeDynamicVariables = async
|
|
184
|
+
const removeDynamicVariables = async queryId => {
|
|
188
185
|
const db = getAppDB()
|
|
189
186
|
const query = await db.get(queryId)
|
|
190
187
|
const datasource = await db.get(query.datasourceId)
|
|
@@ -193,19 +190,19 @@ const removeDynamicVariables = async (queryId: any) => {
|
|
|
193
190
|
if (dynamicVariables) {
|
|
194
191
|
// delete dynamic variables from the datasource
|
|
195
192
|
datasource.config.dynamicVariables = dynamicVariables.filter(
|
|
196
|
-
|
|
193
|
+
dv => dv.queryId !== queryId
|
|
197
194
|
)
|
|
198
195
|
await db.put(datasource)
|
|
199
196
|
|
|
200
197
|
// invalidate the deleted variables
|
|
201
198
|
const variablesToDelete = dynamicVariables.filter(
|
|
202
|
-
|
|
199
|
+
dv => dv.queryId === queryId
|
|
203
200
|
)
|
|
204
201
|
await invalidateDynamicVariables(variablesToDelete)
|
|
205
202
|
}
|
|
206
203
|
}
|
|
207
204
|
|
|
208
|
-
|
|
205
|
+
exports.destroy = async function (ctx) {
|
|
209
206
|
const db = getAppDB()
|
|
210
207
|
await removeDynamicVariables(ctx.params.queryId)
|
|
211
208
|
await db.remove(ctx.params.queryId, ctx.params.revId)
|
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import { isExternalTable } from "../../../integrations/utils"
|
|
1
|
+
const internal = require("./internal")
|
|
2
|
+
const external = require("./external")
|
|
3
|
+
const { isExternalTable } = require("../../../integrations/utils")
|
|
5
4
|
|
|
6
|
-
function pickApi(tableId
|
|
5
|
+
function pickApi(tableId) {
|
|
7
6
|
if (isExternalTable(tableId)) {
|
|
8
7
|
return external
|
|
9
8
|
}
|
|
10
9
|
return internal
|
|
11
10
|
}
|
|
12
11
|
|
|
13
|
-
function getTableId(ctx
|
|
12
|
+
function getTableId(ctx) {
|
|
14
13
|
if (ctx.request.body && ctx.request.body.tableId) {
|
|
15
14
|
return ctx.request.body.tableId
|
|
16
15
|
}
|
|
@@ -22,13 +21,13 @@ function getTableId(ctx: any) {
|
|
|
22
21
|
}
|
|
23
22
|
}
|
|
24
23
|
|
|
25
|
-
|
|
24
|
+
exports.patch = async ctx => {
|
|
26
25
|
const appId = ctx.appId
|
|
27
26
|
const tableId = getTableId(ctx)
|
|
28
27
|
const body = ctx.request.body
|
|
29
28
|
// if it doesn't have an _id then its save
|
|
30
29
|
if (body && !body._id) {
|
|
31
|
-
return save(ctx)
|
|
30
|
+
return exports.save(ctx)
|
|
32
31
|
}
|
|
33
32
|
try {
|
|
34
33
|
const { row, table } = await pickApi(tableId).patch(ctx)
|
|
@@ -42,13 +41,13 @@ export async function patch(ctx: any): Promise<any> {
|
|
|
42
41
|
}
|
|
43
42
|
}
|
|
44
43
|
|
|
45
|
-
|
|
44
|
+
exports.save = async function (ctx) {
|
|
46
45
|
const appId = ctx.appId
|
|
47
46
|
const tableId = getTableId(ctx)
|
|
48
47
|
const body = ctx.request.body
|
|
49
48
|
// if it has an ID already then its a patch
|
|
50
49
|
if (body && body._id) {
|
|
51
|
-
return patch(ctx)
|
|
50
|
+
return exports.patch(ctx)
|
|
52
51
|
}
|
|
53
52
|
try {
|
|
54
53
|
const { row, table } = await pickApi(tableId).save(ctx)
|
|
@@ -61,11 +60,7 @@ const saveRow = async (ctx: any) => {
|
|
|
61
60
|
}
|
|
62
61
|
}
|
|
63
62
|
|
|
64
|
-
|
|
65
|
-
await quotas.addRow(() => saveRow(ctx))
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
export async function fetchView(ctx: any) {
|
|
63
|
+
exports.fetchView = async function (ctx) {
|
|
69
64
|
const tableId = getTableId(ctx)
|
|
70
65
|
try {
|
|
71
66
|
ctx.body = await pickApi(tableId).fetchView(ctx)
|
|
@@ -74,7 +69,7 @@ export async function fetchView(ctx: any) {
|
|
|
74
69
|
}
|
|
75
70
|
}
|
|
76
71
|
|
|
77
|
-
|
|
72
|
+
exports.fetch = async function (ctx) {
|
|
78
73
|
const tableId = getTableId(ctx)
|
|
79
74
|
try {
|
|
80
75
|
ctx.body = await pickApi(tableId).fetch(ctx)
|
|
@@ -83,7 +78,7 @@ export async function fetch(ctx: any) {
|
|
|
83
78
|
}
|
|
84
79
|
}
|
|
85
80
|
|
|
86
|
-
|
|
81
|
+
exports.find = async function (ctx) {
|
|
87
82
|
const tableId = getTableId(ctx)
|
|
88
83
|
try {
|
|
89
84
|
ctx.body = await pickApi(tableId).find(ctx)
|
|
@@ -92,21 +87,19 @@ export async function find(ctx: any) {
|
|
|
92
87
|
}
|
|
93
88
|
}
|
|
94
89
|
|
|
95
|
-
|
|
90
|
+
exports.destroy = async function (ctx) {
|
|
96
91
|
const appId = ctx.appId
|
|
97
92
|
const inputs = ctx.request.body
|
|
98
93
|
const tableId = getTableId(ctx)
|
|
99
94
|
let response, row
|
|
100
95
|
if (inputs.rows) {
|
|
101
96
|
let { rows } = await pickApi(tableId).bulkDestroy(ctx)
|
|
102
|
-
await quotas.removeRows(rows.length)
|
|
103
97
|
response = rows
|
|
104
98
|
for (let row of rows) {
|
|
105
99
|
ctx.eventEmitter && ctx.eventEmitter.emitRow(`row:delete`, appId, row)
|
|
106
100
|
}
|
|
107
101
|
} else {
|
|
108
102
|
let resp = await pickApi(tableId).destroy(ctx)
|
|
109
|
-
await quotas.removeRow()
|
|
110
103
|
response = resp.response
|
|
111
104
|
row = resp.row
|
|
112
105
|
ctx.eventEmitter && ctx.eventEmitter.emitRow(`row:delete`, appId, row)
|
|
@@ -117,7 +110,7 @@ export async function destroy(ctx: any) {
|
|
|
117
110
|
ctx.body = response
|
|
118
111
|
}
|
|
119
112
|
|
|
120
|
-
|
|
113
|
+
exports.search = async ctx => {
|
|
121
114
|
const tableId = getTableId(ctx)
|
|
122
115
|
try {
|
|
123
116
|
ctx.status = 200
|
|
@@ -127,7 +120,7 @@ export async function search(ctx: any) {
|
|
|
127
120
|
}
|
|
128
121
|
}
|
|
129
122
|
|
|
130
|
-
|
|
123
|
+
exports.validate = async function (ctx) {
|
|
131
124
|
const tableId = getTableId(ctx)
|
|
132
125
|
try {
|
|
133
126
|
ctx.body = await pickApi(tableId).validate(ctx)
|
|
@@ -136,7 +129,7 @@ export async function validate(ctx: any) {
|
|
|
136
129
|
}
|
|
137
130
|
}
|
|
138
131
|
|
|
139
|
-
|
|
132
|
+
exports.fetchEnrichedRow = async function (ctx) {
|
|
140
133
|
const tableId = getTableId(ctx)
|
|
141
134
|
try {
|
|
142
135
|
ctx.body = await pickApi(tableId).fetchEnrichedRow(ctx)
|
|
@@ -145,7 +138,7 @@ export async function fetchEnrichedRow(ctx: any) {
|
|
|
145
138
|
}
|
|
146
139
|
}
|
|
147
140
|
|
|
148
|
-
export
|
|
141
|
+
exports.export = async function (ctx) {
|
|
149
142
|
const tableId = getTableId(ctx)
|
|
150
143
|
try {
|
|
151
144
|
ctx.body = await pickApi(tableId).exportRows(ctx)
|
|
@@ -260,9 +260,8 @@ exports.find = async ctx => {
|
|
|
260
260
|
|
|
261
261
|
exports.destroy = async function (ctx) {
|
|
262
262
|
const db = getAppDB()
|
|
263
|
-
const { _id } = ctx.request.body
|
|
263
|
+
const { _id, _rev } = ctx.request.body
|
|
264
264
|
let row = await db.get(_id)
|
|
265
|
-
let _rev = ctx.request.body._rev || row._rev
|
|
266
265
|
|
|
267
266
|
if (row.tableId !== ctx.params.tableId) {
|
|
268
267
|
throw "Supplied tableId doesn't match the row's tableId"
|
|
@@ -65,10 +65,7 @@ exports.validate = async ({ tableId, row, table }) => {
|
|
|
65
65
|
if (type === FieldTypes.ARRAY && row[fieldName]) {
|
|
66
66
|
if (row[fieldName].length) {
|
|
67
67
|
row[fieldName].map(val => {
|
|
68
|
-
if (
|
|
69
|
-
!constraints.inclusion.includes(val) &&
|
|
70
|
-
constraints.inclusion.length !== 0
|
|
71
|
-
) {
|
|
68
|
+
if (!constraints.inclusion.includes(val)) {
|
|
72
69
|
errors[fieldName] = "Field not in list"
|
|
73
70
|
}
|
|
74
71
|
})
|
|
@@ -25,7 +25,7 @@ function getFormulaThatUseColumn(table, columnNames) {
|
|
|
25
25
|
if (!isStaticFormula(column)) {
|
|
26
26
|
continue
|
|
27
27
|
}
|
|
28
|
-
if (!doesContainStrings(column
|
|
28
|
+
if (!doesContainStrings(column.formula, columnNames)) {
|
|
29
29
|
continue
|
|
30
30
|
}
|
|
31
31
|
formula.push(column.name)
|