@budibase/server 2.0.23 → 2.0.24-alpha.0
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.b61c225e.js → index.868c6c14.js} +260 -260
- package/builder/assets/{index.dfa4073c.css → index.aef99fa8.css} +2 -2
- package/builder/index.html +2 -2
- package/coverage/clover.xml +344 -341
- package/coverage/coverage-final.json +24 -24
- package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
- package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
- package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
- package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
- package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
- package/coverage/lcov-report/api/controllers/index.html +1 -1
- package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
- package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
- package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
- package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
- package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
- package/coverage/lcov-report/api/controllers/query/index.html +1 -1
- package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
- package/coverage/lcov-report/api/controllers/role.js.html +1 -1
- package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/index.html +1 -1
- package/coverage/lcov-report/api/controllers/row/internal.js.html +12 -12
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +15 -15
- package/coverage/lcov-report/api/controllers/row/utils.js.html +13 -13
- package/coverage/lcov-report/api/controllers/script.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/index.html +1 -1
- package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
- package/coverage/lcov-report/api/controllers/user.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/index.html +1 -1
- package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
- package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
- package/coverage/lcov-report/api/index.html +1 -1
- package/coverage/lcov-report/api/index.js.html +5 -5
- 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/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/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/screen.js.html +1 -1
- package/coverage/lcov-report/api/routes/script.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/utils/index.html +1 -1
- package/coverage/lcov-report/api/routes/utils/validators.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 +1 -1
- package/coverage/lcov-report/automations/bullboard.js.html +1 -1
- package/coverage/lcov-report/automations/index.html +1 -1
- package/coverage/lcov-report/automations/index.js.html +5 -5
- package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
- package/coverage/lcov-report/automations/steps/delay.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/loop.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 +3 -3
- 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 +22 -22
- 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/inMemoryView.js.html +1 -1
- package/coverage/lcov-report/db/index.html +1 -1
- package/coverage/lcov-report/db/index.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/LinkController.js.html +11 -11
- package/coverage/lcov-report/db/linkedRows/index.html +1 -1
- package/coverage/lcov-report/db/linkedRows/index.js.html +11 -11
- package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +3 -3
- package/coverage/lcov-report/db/newid.js.html +2 -2
- package/coverage/lcov-report/db/utils.js.html +10 -16
- 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 +2 -2
- package/coverage/lcov-report/events/utils.js.html +9 -9
- package/coverage/lcov-report/index.html +15 -15
- 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/builder.js.html +11 -11
- package/coverage/lcov-report/middleware/currentapp.js.html +34 -34
- package/coverage/lcov-report/middleware/index.html +1 -1
- package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
- package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
- package/coverage/lcov-report/middleware/resourceId.js.html +7 -7
- package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
- package/coverage/lcov-report/middleware/utils.js.html +2 -2
- 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 +16 -16
- package/coverage/lcov-report/utilities/index.html +1 -1
- package/coverage/lcov-report/utilities/index.js.html +1 -1
- package/coverage/lcov-report/utilities/plugins.js.html +1 -1
- package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +13 -13
- 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 +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/index.js.html +38 -38
- package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +10 -10
- 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 +14 -14
- package/coverage/lcov-report/utilities/usageQuota/rows.js.html +23 -11
- package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
- package/coverage/lcov-report/utilities/users.js.html +1 -1
- package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
- package/coverage/lcov.info +619 -614
- package/dist/api/controllers/application.js +2 -2
- package/dist/api/controllers/query/index.js +6 -2
- package/dist/api/controllers/row/index.js +30 -10
- package/dist/api/controllers/table/internal.js +3 -1
- package/dist/api/controllers/table/utils.js +3 -1
- package/dist/automations/steps/updateRow.js +2 -2
- package/dist/automations/utils.js +5 -3
- package/dist/db/utils.js +1 -1
- package/dist/migrations/functions/{quotas1.js → syncQuotas.js} +3 -7
- package/dist/migrations/functions/usageQuotas/syncApps.js +0 -1
- package/dist/migrations/functions/{pluginCount.js → usageQuotas/syncPlugins.js} +1 -3
- package/dist/migrations/functions/usageQuotas/syncRows.js +9 -5
- package/dist/migrations/index.js +3 -9
- package/dist/package.json +7 -7
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utilities/usageQuota/rows.js +6 -4
- package/package.json +8 -8
- package/src/api/controllers/application.ts +2 -2
- package/src/api/controllers/query/index.ts +7 -2
- package/src/api/controllers/row/index.ts +36 -13
- package/src/api/controllers/table/internal.ts +3 -1
- package/src/api/controllers/table/utils.ts +3 -1
- package/src/api/routes/tests/row.spec.js +22 -27
- package/src/automations/steps/updateRow.js +2 -2
- package/src/automations/tests/automation.spec.js +1 -6
- package/src/automations/utils.ts +6 -4
- package/src/db/utils.js +0 -2
- package/src/migrations/functions/backfill/global.ts +1 -1
- package/src/migrations/functions/{quotas1.ts → syncQuotas.ts} +3 -8
- package/src/migrations/functions/tests/{quotas1.spec.js → syncQuotas.spec.js} +5 -2
- package/src/migrations/functions/usageQuotas/syncApps.ts +0 -1
- package/src/migrations/functions/usageQuotas/syncPlugins.ts +10 -0
- package/src/migrations/functions/usageQuotas/syncRows.ts +15 -6
- package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +9 -1
- package/src/migrations/index.ts +3 -15
- package/src/migrations/tests/index.spec.ts +0 -1
- package/src/utilities/usageQuota/rows.js +7 -3
- package/src/migrations/functions/pluginCount.ts +0 -12
|
@@ -316,7 +316,7 @@ const appPostCreate = (ctx, app) => __awaiter(void 0, void 0, void 0, function*
|
|
|
316
316
|
yield creationEvents(ctx.request, app);
|
|
317
317
|
// app import & template creation
|
|
318
318
|
if (ctx.request.body.useTemplate === "true") {
|
|
319
|
-
const rows = yield (0, rows_1.getUniqueRows)([app.appId]);
|
|
319
|
+
const { rows } = yield (0, rows_1.getUniqueRows)([app.appId]);
|
|
320
320
|
const rowCount = rows ? rows.length : 0;
|
|
321
321
|
if (rowCount) {
|
|
322
322
|
try {
|
|
@@ -441,7 +441,7 @@ const destroyApp = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
441
441
|
return result;
|
|
442
442
|
});
|
|
443
443
|
const preDestroyApp = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
|
|
444
|
-
const rows = yield (0, rows_1.getUniqueRows)([ctx.params.appId]);
|
|
444
|
+
const { rows } = yield (0, rows_1.getUniqueRows)([ctx.params.appId]);
|
|
445
445
|
ctx.rowCount = rows.length;
|
|
446
446
|
});
|
|
447
447
|
const postDestroyApp = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -149,7 +149,9 @@ function preview(ctx) {
|
|
|
149
149
|
auth: Object.assign({}, authConfigCtx),
|
|
150
150
|
},
|
|
151
151
|
});
|
|
152
|
-
const { rows, keys, info, extra } = yield pro_1.quotas.addQuery(runFn
|
|
152
|
+
const { rows, keys, info, extra } = yield pro_1.quotas.addQuery(runFn, {
|
|
153
|
+
datasourceId: datasource._id,
|
|
154
|
+
});
|
|
153
155
|
const schemaFields = {};
|
|
154
156
|
if ((rows === null || rows === void 0 ? void 0 : rows.length) > 0) {
|
|
155
157
|
for (let key of [...new Set(keys)]) {
|
|
@@ -226,7 +228,9 @@ function execute(ctx, opts = { rowsOnly: false, isAutomation: false }) {
|
|
|
226
228
|
auth: Object.assign({}, authConfigCtx),
|
|
227
229
|
},
|
|
228
230
|
});
|
|
229
|
-
const { rows, pagination, extra } = yield pro_1.quotas.addQuery(runFn
|
|
231
|
+
const { rows, pagination, extra } = yield pro_1.quotas.addQuery(runFn, {
|
|
232
|
+
datasourceId: datasource._id,
|
|
233
|
+
});
|
|
230
234
|
// remove the raw from execution incase transformer being used to hide data
|
|
231
235
|
if (extra === null || extra === void 0 ? void 0 : extra.raw) {
|
|
232
236
|
delete extra.raw;
|
|
@@ -44,7 +44,9 @@ function patch(ctx) {
|
|
|
44
44
|
return (0, exports.save)(ctx);
|
|
45
45
|
}
|
|
46
46
|
try {
|
|
47
|
-
const { row, table } = yield pro_1.quotas.addQuery(() => pickApi(tableId).patch(ctx)
|
|
47
|
+
const { row, table } = yield pro_1.quotas.addQuery(() => pickApi(tableId).patch(ctx), {
|
|
48
|
+
datasourceId: tableId,
|
|
49
|
+
});
|
|
48
50
|
ctx.status = 200;
|
|
49
51
|
ctx.eventEmitter &&
|
|
50
52
|
ctx.eventEmitter.emitRow(`row:update`, appId, row, table);
|
|
@@ -66,7 +68,9 @@ const save = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
66
68
|
return patch(ctx);
|
|
67
69
|
}
|
|
68
70
|
try {
|
|
69
|
-
const { row, table } = yield pro_1.quotas.addRow(() => pro_1.quotas.addQuery(() => pickApi(tableId).save(ctx)
|
|
71
|
+
const { row, table } = yield pro_1.quotas.addRow(() => pro_1.quotas.addQuery(() => pickApi(tableId).save(ctx), {
|
|
72
|
+
datasourceId: tableId,
|
|
73
|
+
}));
|
|
70
74
|
ctx.status = 200;
|
|
71
75
|
ctx.eventEmitter && ctx.eventEmitter.emitRow(`row:save`, appId, row, table);
|
|
72
76
|
ctx.message = `${table.name} saved successfully`;
|
|
@@ -81,7 +85,9 @@ function fetchView(ctx) {
|
|
|
81
85
|
return __awaiter(this, void 0, void 0, function* () {
|
|
82
86
|
const tableId = getTableId(ctx);
|
|
83
87
|
try {
|
|
84
|
-
ctx.body = yield pro_1.quotas.addQuery(() => pickApi(tableId).fetchView(ctx)
|
|
88
|
+
ctx.body = yield pro_1.quotas.addQuery(() => pickApi(tableId).fetchView(ctx), {
|
|
89
|
+
datasourceId: tableId,
|
|
90
|
+
});
|
|
85
91
|
}
|
|
86
92
|
catch (err) {
|
|
87
93
|
ctx.throw(400, err);
|
|
@@ -93,7 +99,9 @@ function fetch(ctx) {
|
|
|
93
99
|
return __awaiter(this, void 0, void 0, function* () {
|
|
94
100
|
const tableId = getTableId(ctx);
|
|
95
101
|
try {
|
|
96
|
-
ctx.body = yield pro_1.quotas.addQuery(() => pickApi(tableId).fetch(ctx)
|
|
102
|
+
ctx.body = yield pro_1.quotas.addQuery(() => pickApi(tableId).fetch(ctx), {
|
|
103
|
+
datasourceId: tableId,
|
|
104
|
+
});
|
|
97
105
|
}
|
|
98
106
|
catch (err) {
|
|
99
107
|
ctx.throw(400, err);
|
|
@@ -105,7 +113,9 @@ function find(ctx) {
|
|
|
105
113
|
return __awaiter(this, void 0, void 0, function* () {
|
|
106
114
|
const tableId = getTableId(ctx);
|
|
107
115
|
try {
|
|
108
|
-
ctx.body = yield pro_1.quotas.addQuery(() => pickApi(tableId).find(ctx)
|
|
116
|
+
ctx.body = yield pro_1.quotas.addQuery(() => pickApi(tableId).find(ctx), {
|
|
117
|
+
datasourceId: tableId,
|
|
118
|
+
});
|
|
109
119
|
}
|
|
110
120
|
catch (err) {
|
|
111
121
|
ctx.throw(400, err);
|
|
@@ -120,7 +130,9 @@ function destroy(ctx) {
|
|
|
120
130
|
const tableId = getTableId(ctx);
|
|
121
131
|
let response, row;
|
|
122
132
|
if (inputs.rows) {
|
|
123
|
-
let { rows } = yield pro_1.quotas.addQuery(() => pickApi(tableId).bulkDestroy(ctx)
|
|
133
|
+
let { rows } = yield pro_1.quotas.addQuery(() => pickApi(tableId).bulkDestroy(ctx), {
|
|
134
|
+
datasourceId: tableId,
|
|
135
|
+
});
|
|
124
136
|
yield pro_1.quotas.removeRows(rows.length);
|
|
125
137
|
response = rows;
|
|
126
138
|
for (let row of rows) {
|
|
@@ -128,7 +140,9 @@ function destroy(ctx) {
|
|
|
128
140
|
}
|
|
129
141
|
}
|
|
130
142
|
else {
|
|
131
|
-
let resp = yield pro_1.quotas.addQuery(() => pickApi(tableId).destroy(ctx)
|
|
143
|
+
let resp = yield pro_1.quotas.addQuery(() => pickApi(tableId).destroy(ctx), {
|
|
144
|
+
datasourceId: tableId,
|
|
145
|
+
});
|
|
132
146
|
yield pro_1.quotas.removeRow();
|
|
133
147
|
response = resp.response;
|
|
134
148
|
row = resp.row;
|
|
@@ -146,7 +160,9 @@ function search(ctx) {
|
|
|
146
160
|
const tableId = getTableId(ctx);
|
|
147
161
|
try {
|
|
148
162
|
ctx.status = 200;
|
|
149
|
-
ctx.body = yield pro_1.quotas.addQuery(() => pickApi(tableId).search(ctx)
|
|
163
|
+
ctx.body = yield pro_1.quotas.addQuery(() => pickApi(tableId).search(ctx), {
|
|
164
|
+
datasourceId: tableId,
|
|
165
|
+
});
|
|
150
166
|
}
|
|
151
167
|
catch (err) {
|
|
152
168
|
ctx.throw(400, err);
|
|
@@ -170,7 +186,9 @@ function fetchEnrichedRow(ctx) {
|
|
|
170
186
|
return __awaiter(this, void 0, void 0, function* () {
|
|
171
187
|
const tableId = getTableId(ctx);
|
|
172
188
|
try {
|
|
173
|
-
ctx.body = yield pro_1.quotas.addQuery(() => pickApi(tableId).fetchEnrichedRow(ctx)
|
|
189
|
+
ctx.body = yield pro_1.quotas.addQuery(() => pickApi(tableId).fetchEnrichedRow(ctx), {
|
|
190
|
+
datasourceId: tableId,
|
|
191
|
+
});
|
|
174
192
|
}
|
|
175
193
|
catch (err) {
|
|
176
194
|
ctx.throw(400, err);
|
|
@@ -181,7 +199,9 @@ exports.fetchEnrichedRow = fetchEnrichedRow;
|
|
|
181
199
|
const exportRows = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
|
|
182
200
|
const tableId = getTableId(ctx);
|
|
183
201
|
try {
|
|
184
|
-
ctx.body = yield pro_1.quotas.addQuery(() => pickApi(tableId).exportRows(ctx)
|
|
202
|
+
ctx.body = yield pro_1.quotas.addQuery(() => pickApi(tableId).exportRows(ctx), {
|
|
203
|
+
datasourceId: tableId,
|
|
204
|
+
});
|
|
185
205
|
}
|
|
186
206
|
catch (err) {
|
|
187
207
|
ctx.throw(400, err);
|
|
@@ -150,7 +150,9 @@ function destroy(ctx) {
|
|
|
150
150
|
include_docs: true,
|
|
151
151
|
}));
|
|
152
152
|
yield db.bulkDocs(rows.rows.map((row) => (Object.assign(Object.assign({}, row.doc), { _deleted: true }))));
|
|
153
|
-
yield pro_1.quotas.removeRows(rows.rows.length
|
|
153
|
+
yield pro_1.quotas.removeRows(rows.rows.length, {
|
|
154
|
+
tableId: ctx.params.tableId,
|
|
155
|
+
});
|
|
154
156
|
// update linked rows
|
|
155
157
|
yield (0, linkedRows_1.updateLinks)({
|
|
156
158
|
eventType: linkedRows_1.EventType.TABLE_DELETE,
|
|
@@ -130,7 +130,9 @@ function handleDataImport(user, table, dataImport) {
|
|
|
130
130
|
}
|
|
131
131
|
finalData.push(row);
|
|
132
132
|
}
|
|
133
|
-
yield pro_1.quotas.addRows(finalData.length, () => db.bulkDocs(finalData)
|
|
133
|
+
yield pro_1.quotas.addRows(finalData.length, () => db.bulkDocs(finalData), {
|
|
134
|
+
tableId: table._id,
|
|
135
|
+
});
|
|
134
136
|
yield backend_core_1.events.rows.imported(table, "csv", finalData.length);
|
|
135
137
|
return table;
|
|
136
138
|
});
|
|
@@ -74,9 +74,9 @@ exports.run = function ({ inputs, appId, emitter }) {
|
|
|
74
74
|
};
|
|
75
75
|
}
|
|
76
76
|
const tableId = inputs.row.tableId;
|
|
77
|
-
// clear any
|
|
77
|
+
// clear any undefined, null or empty string properties so that they aren't updated
|
|
78
78
|
for (let propKey of Object.keys(inputs.row)) {
|
|
79
|
-
if (
|
|
79
|
+
if (inputs.row[propKey] == null || inputs.row[propKey] === "") {
|
|
80
80
|
delete inputs.row[propKey];
|
|
81
81
|
}
|
|
82
82
|
}
|
|
@@ -59,12 +59,14 @@ const jobMessage = (job, message) => {
|
|
|
59
59
|
function processEvent(job) {
|
|
60
60
|
return __awaiter(this, void 0, void 0, function* () {
|
|
61
61
|
try {
|
|
62
|
+
const automationId = job.data.automation._id;
|
|
62
63
|
console.log(jobMessage(job, "running"));
|
|
63
64
|
// need to actually await these so that an error can be captured properly
|
|
64
|
-
|
|
65
|
-
return yield backend_core_1.tenancy.doInTenant(tenantId, () => __awaiter(this, void 0, void 0, function* () {
|
|
65
|
+
return yield backend_core_1.context.doInContext(job.data.event.appId, () => __awaiter(this, void 0, void 0, function* () {
|
|
66
66
|
const runFn = () => Runner.run(job);
|
|
67
|
-
return pro_1.quotas.addAutomation(runFn
|
|
67
|
+
return pro_1.quotas.addAutomation(runFn, {
|
|
68
|
+
automationId,
|
|
69
|
+
});
|
|
68
70
|
}));
|
|
69
71
|
}
|
|
70
72
|
catch (err) {
|
package/dist/db/utils.js
CHANGED
|
@@ -7,7 +7,7 @@ const AppStatus = {
|
|
|
7
7
|
ALL: "all",
|
|
8
8
|
DEPLOYED: "published",
|
|
9
9
|
};
|
|
10
|
-
const DocumentType = Object.assign(Object.assign({}, CoreDocTypes), { TABLE: "ta", ROW: "ro", USER: "us", AUTOMATION: "au", LINK: "li", WEBHOOK: "wh", INSTANCE: "inst", LAYOUT: "layout", SCREEN: "screen",
|
|
10
|
+
const DocumentType = Object.assign(Object.assign({}, CoreDocTypes), { TABLE: "ta", ROW: "ro", USER: "us", AUTOMATION: "au", LINK: "li", WEBHOOK: "wh", INSTANCE: "inst", LAYOUT: "layout", SCREEN: "screen", QUERY: "query", DEPLOYMENTS: "deployments", METADATA: "metadata", MEM_VIEW: "view", USER_FLAG: "flag", AUTOMATION_METADATA: "meta_au" });
|
|
11
11
|
const InternalTables = {
|
|
12
12
|
USER_METADATA: "ta_users",
|
|
13
13
|
};
|
|
@@ -36,19 +36,15 @@ exports.run = void 0;
|
|
|
36
36
|
const usageQuotas_1 = require("./usageQuotas");
|
|
37
37
|
const syncApps = __importStar(require("./usageQuotas/syncApps"));
|
|
38
38
|
const syncRows = __importStar(require("./usageQuotas/syncRows"));
|
|
39
|
+
const syncPlugins = __importStar(require("./usageQuotas/syncPlugins"));
|
|
39
40
|
/**
|
|
40
|
-
*
|
|
41
|
-
* January 2022
|
|
42
|
-
*
|
|
43
|
-
* Description:
|
|
44
|
-
* Synchronise the app and row quotas to the state of the db after it was
|
|
45
|
-
* discovered that the quota resets were still in place and the row quotas
|
|
46
|
-
* weren't being decremented correctly.
|
|
41
|
+
* Synchronise quotas to the state of the db.
|
|
47
42
|
*/
|
|
48
43
|
const run = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
49
44
|
yield (0, usageQuotas_1.runQuotaMigration)(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
50
45
|
yield syncApps.run();
|
|
51
46
|
yield syncRows.run();
|
|
47
|
+
yield syncPlugins.run();
|
|
52
48
|
}));
|
|
53
49
|
});
|
|
54
50
|
exports.run = run;
|
|
@@ -16,7 +16,6 @@ const pro_1 = require("@budibase/pro");
|
|
|
16
16
|
const types_1 = require("@budibase/types");
|
|
17
17
|
const run = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
18
18
|
// get app count
|
|
19
|
-
// @ts-ignore
|
|
20
19
|
const devApps = yield (0, db_1.getAllApps)({ dev: true });
|
|
21
20
|
const appCount = devApps ? devApps.length : 0;
|
|
22
21
|
// sync app count
|
|
@@ -14,9 +14,7 @@ const backend_core_1 = require("@budibase/backend-core");
|
|
|
14
14
|
const pro_1 = require("@budibase/pro");
|
|
15
15
|
const run = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
16
16
|
try {
|
|
17
|
-
yield
|
|
18
|
-
yield pro_1.plugins.checkPluginQuotas();
|
|
19
|
-
}));
|
|
17
|
+
yield pro_1.plugins.checkPluginQuotas();
|
|
20
18
|
}
|
|
21
19
|
catch (err) {
|
|
22
20
|
backend_core_1.logging.logAlert("Failed to update plugin quotas", err);
|
|
@@ -17,15 +17,19 @@ const pro_1 = require("@budibase/pro");
|
|
|
17
17
|
const types_1 = require("@budibase/types");
|
|
18
18
|
const run = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
19
19
|
// get all rows in all apps
|
|
20
|
-
// @ts-ignore
|
|
21
20
|
const allApps = yield (0, db_1.getAllApps)({ all: true });
|
|
22
|
-
// @ts-ignore
|
|
23
21
|
const appIds = allApps ? allApps.map((app) => app.appId) : [];
|
|
24
|
-
const
|
|
25
|
-
|
|
22
|
+
const { appRows } = yield (0, rows_1.getUniqueRows)(appIds);
|
|
23
|
+
// get the counts per app
|
|
24
|
+
const counts = {};
|
|
25
|
+
let rowCount = 0;
|
|
26
|
+
Object.entries(appRows).forEach(([appId, rows]) => {
|
|
27
|
+
counts[appId] = rows.length;
|
|
28
|
+
rowCount += rows.length;
|
|
29
|
+
});
|
|
26
30
|
// sync row count
|
|
27
31
|
const tenantId = (0, tenancy_1.getTenantId)();
|
|
28
32
|
console.log(`[Tenant: ${tenantId}] Syncing row count: ${rowCount}`);
|
|
29
|
-
yield pro_1.quotas.
|
|
33
|
+
yield pro_1.quotas.setUsagePerApp(counts, types_1.StaticQuotaName.ROWS, types_1.QuotaUsageType.STATIC);
|
|
30
34
|
});
|
|
31
35
|
exports.run = run;
|
package/dist/migrations/index.js
CHANGED
|
@@ -41,10 +41,9 @@ const types_1 = require("@budibase/types");
|
|
|
41
41
|
const environment_1 = __importDefault(require("../environment"));
|
|
42
42
|
// migration functions
|
|
43
43
|
const userEmailViewCasing = __importStar(require("./functions/userEmailViewCasing"));
|
|
44
|
-
const
|
|
44
|
+
const syncQuotas = __importStar(require("./functions/syncQuotas"));
|
|
45
45
|
const appUrls = __importStar(require("./functions/appUrls"));
|
|
46
46
|
const backfill = __importStar(require("./functions/backfill"));
|
|
47
|
-
const pluginCount = __importStar(require("./functions/pluginCount"));
|
|
48
47
|
/**
|
|
49
48
|
* Populate the migration function and additional configuration from
|
|
50
49
|
* the static migration definitions.
|
|
@@ -58,8 +57,8 @@ const buildMigrations = () => {
|
|
|
58
57
|
serverMigrations.push(Object.assign(Object.assign({}, definition), { fn: userEmailViewCasing.run }));
|
|
59
58
|
break;
|
|
60
59
|
}
|
|
61
|
-
case types_1.MigrationName.
|
|
62
|
-
serverMigrations.push(Object.assign(Object.assign({}, definition), { fn:
|
|
60
|
+
case types_1.MigrationName.SYNC_QUOTAS: {
|
|
61
|
+
serverMigrations.push(Object.assign(Object.assign({}, definition), { fn: syncQuotas.run }));
|
|
63
62
|
break;
|
|
64
63
|
}
|
|
65
64
|
case types_1.MigrationName.APP_URLS: {
|
|
@@ -78,11 +77,6 @@ const buildMigrations = () => {
|
|
|
78
77
|
serverMigrations.push(Object.assign(Object.assign({}, definition), { fn: backfill.installation.run, silent: !!environment_1.default.SELF_HOSTED, preventRetry: !!environment_1.default.SELF_HOSTED }));
|
|
79
78
|
break;
|
|
80
79
|
}
|
|
81
|
-
case types_1.MigrationName.PLUGIN_COUNT: {
|
|
82
|
-
if (environment_1.default.SELF_HOSTED) {
|
|
83
|
-
serverMigrations.push(Object.assign(Object.assign({}, definition), { fn: pluginCount.run, silent: !!environment_1.default.SELF_HOSTED, preventRetry: false }));
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
80
|
}
|
|
87
81
|
}
|
|
88
82
|
return serverMigrations;
|
package/dist/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@budibase/server",
|
|
3
3
|
"email": "hi@budibase.com",
|
|
4
|
-
"version": "2.0.
|
|
4
|
+
"version": "2.0.23",
|
|
5
5
|
"description": "Budibase Web Server",
|
|
6
6
|
"main": "src/index.ts",
|
|
7
7
|
"repository": {
|
|
@@ -77,11 +77,11 @@
|
|
|
77
77
|
"license": "GPL-3.0",
|
|
78
78
|
"dependencies": {
|
|
79
79
|
"@apidevtools/swagger-parser": "10.0.3",
|
|
80
|
-
"@budibase/backend-core": "^2.0.
|
|
81
|
-
"@budibase/client": "^2.0.
|
|
82
|
-
"@budibase/pro": "2.0.
|
|
83
|
-
"@budibase/string-templates": "^2.0.
|
|
84
|
-
"@budibase/types": "^2.0.
|
|
80
|
+
"@budibase/backend-core": "^2.0.23",
|
|
81
|
+
"@budibase/client": "^2.0.23",
|
|
82
|
+
"@budibase/pro": "2.0.23",
|
|
83
|
+
"@budibase/string-templates": "^2.0.23",
|
|
84
|
+
"@budibase/types": "^2.0.23",
|
|
85
85
|
"@bull-board/api": "3.7.0",
|
|
86
86
|
"@bull-board/koa": "3.9.4",
|
|
87
87
|
"@elastic/elasticsearch": "7.10.0",
|
|
@@ -146,7 +146,7 @@
|
|
|
146
146
|
"to-json-schema": "0.2.5",
|
|
147
147
|
"uuid": "3.3.2",
|
|
148
148
|
"validate.js": "0.13.1",
|
|
149
|
-
"vm2": "3.9.
|
|
149
|
+
"vm2": "3.9.11",
|
|
150
150
|
"worker-farm": "1.7.0",
|
|
151
151
|
"xml2js": "0.4.23",
|
|
152
152
|
"yargs": "13.2.4",
|