@budibase/server 1.0.49-alpha.3 → 1.0.49-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/__mocks__/arangojs.ts +1 -1
- package/__mocks__/aws-sdk.ts +4 -4
- package/__mocks__/mongodb.ts +4 -5
- package/__mocks__/mssql.ts +3 -3
- package/__mocks__/node-fetch.ts +2 -1
- package/__mocks__/pg.ts +3 -5
- package/builder/assets/{index.21e57eb4.js → index.b7cd931c.js} +1 -1
- package/builder/index.html +1 -1
- package/coverage/clover.xml +1917 -1929
- package/coverage/coverage-final.json +54 -54
- package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
- package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/controllers/application.js.html +58 -37
- package/coverage/lcov-report/api/controllers/auth.js.html +11 -14
- package/coverage/lcov-report/api/controllers/automation.js.html +21 -51
- package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
- package/coverage/lcov-report/api/controllers/cloud.js.html +8 -11
- package/coverage/lcov-report/api/controllers/component.js.html +10 -13
- package/coverage/lcov-report/api/controllers/datasource.js.html +17 -23
- package/coverage/lcov-report/api/controllers/dev.js.html +6 -6
- package/coverage/lcov-report/api/controllers/index.html +52 -52
- package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
- package/coverage/lcov-report/api/controllers/layout.js.html +4 -4
- package/coverage/lcov-report/api/controllers/metadata.js.html +6 -21
- package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
- package/coverage/lcov-report/api/controllers/permission.js.html +6 -6
- package/coverage/lcov-report/api/controllers/query/index.html +10 -10
- package/coverage/lcov-report/api/controllers/query/index.js.html +21 -18
- package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
- package/coverage/lcov-report/api/controllers/role.js.html +9 -9
- package/coverage/lcov-report/api/controllers/routing.js.html +7 -10
- package/coverage/lcov-report/api/controllers/row/external.js.html +6 -12
- package/coverage/lcov-report/api/controllers/row/index.html +22 -22
- package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/internal.js.html +37 -82
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +19 -25
- package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +14 -17
- package/coverage/lcov-report/api/controllers/row/utils.js.html +15 -12
- package/coverage/lcov-report/api/controllers/screen.js.html +10 -16
- package/coverage/lcov-report/api/controllers/script.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +20 -50
- package/coverage/lcov-report/api/controllers/table/external.js.html +15 -24
- package/coverage/lcov-report/api/controllers/table/index.html +37 -37
- package/coverage/lcov-report/api/controllers/table/index.js.html +7 -7
- package/coverage/lcov-report/api/controllers/table/internal.js.html +36 -45
- package/coverage/lcov-report/api/controllers/table/utils.js.html +40 -76
- package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
- package/coverage/lcov-report/api/controllers/user.js.html +26 -35
- package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/index.html +16 -16
- package/coverage/lcov-report/api/controllers/view/index.js.html +15 -21
- package/coverage/lcov-report/api/controllers/view/utils.js.html +25 -10
- package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
- package/coverage/lcov-report/api/controllers/webhook.js.html +21 -15
- package/coverage/lcov-report/api/index.html +1 -1
- package/coverage/lcov-report/api/index.js.html +1 -1
- package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
- package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/routes/application.js.html +1 -1
- package/coverage/lcov-report/api/routes/auth.js.html +1 -1
- package/coverage/lcov-report/api/routes/automation.js.html +1 -1
- package/coverage/lcov-report/api/routes/backup.js.html +1 -1
- package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
- package/coverage/lcov-report/api/routes/component.js.html +1 -1
- package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
- package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
- package/coverage/lcov-report/api/routes/dev.js.html +1 -1
- package/coverage/lcov-report/api/routes/index.html +1 -1
- package/coverage/lcov-report/api/routes/index.js.html +1 -1
- package/coverage/lcov-report/api/routes/integration.js.html +1 -1
- package/coverage/lcov-report/api/routes/layout.js.html +1 -1
- package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
- package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
- package/coverage/lcov-report/api/routes/permission.js.html +1 -1
- package/coverage/lcov-report/api/routes/query.js.html +1 -1
- package/coverage/lcov-report/api/routes/role.js.html +1 -1
- package/coverage/lcov-report/api/routes/routing.js.html +1 -1
- package/coverage/lcov-report/api/routes/row.js.html +1 -1
- package/coverage/lcov-report/api/routes/screen.js.html +1 -1
- package/coverage/lcov-report/api/routes/script.js.html +1 -1
- package/coverage/lcov-report/api/routes/static.js.html +1 -1
- package/coverage/lcov-report/api/routes/table.js.html +1 -1
- package/coverage/lcov-report/api/routes/templates.js.html +1 -1
- package/coverage/lcov-report/api/routes/user.js.html +1 -1
- package/coverage/lcov-report/api/routes/view.js.html +1 -1
- package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/actions.js.html +1 -1
- package/coverage/lcov-report/automations/automationUtils.js.html +4 -7
- package/coverage/lcov-report/automations/bullboard.js.html +1 -1
- package/coverage/lcov-report/automations/index.html +18 -18
- package/coverage/lcov-report/automations/index.js.html +1 -1
- package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
- package/coverage/lcov-report/automations/steps/createRow.js.html +2 -5
- package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
- package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
- package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
- package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
- package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
- package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
- package/coverage/lcov-report/automations/steps/index.html +1 -1
- package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
- package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
- package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
- package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
- package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
- package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
- package/coverage/lcov-report/automations/steps/updateRow.js.html +2 -2
- package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
- package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/triggers.js.html +46 -40
- package/coverage/lcov-report/automations/utils.js.html +24 -12
- package/coverage/lcov-report/constants/index.html +1 -1
- package/coverage/lcov-report/constants/index.js.html +1 -1
- package/coverage/lcov-report/constants/layouts.js.html +1 -1
- package/coverage/lcov-report/constants/screens.js.html +1 -1
- package/coverage/lcov-report/db/client.js.html +18 -18
- package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
- package/coverage/lcov-report/db/index.html +1 -1
- package/coverage/lcov-report/db/index.js.html +3 -3
- package/coverage/lcov-report/db/linkedRows/LinkController.js.html +11 -23
- package/coverage/lcov-report/db/linkedRows/index.html +27 -27
- package/coverage/lcov-report/db/linkedRows/index.js.html +24 -66
- package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +28 -28
- package/coverage/lcov-report/db/newid.js.html +1 -1
- package/coverage/lcov-report/db/utils.js.html +5 -5
- package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
- package/coverage/lcov-report/events/index.html +1 -1
- package/coverage/lcov-report/events/index.js.html +1 -1
- package/coverage/lcov-report/events/utils.js.html +1 -1
- package/coverage/lcov-report/index.html +88 -88
- package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
- package/coverage/lcov-report/integrations/tests/index.html +1 -1
- package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
- package/coverage/lcov-report/middleware/authorized.js.html +21 -15
- package/coverage/lcov-report/middleware/builder.js.html +3 -3
- package/coverage/lcov-report/middleware/currentapp.js.html +72 -60
- package/coverage/lcov-report/middleware/index.html +28 -28
- package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
- package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
- package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
- package/coverage/lcov-report/middleware/usageQuota.js.html +29 -29
- package/coverage/lcov-report/middleware/utils.js.html +2 -2
- package/coverage/lcov-report/threads/automation.js.html +30 -24
- package/coverage/lcov-report/threads/index.html +16 -16
- package/coverage/lcov-report/threads/index.js.html +1 -1
- package/coverage/lcov-report/threads/query.js.html +17 -17
- package/coverage/lcov-report/threads/utils.js.html +1 -1
- package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
- package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
- package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
- package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
- package/coverage/lcov-report/utilities/global.js.html +44 -35
- package/coverage/lcov-report/utilities/index.html +27 -27
- package/coverage/lcov-report/utilities/index.js.html +40 -70
- package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
- package/coverage/lcov-report/utilities/queue/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.js.html +7 -7
- package/coverage/lcov-report/utilities/rowProcessor/index.html +11 -11
- package/coverage/lcov-report/utilities/rowProcessor/index.js.html +16 -58
- package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
- package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
- package/coverage/lcov-report/utilities/security.js.html +1 -1
- package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/index.js.html +5 -2
- package/coverage/lcov-report/utilities/usageQuota/rows.js.html +5 -2
- package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
- package/coverage/lcov-report/utilities/users.js.html +5 -5
- package/coverage/lcov-report/utilities/workerRequests.js.html +5 -5
- package/coverage/lcov.info +3189 -3198
- package/dist/api/controllers/application.js +31 -28
- package/dist/api/controllers/auth.js +4 -5
- package/dist/api/controllers/automation.js +14 -19
- package/dist/api/controllers/cloud.js +2 -3
- package/dist/api/controllers/component.js +3 -4
- package/dist/api/controllers/datasource.js +9 -10
- package/dist/api/controllers/deploy/Deployment.js +3 -6
- package/dist/api/controllers/deploy/index.js +12 -13
- package/dist/api/controllers/dev.js +5 -5
- package/dist/api/controllers/layout.js +3 -3
- package/dist/api/controllers/metadata.js +4 -4
- package/dist/api/controllers/permission.js +4 -4
- package/dist/api/controllers/query/import/index.js +4 -6
- package/dist/api/controllers/query/index.js +11 -10
- package/dist/api/controllers/role.js +5 -5
- package/dist/api/controllers/routing.js +5 -6
- package/dist/api/controllers/row/ExternalRequest.js +76 -63
- package/dist/api/controllers/row/external.js +4 -4
- package/dist/api/controllers/row/internal.js +29 -44
- package/dist/api/controllers/row/internalSearch.js +11 -13
- package/dist/api/controllers/row/staticFormula.js +11 -11
- package/dist/api/controllers/row/utils.js +7 -6
- package/dist/api/controllers/screen.js +5 -7
- package/dist/api/controllers/static/index.js +4 -4
- package/dist/api/controllers/table/bulkFormula.js +14 -15
- package/dist/api/controllers/table/external.js +7 -10
- package/dist/api/controllers/table/index.js +5 -5
- package/dist/api/controllers/table/internal.js +16 -19
- package/dist/api/controllers/table/utils.js +29 -31
- package/dist/api/controllers/user.js +16 -20
- package/dist/api/controllers/view/index.js +8 -10
- package/dist/api/controllers/view/utils.js +9 -4
- package/dist/api/controllers/webhook.js +10 -8
- package/dist/api/routes/tests/utilities/TestFunctions.js +37 -17
- package/dist/automations/automationUtils.js +2 -3
- package/dist/automations/steps/createRow.js +1 -1
- package/dist/automations/steps/updateRow.js +1 -1
- package/dist/automations/triggers.js +27 -25
- package/dist/automations/utils.js +10 -5
- package/dist/db/linkedRows/LinkController.js +3 -7
- package/dist/db/linkedRows/index.js +16 -26
- package/dist/db/linkedRows/linkUtils.js +6 -6
- package/dist/db/views/staticViews.js +9 -10
- package/dist/environment.js +2 -1
- package/dist/integrations/utils.js +3 -0
- package/dist/middleware/authorized.js +5 -3
- package/dist/middleware/builder.js +2 -2
- package/dist/middleware/currentapp.js +41 -37
- package/dist/middleware/usageQuota.js +2 -2
- package/dist/migrations/functions/usageQuotas/syncApps.js +6 -9
- package/dist/migrations/functions/usageQuotas/syncRows.js +7 -9
- package/dist/package.json +4 -4
- package/dist/tests/utilities/TestConfiguration.js +67 -44
- package/dist/threads/automation.js +13 -11
- package/dist/threads/query.js +11 -11
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utilities/fileSystem/index.js +4 -3
- package/dist/utilities/global.js +15 -12
- package/dist/utilities/index.js +7 -17
- package/dist/utilities/routing/index.js +5 -5
- package/dist/utilities/rowProcessor/index.js +9 -10
- package/dist/utilities/usageQuota/index.js +1 -0
- package/dist/utilities/usageQuota/rows.js +1 -0
- package/dist/utilities/users.js +3 -3
- package/dist/utilities/workerRequests.js +4 -4
- package/package.json +5 -5
- package/scripts/likeCypress.ts +1 -1
- package/src/api/controllers/application.js +35 -28
- package/src/api/controllers/auth.js +4 -5
- package/src/api/controllers/automation.js +13 -23
- package/src/api/controllers/cloud.js +2 -3
- package/src/api/controllers/component.js +3 -4
- package/src/api/controllers/datasource.js +9 -11
- package/src/api/controllers/deploy/Deployment.js +3 -7
- package/src/api/controllers/deploy/index.js +20 -13
- package/src/api/controllers/dev.js +5 -5
- package/src/api/controllers/layout.js +3 -3
- package/src/api/controllers/metadata.js +4 -9
- package/src/api/controllers/permission.js +4 -4
- package/src/api/controllers/query/import/index.ts +4 -6
- package/src/api/controllers/query/import/tests/index.spec.js +2 -1
- package/src/api/controllers/query/index.js +11 -10
- package/src/api/controllers/role.js +5 -5
- package/src/api/controllers/routing.js +5 -6
- package/src/api/controllers/row/ExternalRequest.ts +53 -42
- package/src/api/controllers/row/external.js +4 -6
- package/src/api/controllers/row/internal.js +29 -44
- package/src/api/controllers/row/internalSearch.js +11 -13
- package/src/api/controllers/row/staticFormula.js +10 -11
- package/src/api/controllers/row/utils.js +7 -6
- package/src/api/controllers/screen.js +5 -7
- package/src/api/controllers/static/index.js +4 -4
- package/src/api/controllers/table/bulkFormula.js +13 -23
- package/src/api/controllers/table/external.js +7 -10
- package/src/api/controllers/table/index.js +5 -5
- package/src/api/controllers/table/internal.js +18 -21
- package/src/api/controllers/table/utils.js +29 -41
- package/src/api/controllers/user.js +17 -20
- package/src/api/controllers/view/index.js +8 -10
- package/src/api/controllers/view/utils.js +9 -4
- package/src/api/controllers/webhook.js +10 -8
- package/src/api/routes/tests/automation.spec.js +1 -0
- package/src/api/routes/tests/misc.spec.js +0 -1
- package/src/api/routes/tests/routing.spec.js +21 -12
- package/src/api/routes/tests/row.spec.js +7 -4
- package/src/api/routes/tests/utilities/TestFunctions.js +39 -17
- package/src/automations/automationUtils.js +2 -3
- package/src/automations/steps/createRow.js +0 -1
- package/src/automations/steps/updateRow.js +1 -1
- package/src/automations/triggers.js +33 -31
- package/src/automations/utils.js +9 -5
- package/src/db/linkedRows/LinkController.js +3 -7
- package/src/db/linkedRows/index.js +16 -30
- package/src/db/linkedRows/linkUtils.js +6 -6
- package/src/db/tests/linkController.spec.js +0 -1
- package/src/db/tests/linkTests.spec.js +5 -6
- package/src/db/views/staticViews.js +8 -10
- package/src/environment.js +2 -1
- package/src/integrations/utils.ts +4 -1
- package/src/middleware/authorized.js +5 -3
- package/src/middleware/builder.js +2 -2
- package/src/middleware/currentapp.js +50 -46
- package/src/middleware/tests/authorized.spec.js +7 -2
- package/src/middleware/tests/currentapp.spec.js +6 -0
- package/src/middleware/usageQuota.js +2 -2
- package/src/migrations/functions/usageQuotas/syncApps.ts +4 -4
- package/src/migrations/functions/usageQuotas/syncRows.ts +5 -4
- package/src/module.d.ts +3 -0
- package/src/tests/utilities/TestConfiguration.js +69 -50
- package/src/threads/automation.js +17 -15
- package/src/threads/query.js +12 -12
- package/src/utilities/fileSystem/index.js +4 -3
- package/src/utilities/global.js +15 -12
- package/src/utilities/index.js +7 -17
- package/src/utilities/routing/index.js +5 -5
- package/src/utilities/rowProcessor/index.js +9 -23
- package/src/utilities/usageQuota/index.js +1 -0
- package/src/utilities/usageQuota/rows.js +1 -0
- package/src/utilities/users.js +3 -3
- package/src/utilities/workerRequests.js +4 -4
- package/tsconfig.json +2 -1
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
const CouchDB = require("../../../db")
|
|
2
1
|
const { getRowParams } = require("../../../db/utils")
|
|
3
2
|
const {
|
|
4
3
|
outputProcessing,
|
|
@@ -8,6 +7,7 @@ const {
|
|
|
8
7
|
const { FieldTypes, FormulaTypes } = require("../../../constants")
|
|
9
8
|
const { isEqual } = require("lodash")
|
|
10
9
|
const { cloneDeep } = require("lodash/fp")
|
|
10
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* This function runs through a list of enriched rows, looks at the rows which
|
|
@@ -15,8 +15,8 @@ const { cloneDeep } = require("lodash/fp")
|
|
|
15
15
|
* updated.
|
|
16
16
|
* NOTE: this will only for affect static formulas.
|
|
17
17
|
*/
|
|
18
|
-
exports.updateRelatedFormula = async (
|
|
19
|
-
const db =
|
|
18
|
+
exports.updateRelatedFormula = async (table, enrichedRows) => {
|
|
19
|
+
const db = getAppDB()
|
|
20
20
|
// no formula to update, we're done
|
|
21
21
|
if (!table.relatedFormula) {
|
|
22
22
|
return
|
|
@@ -57,7 +57,7 @@ exports.updateRelatedFormula = async (appId, table, enrichedRows) => {
|
|
|
57
57
|
// re-enrich rows for all the related, don't update the related formula for them
|
|
58
58
|
promises = promises.concat(
|
|
59
59
|
relatedRows[tableId].map(related =>
|
|
60
|
-
exports.finaliseRow(
|
|
60
|
+
exports.finaliseRow(relatedTable, related, {
|
|
61
61
|
updateFormula: false,
|
|
62
62
|
})
|
|
63
63
|
)
|
|
@@ -69,8 +69,8 @@ exports.updateRelatedFormula = async (appId, table, enrichedRows) => {
|
|
|
69
69
|
await Promise.all(promises)
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
exports.updateAllFormulasInTable = async
|
|
73
|
-
const db =
|
|
72
|
+
exports.updateAllFormulasInTable = async table => {
|
|
73
|
+
const db = getAppDB()
|
|
74
74
|
// start by getting the raw rows (which will be written back to DB after update)
|
|
75
75
|
let rows = (
|
|
76
76
|
await db.allDocs(
|
|
@@ -81,7 +81,7 @@ exports.updateAllFormulasInTable = async (appId, table) => {
|
|
|
81
81
|
).rows.map(row => row.doc)
|
|
82
82
|
// now enrich the rows, note the clone so that we have the base state of the
|
|
83
83
|
// rows so that we don't write any of the enriched information back
|
|
84
|
-
let enrichedRows = await outputProcessing(
|
|
84
|
+
let enrichedRows = await outputProcessing(table, cloneDeep(rows), {
|
|
85
85
|
squash: false,
|
|
86
86
|
})
|
|
87
87
|
const updatedRows = []
|
|
@@ -109,15 +109,14 @@ exports.updateAllFormulasInTable = async (appId, table) => {
|
|
|
109
109
|
* expects the row to be totally enriched/contain all relationships.
|
|
110
110
|
*/
|
|
111
111
|
exports.finaliseRow = async (
|
|
112
|
-
appId,
|
|
113
112
|
table,
|
|
114
113
|
row,
|
|
115
114
|
{ oldTable, updateFormula } = { updateFormula: true }
|
|
116
115
|
) => {
|
|
117
|
-
const db =
|
|
116
|
+
const db = getAppDB()
|
|
118
117
|
row.type = "row"
|
|
119
118
|
// process the row before return, to include relationships
|
|
120
|
-
let enrichedRow = await outputProcessing(
|
|
119
|
+
let enrichedRow = await outputProcessing(table, cloneDeep(row), {
|
|
121
120
|
squash: false,
|
|
122
121
|
})
|
|
123
122
|
// use enriched row to generate formulas for saving, specifically only use as context
|
|
@@ -151,7 +150,7 @@ exports.finaliseRow = async (
|
|
|
151
150
|
enrichedRow = await processFormulas(table, enrichedRow, { dynamic: false })
|
|
152
151
|
// this updates the related formulas in other rows based on the relations to this row
|
|
153
152
|
if (updateFormula) {
|
|
154
|
-
await exports.updateRelatedFormula(
|
|
153
|
+
await exports.updateRelatedFormula(table, enrichedRow)
|
|
155
154
|
}
|
|
156
155
|
return { row: enrichedRow, table }
|
|
157
156
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
const validateJs = require("validate.js")
|
|
2
2
|
const { cloneDeep } = require("lodash/fp")
|
|
3
|
-
const CouchDB = require("../../../db")
|
|
4
3
|
const { InternalTables } = require("../../../db/utils")
|
|
5
4
|
const userController = require("../user")
|
|
6
5
|
const { FieldTypes } = require("../../../constants")
|
|
7
6
|
const { processStringSync } = require("@budibase/string-templates")
|
|
8
7
|
const { makeExternalQuery } = require("../../../integrations/base/utils")
|
|
8
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
9
9
|
|
|
10
10
|
validateJs.extend(validateJs.validators.datetime, {
|
|
11
11
|
parse: function (value) {
|
|
@@ -17,14 +17,15 @@ validateJs.extend(validateJs.validators.datetime, {
|
|
|
17
17
|
},
|
|
18
18
|
})
|
|
19
19
|
|
|
20
|
-
exports.getDatasourceAndQuery = async
|
|
20
|
+
exports.getDatasourceAndQuery = async json => {
|
|
21
21
|
const datasourceId = json.endpoint.datasourceId
|
|
22
|
-
const db =
|
|
22
|
+
const db = getAppDB()
|
|
23
23
|
const datasource = await db.get(datasourceId)
|
|
24
24
|
return makeExternalQuery(datasource, json)
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
exports.findRow = async (ctx,
|
|
27
|
+
exports.findRow = async (ctx, tableId, rowId) => {
|
|
28
|
+
const db = getAppDB()
|
|
28
29
|
let row
|
|
29
30
|
// TODO remove special user case in future
|
|
30
31
|
if (tableId === InternalTables.USER_METADATA) {
|
|
@@ -42,9 +43,9 @@ exports.findRow = async (ctx, db, tableId, rowId) => {
|
|
|
42
43
|
return row
|
|
43
44
|
}
|
|
44
45
|
|
|
45
|
-
exports.validate = async ({
|
|
46
|
+
exports.validate = async ({ tableId, row, table }) => {
|
|
46
47
|
if (!table) {
|
|
47
|
-
const db =
|
|
48
|
+
const db = getAppDB()
|
|
48
49
|
table = await db.get(tableId)
|
|
49
50
|
}
|
|
50
51
|
const errors = {}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
const CouchDB = require("../../db")
|
|
2
1
|
const { getScreenParams, generateScreenID } = require("../../db/utils")
|
|
3
2
|
const { AccessController } = require("@budibase/backend-core/roles")
|
|
3
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
4
4
|
|
|
5
5
|
exports.fetch = async ctx => {
|
|
6
|
-
const
|
|
7
|
-
const db = new CouchDB(appId)
|
|
6
|
+
const db = getAppDB()
|
|
8
7
|
|
|
9
8
|
const screens = (
|
|
10
9
|
await db.allDocs(
|
|
@@ -14,15 +13,14 @@ exports.fetch = async ctx => {
|
|
|
14
13
|
)
|
|
15
14
|
).rows.map(element => element.doc)
|
|
16
15
|
|
|
17
|
-
ctx.body = await new AccessController(
|
|
16
|
+
ctx.body = await new AccessController().checkScreensAccess(
|
|
18
17
|
screens,
|
|
19
18
|
ctx.user.role._id
|
|
20
19
|
)
|
|
21
20
|
}
|
|
22
21
|
|
|
23
22
|
exports.save = async ctx => {
|
|
24
|
-
const
|
|
25
|
-
const db = new CouchDB(appId)
|
|
23
|
+
const db = getAppDB()
|
|
26
24
|
let screen = ctx.request.body
|
|
27
25
|
|
|
28
26
|
if (!screen._id) {
|
|
@@ -39,7 +37,7 @@ exports.save = async ctx => {
|
|
|
39
37
|
}
|
|
40
38
|
|
|
41
39
|
exports.destroy = async ctx => {
|
|
42
|
-
const db =
|
|
40
|
+
const db = getAppDB()
|
|
43
41
|
await db.remove(ctx.params.screenId, ctx.params.screenRev)
|
|
44
42
|
ctx.body = {
|
|
45
43
|
message: "Screen deleted successfully",
|
|
@@ -6,7 +6,6 @@ const uuid = require("uuid")
|
|
|
6
6
|
const { ObjectStoreBuckets } = require("../../../constants")
|
|
7
7
|
const { processString } = require("@budibase/string-templates")
|
|
8
8
|
const { getAllApps } = require("@budibase/backend-core/db")
|
|
9
|
-
const CouchDB = require("../../../db")
|
|
10
9
|
const {
|
|
11
10
|
loadHandlebarsFile,
|
|
12
11
|
NODE_MODULES_PATH,
|
|
@@ -17,6 +16,7 @@ const { clientLibraryPath } = require("../../../utilities")
|
|
|
17
16
|
const { upload } = require("../../../utilities/fileSystem")
|
|
18
17
|
const { attachmentsRelativeURL } = require("../../../utilities")
|
|
19
18
|
const { DocumentTypes } = require("../../../db/utils")
|
|
19
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
20
20
|
const AWS = require("aws-sdk")
|
|
21
21
|
const AWS_REGION = env.AWS_REGION ? env.AWS_REGION : "eu-west-1"
|
|
22
22
|
|
|
@@ -44,7 +44,7 @@ async function getAppIdFromUrl(ctx) {
|
|
|
44
44
|
let possibleAppUrl = `/${encodeURI(ctx.params.appId).toLowerCase()}`
|
|
45
45
|
|
|
46
46
|
// search prod apps for a url that matches, exclude dev where id is always used
|
|
47
|
-
const apps = await getAllApps(
|
|
47
|
+
const apps = await getAllApps({ dev: false })
|
|
48
48
|
const app = apps.filter(
|
|
49
49
|
a => a.url && a.url.toLowerCase() === possibleAppUrl
|
|
50
50
|
)[0]
|
|
@@ -85,7 +85,7 @@ exports.uploadFile = async function (ctx) {
|
|
|
85
85
|
exports.serveApp = async function (ctx) {
|
|
86
86
|
let appId = await getAppIdFromUrl(ctx)
|
|
87
87
|
const App = require("./templates/BudibaseApp.svelte").default
|
|
88
|
-
const db =
|
|
88
|
+
const db = getAppDB({ skip_setup: true })
|
|
89
89
|
const appInfo = await db.get(DocumentTypes.APP_METADATA)
|
|
90
90
|
|
|
91
91
|
const { head, html, css } = App.render({
|
|
@@ -111,7 +111,7 @@ exports.serveClientLibrary = async function (ctx) {
|
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
exports.getSignedUploadURL = async function (ctx) {
|
|
114
|
-
const database =
|
|
114
|
+
const database = getAppDB()
|
|
115
115
|
|
|
116
116
|
// Ensure datasource is valid
|
|
117
117
|
let datasource
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
const CouchDB = require("../../../db")
|
|
2
1
|
const { FieldTypes, FormulaTypes } = require("../../../constants")
|
|
3
2
|
const { getAllInternalTables, clearColumns } = require("./utils")
|
|
4
3
|
const { doesContainStrings } = require("@budibase/string-templates")
|
|
5
4
|
const { cloneDeep } = require("lodash/fp")
|
|
6
5
|
const { isEqual, uniq } = require("lodash")
|
|
7
6
|
const { updateAllFormulasInTable } = require("../row/staticFormula")
|
|
7
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
8
8
|
|
|
9
9
|
function isStaticFormula(column) {
|
|
10
10
|
return (
|
|
@@ -37,14 +37,9 @@ function getFormulaThatUseColumn(table, columnNames) {
|
|
|
37
37
|
* This functions checks for when a related table, column or related column is deleted, if any
|
|
38
38
|
* tables need to have the formula column removed.
|
|
39
39
|
*/
|
|
40
|
-
async function checkIfFormulaNeedsCleared(
|
|
41
|
-
appId,
|
|
42
|
-
table,
|
|
43
|
-
{ oldTable, deletion }
|
|
44
|
-
) {
|
|
45
|
-
const db = new CouchDB(appId)
|
|
40
|
+
async function checkIfFormulaNeedsCleared(table, { oldTable, deletion }) {
|
|
46
41
|
// start by retrieving all tables, remove the current table from the list
|
|
47
|
-
const tables = (await getAllInternalTables(
|
|
42
|
+
const tables = (await getAllInternalTables()).filter(
|
|
48
43
|
tbl => tbl._id !== table._id
|
|
49
44
|
)
|
|
50
45
|
const schemaToUse = oldTable ? oldTable.schema : table.schema
|
|
@@ -60,7 +55,7 @@ async function checkIfFormulaNeedsCleared(
|
|
|
60
55
|
}
|
|
61
56
|
const columnsToDelete = getFormulaThatUseColumn(tableToUse, removed.name)
|
|
62
57
|
if (columnsToDelete.length > 0) {
|
|
63
|
-
await clearColumns(
|
|
58
|
+
await clearColumns(table, columnsToDelete)
|
|
64
59
|
}
|
|
65
60
|
// need a special case, where a column has been removed from this table, but was used
|
|
66
61
|
// in a different, related tables formula
|
|
@@ -85,7 +80,7 @@ async function checkIfFormulaNeedsCleared(
|
|
|
85
80
|
)
|
|
86
81
|
}
|
|
87
82
|
if (relatedFormulaToRemove.length > 0) {
|
|
88
|
-
await clearColumns(
|
|
83
|
+
await clearColumns(relatedTable, uniq(relatedFormulaToRemove))
|
|
89
84
|
}
|
|
90
85
|
}
|
|
91
86
|
}
|
|
@@ -99,13 +94,12 @@ async function checkIfFormulaNeedsCleared(
|
|
|
99
94
|
* specifically only for static formula.
|
|
100
95
|
*/
|
|
101
96
|
async function updateRelatedFormulaLinksOnTables(
|
|
102
|
-
appId,
|
|
103
97
|
table,
|
|
104
98
|
{ deletion } = { deletion: false }
|
|
105
99
|
) {
|
|
106
|
-
const db =
|
|
100
|
+
const db = getAppDB()
|
|
107
101
|
// start by retrieving all tables, remove the current table from the list
|
|
108
|
-
const tables = (await getAllInternalTables(
|
|
102
|
+
const tables = (await getAllInternalTables()).filter(
|
|
109
103
|
tbl => tbl._id !== table._id
|
|
110
104
|
)
|
|
111
105
|
// clone the tables, so we can compare at end
|
|
@@ -155,7 +149,7 @@ async function updateRelatedFormulaLinksOnTables(
|
|
|
155
149
|
}
|
|
156
150
|
}
|
|
157
151
|
|
|
158
|
-
async function checkIfFormulaUpdated(
|
|
152
|
+
async function checkIfFormulaUpdated(table, { oldTable }) {
|
|
159
153
|
// look to see if any formula values have changed
|
|
160
154
|
const shouldUpdate = Object.values(table.schema).find(
|
|
161
155
|
column =>
|
|
@@ -166,18 +160,14 @@ async function checkIfFormulaUpdated(appId, table, { oldTable }) {
|
|
|
166
160
|
)
|
|
167
161
|
// if a static formula column has updated, then need to run the update
|
|
168
162
|
if (shouldUpdate != null) {
|
|
169
|
-
await updateAllFormulasInTable(
|
|
163
|
+
await updateAllFormulasInTable(table)
|
|
170
164
|
}
|
|
171
165
|
}
|
|
172
166
|
|
|
173
|
-
exports.runStaticFormulaChecks = async (
|
|
174
|
-
|
|
175
|
-
table,
|
|
176
|
-
{ oldTable, deletion }
|
|
177
|
-
) => {
|
|
178
|
-
await updateRelatedFormulaLinksOnTables(appId, table, { deletion })
|
|
179
|
-
await checkIfFormulaNeedsCleared(appId, table, { oldTable, deletion })
|
|
167
|
+
exports.runStaticFormulaChecks = async (table, { oldTable, deletion }) => {
|
|
168
|
+
await updateRelatedFormulaLinksOnTables(table, { deletion })
|
|
169
|
+
await checkIfFormulaNeedsCleared(table, { oldTable, deletion })
|
|
180
170
|
if (!deletion) {
|
|
181
|
-
await checkIfFormulaUpdated(
|
|
171
|
+
await checkIfFormulaUpdated(table, { oldTable })
|
|
182
172
|
}
|
|
183
173
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
const CouchDB = require("../../../db")
|
|
2
1
|
const {
|
|
3
2
|
buildExternalTableId,
|
|
4
3
|
breakExternalTableId,
|
|
@@ -19,6 +18,7 @@ const { makeExternalQuery } = require("../../../integrations/base/utils")
|
|
|
19
18
|
const { cloneDeep } = require("lodash/fp")
|
|
20
19
|
const csvParser = require("../../../utilities/csvParser")
|
|
21
20
|
const { handleRequest } = require("../row/external")
|
|
21
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
22
22
|
|
|
23
23
|
async function makeTableRequest(
|
|
24
24
|
datasource,
|
|
@@ -159,7 +159,6 @@ function isRelationshipSetup(column) {
|
|
|
159
159
|
}
|
|
160
160
|
|
|
161
161
|
exports.save = async function (ctx) {
|
|
162
|
-
const appId = ctx.appId
|
|
163
162
|
const table = ctx.request.body
|
|
164
163
|
// can't do this right now
|
|
165
164
|
delete table.dataImport
|
|
@@ -176,14 +175,14 @@ exports.save = async function (ctx) {
|
|
|
176
175
|
|
|
177
176
|
let oldTable
|
|
178
177
|
if (ctx.request.body && ctx.request.body._id) {
|
|
179
|
-
oldTable = await getTable(
|
|
178
|
+
oldTable = await getTable(ctx.request.body._id)
|
|
180
179
|
}
|
|
181
180
|
|
|
182
181
|
if (hasTypeChanged(tableToSave, oldTable)) {
|
|
183
182
|
ctx.throw(400, "A column type has changed.")
|
|
184
183
|
}
|
|
185
184
|
|
|
186
|
-
const db =
|
|
185
|
+
const db = getAppDB()
|
|
187
186
|
const datasource = await db.get(datasourceId)
|
|
188
187
|
const oldTables = cloneDeep(datasource.entities)
|
|
189
188
|
const tables = datasource.entities
|
|
@@ -267,14 +266,13 @@ exports.save = async function (ctx) {
|
|
|
267
266
|
}
|
|
268
267
|
|
|
269
268
|
exports.destroy = async function (ctx) {
|
|
270
|
-
const
|
|
271
|
-
const tableToDelete = await getTable(appId, ctx.params.tableId)
|
|
269
|
+
const tableToDelete = await getTable(ctx.params.tableId)
|
|
272
270
|
if (!tableToDelete || !tableToDelete.created) {
|
|
273
271
|
ctx.throw(400, "Cannot delete tables which weren't created in Budibase.")
|
|
274
272
|
}
|
|
275
273
|
const datasourceId = getDatasourceId(tableToDelete)
|
|
276
274
|
|
|
277
|
-
const db =
|
|
275
|
+
const db = getAppDB()
|
|
278
276
|
const datasource = await db.get(datasourceId)
|
|
279
277
|
const tables = datasource.entities
|
|
280
278
|
|
|
@@ -290,8 +288,7 @@ exports.destroy = async function (ctx) {
|
|
|
290
288
|
}
|
|
291
289
|
|
|
292
290
|
exports.bulkImport = async function (ctx) {
|
|
293
|
-
const
|
|
294
|
-
const table = await getTable(appId, ctx.params.tableId)
|
|
291
|
+
const table = await getTable(ctx.params.tableId)
|
|
295
292
|
const { dataImport } = ctx.request.body
|
|
296
293
|
if (!dataImport || !dataImport.schema || !dataImport.csvString) {
|
|
297
294
|
ctx.throw(400, "Provided data import information is invalid.")
|
|
@@ -300,7 +297,7 @@ exports.bulkImport = async function (ctx) {
|
|
|
300
297
|
...dataImport,
|
|
301
298
|
existingTable: table,
|
|
302
299
|
})
|
|
303
|
-
await handleRequest(
|
|
300
|
+
await handleRequest(DataSourceOperation.BULK_CREATE, table._id, {
|
|
304
301
|
rows,
|
|
305
302
|
})
|
|
306
303
|
return table
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
const CouchDB = require("../../../db")
|
|
2
1
|
const internal = require("./internal")
|
|
3
2
|
const external = require("./external")
|
|
4
3
|
const csvParser = require("../../../utilities/csvParser")
|
|
5
4
|
const { isExternalTable, isSQL } = require("../../../integrations/utils")
|
|
6
5
|
const { getDatasourceParams } = require("../../../db/utils")
|
|
6
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
7
7
|
const { getTable, getAllInternalTables } = require("./utils")
|
|
8
8
|
|
|
9
9
|
function pickApi({ tableId, table }) {
|
|
@@ -20,9 +20,9 @@ function pickApi({ tableId, table }) {
|
|
|
20
20
|
|
|
21
21
|
// covers both internal and external
|
|
22
22
|
exports.fetch = async function (ctx) {
|
|
23
|
-
const db =
|
|
23
|
+
const db = getAppDB()
|
|
24
24
|
|
|
25
|
-
const internal = await getAllInternalTables(
|
|
25
|
+
const internal = await getAllInternalTables()
|
|
26
26
|
|
|
27
27
|
const externalTables = await db.allDocs(
|
|
28
28
|
getDatasourceParams("plus", {
|
|
@@ -49,7 +49,7 @@ exports.fetch = async function (ctx) {
|
|
|
49
49
|
|
|
50
50
|
exports.find = async function (ctx) {
|
|
51
51
|
const tableId = ctx.params.id
|
|
52
|
-
ctx.body = await getTable(
|
|
52
|
+
ctx.body = await getTable(tableId)
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
exports.save = async function (ctx) {
|
|
@@ -88,7 +88,7 @@ exports.validateCSVSchema = async function (ctx) {
|
|
|
88
88
|
const { csvString, schema = {}, tableId } = ctx.request.body
|
|
89
89
|
let existingTable
|
|
90
90
|
if (tableId) {
|
|
91
|
-
existingTable = await getTable(
|
|
91
|
+
existingTable = await getTable(tableId)
|
|
92
92
|
}
|
|
93
93
|
let result = await csvParser.parse(csvString, schema)
|
|
94
94
|
if (existingTable) {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
const CouchDB = require("../../../db")
|
|
2
1
|
const linkRows = require("../../../db/linkedRows")
|
|
3
2
|
const { getRowParams, generateTableID } = require("../../../db/utils")
|
|
4
3
|
const { FieldTypes } = require("../../../constants")
|
|
@@ -9,12 +8,13 @@ const {
|
|
|
9
8
|
handleDataImport,
|
|
10
9
|
} = require("./utils")
|
|
11
10
|
const usageQuota = require("../../../utilities/usageQuota")
|
|
11
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
12
|
+
const env = require("../../../environment")
|
|
12
13
|
const { cleanupAttachments } = require("../../../utilities/rowProcessor")
|
|
13
14
|
const { runStaticFormulaChecks } = require("./bulkFormula")
|
|
14
15
|
|
|
15
16
|
exports.save = async function (ctx) {
|
|
16
|
-
const
|
|
17
|
-
const db = new CouchDB(appId)
|
|
17
|
+
const db = getAppDB()
|
|
18
18
|
const { dataImport, ...rest } = ctx.request.body
|
|
19
19
|
let tableToSave = {
|
|
20
20
|
type: "table",
|
|
@@ -36,8 +36,7 @@ exports.save = async function (ctx) {
|
|
|
36
36
|
// saving a table is a complex operation, involving many different steps, this
|
|
37
37
|
// has been broken out into a utility to make it more obvious/easier to manipulate
|
|
38
38
|
const tableSaveFunctions = new TableSaveFunctions({
|
|
39
|
-
|
|
40
|
-
ctx,
|
|
39
|
+
user: ctx.user,
|
|
41
40
|
oldTable,
|
|
42
41
|
dataImport,
|
|
43
42
|
})
|
|
@@ -82,7 +81,6 @@ exports.save = async function (ctx) {
|
|
|
82
81
|
// update linked rows
|
|
83
82
|
try {
|
|
84
83
|
const linkResp = await linkRows.updateLinks({
|
|
85
|
-
appId,
|
|
86
84
|
eventType: oldTable
|
|
87
85
|
? linkRows.EventType.TABLE_UPDATED
|
|
88
86
|
: linkRows.EventType.TABLE_SAVE,
|
|
@@ -107,13 +105,12 @@ exports.save = async function (ctx) {
|
|
|
107
105
|
|
|
108
106
|
tableToSave = await tableSaveFunctions.after(tableToSave)
|
|
109
107
|
// has to run after, make sure it has _id
|
|
110
|
-
await runStaticFormulaChecks(
|
|
108
|
+
await runStaticFormulaChecks(tableToSave, { oldTable })
|
|
111
109
|
return tableToSave
|
|
112
110
|
}
|
|
113
111
|
|
|
114
112
|
exports.destroy = async function (ctx) {
|
|
115
|
-
const
|
|
116
|
-
const db = new CouchDB(appId)
|
|
113
|
+
const db = getAppDB()
|
|
117
114
|
const tableToDelete = await db.get(ctx.params.tableId)
|
|
118
115
|
|
|
119
116
|
// Delete all rows for that table
|
|
@@ -127,7 +124,6 @@ exports.destroy = async function (ctx) {
|
|
|
127
124
|
|
|
128
125
|
// update linked rows
|
|
129
126
|
await linkRows.updateLinks({
|
|
130
|
-
appId,
|
|
131
127
|
eventType: linkRows.EventType.TABLE_DELETE,
|
|
132
128
|
table: tableToDelete,
|
|
133
129
|
})
|
|
@@ -136,24 +132,25 @@ exports.destroy = async function (ctx) {
|
|
|
136
132
|
await db.remove(tableToDelete)
|
|
137
133
|
|
|
138
134
|
// remove table search index
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
135
|
+
if (!env.isTest()) {
|
|
136
|
+
const currentIndexes = await db.getIndexes()
|
|
137
|
+
const existingIndex = currentIndexes.indexes.find(
|
|
138
|
+
existing => existing.name === `search:${ctx.params.tableId}`
|
|
139
|
+
)
|
|
140
|
+
if (existingIndex) {
|
|
141
|
+
await db.deleteIndex(existingIndex)
|
|
142
|
+
}
|
|
145
143
|
}
|
|
146
144
|
|
|
147
145
|
// has to run after, make sure it has _id
|
|
148
|
-
await runStaticFormulaChecks(
|
|
149
|
-
await cleanupAttachments(
|
|
146
|
+
await runStaticFormulaChecks(tableToDelete, { deletion: true })
|
|
147
|
+
await cleanupAttachments(tableToDelete, { rows })
|
|
150
148
|
return tableToDelete
|
|
151
149
|
}
|
|
152
150
|
|
|
153
151
|
exports.bulkImport = async function (ctx) {
|
|
154
|
-
const
|
|
155
|
-
const table = await getTable(appId, ctx.params.tableId)
|
|
152
|
+
const table = await getTable(ctx.params.tableId)
|
|
156
153
|
const { dataImport } = ctx.request.body
|
|
157
|
-
await handleDataImport(
|
|
154
|
+
await handleDataImport(ctx.user, table, dataImport)
|
|
158
155
|
return table
|
|
159
156
|
}
|