@budibase/server 0.9.190-alpha.0 → 0.9.190-alpha.4
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.43f4c913.js → index.12e1627d.js} +127 -127
- package/builder/assets/{index.7d405e74.css → index.4fb3f887.css} +1 -1
- package/builder/index.html +2 -2
- package/coverage/clover.xml +173 -177
- package/coverage/coverage-final.json +8 -8
- 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 +7 -25
- package/coverage/lcov-report/api/controllers/auth.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/component.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/hosting.js.html +1 -1
- package/coverage/lcov-report/api/controllers/index.html +24 -24
- package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
- package/coverage/lcov-report/api/controllers/layout.js.html +9 -9
- package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
- package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
- package/coverage/lcov-report/api/controllers/query.js.html +1 -1
- package/coverage/lcov-report/api/controllers/role.js.html +1 -1
- package/coverage/lcov-report/api/controllers/routing.js.html +27 -27
- 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/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
- package/coverage/lcov-report/api/controllers/screen.js.html +2 -2
- package/coverage/lcov-report/api/controllers/script.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/table/internal.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/utils.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 +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/hosting.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/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 +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 +1 -1
- package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
- package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
- 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 +1 -1
- 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 +1 -1
- package/coverage/lcov-report/automations/utils.js.html +1 -1
- 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 +2 -2
- package/coverage/lcov-report/db/client.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 +1 -1
- package/coverage/lcov-report/db/linkedRows/index.html +1 -1
- package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
- package/coverage/lcov-report/db/newid.js.html +2 -2
- package/coverage/lcov-report/db/utils.js.html +2 -2
- 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 +17 -17
- 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 +1 -1
- package/coverage/lcov-report/middleware/builder.js.html +1 -1
- package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
- 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/resourceId.js.html +1 -1
- package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
- package/coverage/lcov-report/middleware/usageQuota.js.html +1 -1
- package/coverage/lcov-report/middleware/utils.js.html +1 -1
- package/coverage/lcov-report/threads/automation.js.html +1 -1
- package/coverage/lcov-report/threads/index.html +1 -1
- package/coverage/lcov-report/threads/index.js.html +1 -1
- package/coverage/lcov-report/threads/query.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 +1 -1
- package/coverage/lcov-report/utilities/index.html +1 -1
- package/coverage/lcov-report/utilities/index.js.html +1 -1
- 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 +2 -2
- package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
- 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/users.js.html +1 -1
- package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
- package/coverage/lcov.info +275 -279
- package/dist/api/controllers/application.js +1 -5
- package/dist/api/controllers/row/ExternalRequest.js +41 -20
- package/dist/integrations/base/sql.js +29 -11
- package/dist/integrations/index.js +1 -1
- package/dist/integrations/mysql.js +2 -1
- package/dist/integrations/oracle.js +5 -3
- package/dist/integrations/utils.js +1 -1
- package/dist/package.json +4 -4
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
- package/src/api/controllers/application.js +0 -6
- package/src/api/controllers/row/ExternalRequest.ts +44 -20
- package/src/api/routes/tests/application.spec.js +0 -2
- package/src/api/routes/tests/screen.spec.js +1 -1
- package/src/integrations/base/sql.ts +30 -11
- package/src/integrations/index.ts +2 -2
- package/src/integrations/mysql.ts +3 -1
- package/src/integrations/oracle.ts +21 -8
- package/src/integrations/utils.ts +6 -2
|
@@ -13,10 +13,9 @@ const env = require("../../environment");
|
|
|
13
13
|
const packageJson = require("../../../package.json");
|
|
14
14
|
const { createLinkView, createRoutingView, createAllSearchIndex, } = require("../../db/views/staticViews");
|
|
15
15
|
const { getTemplateStream, createApp, deleteApp, } = require("../../utilities/fileSystem");
|
|
16
|
-
const { generateAppID, getLayoutParams, getScreenParams,
|
|
16
|
+
const { generateAppID, getLayoutParams, getScreenParams, generateDevAppID, DocumentTypes, AppStatus, } = require("../../db/utils");
|
|
17
17
|
const { BUILTIN_ROLE_IDS, AccessController } = require("@budibase/auth/roles");
|
|
18
18
|
const { BASE_LAYOUTS } = require("../../constants/layouts");
|
|
19
|
-
const { createHomeScreen } = require("../../constants/screens");
|
|
20
19
|
const { cloneDeep } = require("lodash/fp");
|
|
21
20
|
const { processObject } = require("@budibase/string-templates");
|
|
22
21
|
const { getAllApps, isDevAppID, getDeployedAppID, Replication, } = require("@budibase/auth/db");
|
|
@@ -350,8 +349,5 @@ const createEmptyAppPackage = (ctx, app) => __awaiter(void 0, void 0, void 0, fu
|
|
|
350
349
|
const cloned = cloneDeep(layout);
|
|
351
350
|
screensAndLayouts.push(yield processObject(cloned, app));
|
|
352
351
|
}
|
|
353
|
-
const homeScreen = createHomeScreen(app);
|
|
354
|
-
homeScreen._id = generateScreenID();
|
|
355
|
-
screensAndLayouts.push(homeScreen);
|
|
356
352
|
yield db.bulkDocs(screensAndLayouts);
|
|
357
353
|
});
|
|
@@ -167,8 +167,8 @@ var External;
|
|
|
167
167
|
}
|
|
168
168
|
return row;
|
|
169
169
|
}
|
|
170
|
-
function
|
|
171
|
-
return (field.relationshipType && field.relationshipType.split("-")[0] === "
|
|
170
|
+
function isOneSide(field) {
|
|
171
|
+
return (field.relationshipType && field.relationshipType.split("-")[0] === "one");
|
|
172
172
|
}
|
|
173
173
|
class ExternalRequest {
|
|
174
174
|
constructor(appId, operation, tableId, datasource) {
|
|
@@ -226,24 +226,35 @@ var External;
|
|
|
226
226
|
const linkTable = this.tables[linkTableName];
|
|
227
227
|
// @ts-ignore
|
|
228
228
|
const linkTablePrimary = linkTable.primary[0];
|
|
229
|
-
|
|
229
|
+
// one to many
|
|
230
|
+
if (isOneSide(field)) {
|
|
230
231
|
newRow[field.foreignKey || linkTablePrimary] = utils_1.breakRowIdField(row[key][0])[0];
|
|
231
232
|
}
|
|
232
|
-
|
|
233
|
+
// many to many
|
|
234
|
+
else if (field.through) {
|
|
233
235
|
// we're not inserting a doc, will be a bunch of update calls
|
|
234
|
-
const
|
|
235
|
-
const thisKey =
|
|
236
|
-
? "id"
|
|
237
|
-
: field.throughTo || linkTablePrimary;
|
|
238
|
-
// @ts-ignore
|
|
239
|
-
const otherKey = isUpdate
|
|
240
|
-
? field.fieldName
|
|
241
|
-
: field.throughFrom || tablePrimary;
|
|
236
|
+
const otherKey = field.throughFrom || linkTablePrimary;
|
|
237
|
+
const thisKey = field.throughTo || tablePrimary;
|
|
242
238
|
row[key].map((relationship) => {
|
|
243
|
-
// we don't really support composite keys for relationships, this is why [0] is used
|
|
244
239
|
manyRelationships.push({
|
|
245
240
|
tableId: field.through || field.tableId,
|
|
246
|
-
isUpdate,
|
|
241
|
+
isUpdate: false,
|
|
242
|
+
key: otherKey,
|
|
243
|
+
[otherKey]: utils_1.breakRowIdField(relationship)[0],
|
|
244
|
+
// leave the ID for enrichment later
|
|
245
|
+
[thisKey]: `{{ literal ${tablePrimary} }}`,
|
|
246
|
+
});
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
// many to one
|
|
250
|
+
else {
|
|
251
|
+
const thisKey = "id";
|
|
252
|
+
// @ts-ignore
|
|
253
|
+
const otherKey = field.fieldName;
|
|
254
|
+
row[key].map((relationship) => {
|
|
255
|
+
manyRelationships.push({
|
|
256
|
+
tableId: field.tableId,
|
|
257
|
+
isUpdate: true,
|
|
247
258
|
key: otherKey,
|
|
248
259
|
[thisKey]: utils_1.breakRowIdField(relationship)[0],
|
|
249
260
|
// leave the ID for enrichment later
|
|
@@ -351,8 +362,8 @@ var External;
|
|
|
351
362
|
const { tableName: throughTableName } = breakExternalTableId(field.through);
|
|
352
363
|
definition.through = throughTableName;
|
|
353
364
|
// don't support composite keys for relationships
|
|
354
|
-
definition.from = field.
|
|
355
|
-
definition.to = field.
|
|
365
|
+
definition.from = field.throughTo || table.primary[0];
|
|
366
|
+
definition.to = field.throughFrom || linkTable.primary[0];
|
|
356
367
|
definition.fromPrimary = table.primary[0];
|
|
357
368
|
definition.toPrimary = linkTable.primary[0];
|
|
358
369
|
}
|
|
@@ -374,24 +385,34 @@ var External;
|
|
|
374
385
|
// make a new request to get the row with all its relationships
|
|
375
386
|
// we need this to work out if any relationships need removed
|
|
376
387
|
for (let field of Object.values(table.schema)) {
|
|
377
|
-
if (field.type !== FieldTypes.LINK ||
|
|
388
|
+
if (field.type !== FieldTypes.LINK ||
|
|
389
|
+
!field.fieldName ||
|
|
390
|
+
isOneSide(field)) {
|
|
378
391
|
continue;
|
|
379
392
|
}
|
|
380
393
|
const isMany = field.relationshipType === RelationshipTypes.MANY_TO_MANY;
|
|
381
394
|
const tableId = isMany ? field.through : field.tableId;
|
|
382
|
-
const
|
|
395
|
+
const { tableName: relatedTableName } = breakExternalTableId(tableId);
|
|
396
|
+
// @ts-ignore
|
|
397
|
+
const linkPrimaryKey = this.tables[relatedTableName].primary[0];
|
|
398
|
+
const manyKey = field.throughTo || primaryKey;
|
|
399
|
+
const lookupField = isMany ? primaryKey : field.foreignKey;
|
|
383
400
|
const fieldName = isMany ? manyKey : field.fieldName;
|
|
401
|
+
if (!lookupField || !row[lookupField]) {
|
|
402
|
+
continue;
|
|
403
|
+
}
|
|
384
404
|
const response = yield getDatasourceAndQuery(this.appId, {
|
|
385
405
|
endpoint: getEndpoint(tableId, DataSourceOperation.READ),
|
|
386
406
|
filters: {
|
|
387
407
|
equal: {
|
|
388
|
-
[fieldName]: row[
|
|
408
|
+
[fieldName]: row[lookupField],
|
|
389
409
|
},
|
|
390
410
|
},
|
|
391
411
|
});
|
|
392
412
|
// this is the response from knex if no rows found
|
|
393
413
|
const rows = !response[0].read ? response : [];
|
|
394
|
-
|
|
414
|
+
const storeTo = isMany ? field.throughFrom || linkPrimaryKey : manyKey;
|
|
415
|
+
related[storeTo] = { rows, isMany, tableId };
|
|
395
416
|
}
|
|
396
417
|
return related;
|
|
397
418
|
});
|
|
@@ -24,6 +24,9 @@ function parse(input) {
|
|
|
24
24
|
if (Array.isArray(input)) {
|
|
25
25
|
return JSON.stringify(input);
|
|
26
26
|
}
|
|
27
|
+
if (input == undefined) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
27
30
|
if (typeof input !== "string") {
|
|
28
31
|
return input;
|
|
29
32
|
}
|
|
@@ -45,6 +48,9 @@ function parseBody(body) {
|
|
|
45
48
|
return body;
|
|
46
49
|
}
|
|
47
50
|
function parseFilters(filters) {
|
|
51
|
+
if (!filters) {
|
|
52
|
+
return {};
|
|
53
|
+
}
|
|
48
54
|
for (let [key, value] of Object.entries(filters)) {
|
|
49
55
|
let parsed;
|
|
50
56
|
if (typeof value === "object") {
|
|
@@ -144,6 +150,23 @@ class InternalBuilder {
|
|
|
144
150
|
}
|
|
145
151
|
return query;
|
|
146
152
|
}
|
|
153
|
+
addSorting(query, json) {
|
|
154
|
+
var _a;
|
|
155
|
+
let { sort, paginate } = json;
|
|
156
|
+
if (!sort) {
|
|
157
|
+
return query;
|
|
158
|
+
}
|
|
159
|
+
const table = (_a = json.meta) === null || _a === void 0 ? void 0 : _a.table;
|
|
160
|
+
for (let [key, value] of Object.entries(sort)) {
|
|
161
|
+
const direction = value === datasource_1.SortDirection.ASCENDING ? "asc" : "desc";
|
|
162
|
+
query = query.orderBy(`${table === null || table === void 0 ? void 0 : table.name}.${key}`, direction);
|
|
163
|
+
}
|
|
164
|
+
if (this.client === utils_1.SqlClients.MS_SQL && !sort && (paginate === null || paginate === void 0 ? void 0 : paginate.limit)) {
|
|
165
|
+
// @ts-ignore
|
|
166
|
+
query = query.orderBy(`${table === null || table === void 0 ? void 0 : table.name}.${table === null || table === void 0 ? void 0 : table.primary[0]}`);
|
|
167
|
+
}
|
|
168
|
+
return query;
|
|
169
|
+
}
|
|
147
170
|
addRelationships(knex, query, fields, fromTable, relationships) {
|
|
148
171
|
if (!relationships) {
|
|
149
172
|
return query;
|
|
@@ -194,7 +217,6 @@ class InternalBuilder {
|
|
|
194
217
|
return query.insert(parsedBody);
|
|
195
218
|
}
|
|
196
219
|
read(knex, json, limit) {
|
|
197
|
-
var _a, _b;
|
|
198
220
|
let { endpoint, resource, filters, sort, paginate, relationships } = json;
|
|
199
221
|
const tableName = endpoint.entityId;
|
|
200
222
|
// select all if not specified
|
|
@@ -226,22 +248,18 @@ class InternalBuilder {
|
|
|
226
248
|
if (foundOffset) {
|
|
227
249
|
query = query.offset(foundOffset);
|
|
228
250
|
}
|
|
229
|
-
if (sort) {
|
|
230
|
-
for (let [key, value] of Object.entries(sort)) {
|
|
231
|
-
const direction = value === datasource_1.SortDirection.ASCENDING ? "asc" : "desc";
|
|
232
|
-
query = query.orderBy(key, direction);
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
if (this.client === utils_1.SqlClients.MS_SQL && !sort && (paginate === null || paginate === void 0 ? void 0 : paginate.limit)) {
|
|
236
|
-
// @ts-ignore
|
|
237
|
-
query = query.orderBy((_b = (_a = json.meta) === null || _a === void 0 ? void 0 : _a.table) === null || _b === void 0 ? void 0 : _b.primary[0]);
|
|
238
|
-
}
|
|
239
251
|
query = this.addFilters(tableName, query, filters);
|
|
252
|
+
// add sorting to pre-query
|
|
253
|
+
query = this.addSorting(query, json);
|
|
240
254
|
// @ts-ignore
|
|
241
255
|
let preQuery = knex({
|
|
242
256
|
// @ts-ignore
|
|
243
257
|
[tableName]: query,
|
|
244
258
|
}).select(selectStatement);
|
|
259
|
+
// have to add after as well (this breaks MS-SQL)
|
|
260
|
+
if (this.client !== utils_1.SqlClients.MS_SQL) {
|
|
261
|
+
preQuery = this.addSorting(preQuery, json);
|
|
262
|
+
}
|
|
245
263
|
// handle joins
|
|
246
264
|
return this.addRelationships(knex, preQuery, selectStatement, tableName, relationships);
|
|
247
265
|
}
|
|
@@ -38,7 +38,7 @@ const INTEGRATIONS = {
|
|
|
38
38
|
[SourceNames.REST]: rest.integration,
|
|
39
39
|
};
|
|
40
40
|
// optionally add oracle integration if the oracle binary can be installed
|
|
41
|
-
if (!(process.arch ===
|
|
41
|
+
if (!(process.arch === "arm64" && process.platform === "darwin")) {
|
|
42
42
|
const oracle = require("./oracle");
|
|
43
43
|
DEFINITIONS[SourceNames.ORACLE] = oracle.schema;
|
|
44
44
|
INTEGRATIONS[SourceNames.ORACLE] = oracle.integration;
|
|
@@ -102,7 +102,8 @@ var MySQLModule;
|
|
|
102
102
|
this.client.connect();
|
|
103
103
|
// get the tables first
|
|
104
104
|
const tablesResp = yield internalQuery(this.client, { sql: "SHOW TABLES;" }, false);
|
|
105
|
-
const tableNames = tablesResp.map((obj) => obj[`Tables_in_${database
|
|
105
|
+
const tableNames = tablesResp.map((obj) => obj[`Tables_in_${database}`] ||
|
|
106
|
+
obj[`Tables_in_${database.toLowerCase()}`]);
|
|
106
107
|
for (let tableName of tableNames) {
|
|
107
108
|
const primaryKeys = [];
|
|
108
109
|
const schema = {};
|
|
@@ -269,7 +269,8 @@ var OracleModule;
|
|
|
269
269
|
addReturning(query, bindings, returnColumn) {
|
|
270
270
|
if (bindings instanceof Array) {
|
|
271
271
|
bindings.push({ dir: oracledb_1.default.BIND_OUT });
|
|
272
|
-
query.sql =
|
|
272
|
+
query.sql =
|
|
273
|
+
query.sql + ` returning \"${returnColumn}\" into :${bindings.length}`;
|
|
273
274
|
}
|
|
274
275
|
}
|
|
275
276
|
internalQuery(query, returnColum, operation) {
|
|
@@ -279,7 +280,8 @@ var OracleModule;
|
|
|
279
280
|
connection = yield this.getConnection();
|
|
280
281
|
const options = { autoCommit: true };
|
|
281
282
|
const bindings = query.bindings || [];
|
|
282
|
-
if (returnColum &&
|
|
283
|
+
if (returnColum &&
|
|
284
|
+
(operation === datasource_1.Operation.CREATE || operation === datasource_1.Operation.UPDATE)) {
|
|
283
285
|
this.addReturning(query, bindings, returnColum);
|
|
284
286
|
}
|
|
285
287
|
const result = yield connection.execute(query.sql, bindings, options);
|
|
@@ -332,7 +334,7 @@ var OracleModule;
|
|
|
332
334
|
const primaryKeys = json.meta.table.primary;
|
|
333
335
|
const primaryKey = primaryKeys ? primaryKeys[0] : undefined;
|
|
334
336
|
const queryFn = (query, operation) => this.internalQuery(query, primaryKey, operation);
|
|
335
|
-
const processFn = (response) => response.rows ? response.rows : [];
|
|
337
|
+
const processFn = (response) => (response.rows ? response.rows : []);
|
|
336
338
|
const output = yield this.queryWithReturning(json, queryFn, processFn);
|
|
337
339
|
return output;
|
|
338
340
|
});
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.finaliseExternalTables = exports.isIsoDateString = exports.isSQL = exports.getSqlQuery = exports.convertSqlType = exports.breakRowIdField = exports.convertRowId = exports.isRowId = exports.generateRowIdField = exports.breakExternalTableId = exports.buildExternalTableId = exports.isExternalTable = exports.SqlClients = void 0;
|
|
4
4
|
const datasource_1 = require("../definitions/datasource");
|
|
5
5
|
const { DocumentTypes, SEPARATOR } = require("../db/utils");
|
|
6
|
-
const { FieldTypes, BuildSchemaErrors, InvalidColumns } = require("../constants");
|
|
6
|
+
const { FieldTypes, BuildSchemaErrors, InvalidColumns, } = require("../constants");
|
|
7
7
|
const DOUBLE_SEPARATOR = `${SEPARATOR}${SEPARATOR}`;
|
|
8
8
|
const ROW_ID_REGEX = /^\[.*]$/g;
|
|
9
9
|
const SQL_TYPE_MAP = {
|
package/dist/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@budibase/server",
|
|
3
3
|
"email": "hi@budibase.com",
|
|
4
|
-
"version": "0.9.
|
|
4
|
+
"version": "0.9.190-alpha.3",
|
|
5
5
|
"description": "Budibase Web Server",
|
|
6
6
|
"main": "src/index.js",
|
|
7
7
|
"repository": {
|
|
@@ -68,11 +68,11 @@
|
|
|
68
68
|
"author": "Budibase",
|
|
69
69
|
"license": "GPL-3.0",
|
|
70
70
|
"dependencies": {
|
|
71
|
+
"@budibase/auth": "^0.9.190-alpha.3",
|
|
72
|
+
"@budibase/client": "^0.9.190-alpha.3",
|
|
73
|
+
"@budibase/string-templates": "^0.9.190-alpha.3",
|
|
71
74
|
"@bull-board/api": "^3.7.0",
|
|
72
75
|
"@bull-board/koa": "^3.7.0",
|
|
73
|
-
"@budibase/auth": "^0.9.189",
|
|
74
|
-
"@budibase/client": "^0.9.189",
|
|
75
|
-
"@budibase/string-templates": "^0.9.189",
|
|
76
76
|
"@elastic/elasticsearch": "7.10.0",
|
|
77
77
|
"@koa/router": "8.0.0",
|
|
78
78
|
"@sendgrid/mail": "7.1.1",
|