@budibase/backend-core 2.29.4 → 2.29.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/dist/index.js +55 -6
- package/dist/index.js.map +2 -2
- package/dist/index.js.meta.json +1 -1
- package/dist/package.json +4 -4
- package/dist/plugins.js.meta.json +1 -1
- package/dist/src/sql/sql.js +8 -1
- package/dist/src/sql/sql.js.map +1 -1
- package/dist/src/sql/sqlStatements.d.ts +3 -1
- package/dist/src/sql/sqlStatements.js +8 -2
- package/dist/src/sql/sqlStatements.js.map +1 -1
- package/package.json +4 -4
- package/src/sql/sql.ts +13 -2
- package/src/sql/sqlStatements.ts +10 -2
package/dist/index.js
CHANGED
|
@@ -54827,8 +54827,10 @@ var DEFAULT_BB_DATASOURCE_ID = "datasource_internal_bb_default";
|
|
|
54827
54827
|
// ../shared-core/src/filters.ts
|
|
54828
54828
|
var filters_exports = {};
|
|
54829
54829
|
__export(filters_exports, {
|
|
54830
|
+
ColumnSplitter: () => ColumnSplitter,
|
|
54830
54831
|
NoEmptyFilterStrings: () => NoEmptyFilterStrings,
|
|
54831
54832
|
buildQuery: () => buildQuery,
|
|
54833
|
+
getKeyNumbering: () => getKeyNumbering,
|
|
54832
54834
|
getValidOperatorsForType: () => getValidOperatorsForType,
|
|
54833
54835
|
hasFilters: () => hasFilters,
|
|
54834
54836
|
limit: () => limit,
|
|
@@ -55064,12 +55066,46 @@ var cleanupQuery = (query) => {
|
|
|
55064
55066
|
return query;
|
|
55065
55067
|
};
|
|
55066
55068
|
var removeKeyNumbering = (key) => {
|
|
55069
|
+
return getKeyNumbering(key).key;
|
|
55070
|
+
};
|
|
55071
|
+
var getKeyNumbering = (key) => {
|
|
55067
55072
|
if (typeof key === "string" && key.match(/\d[0-9]*:/g) != null) {
|
|
55068
55073
|
const parts = key.split(":");
|
|
55069
|
-
parts.shift();
|
|
55070
|
-
return parts.join(":");
|
|
55074
|
+
const number = parts.shift();
|
|
55075
|
+
return { prefix: `${number}:`, key: parts.join(":") };
|
|
55071
55076
|
} else {
|
|
55072
|
-
return key;
|
|
55077
|
+
return { key };
|
|
55078
|
+
}
|
|
55079
|
+
};
|
|
55080
|
+
var ColumnSplitter = class {
|
|
55081
|
+
constructor(tables) {
|
|
55082
|
+
this.tableNames = tables.map((table) => table.name);
|
|
55083
|
+
this.tableIds = tables.map((table) => table._id);
|
|
55084
|
+
this.relationshipColumnNames = tables.flatMap(
|
|
55085
|
+
(table) => Object.keys(table.schema).filter(
|
|
55086
|
+
(columnName) => table.schema[columnName].type === "link" /* LINK */
|
|
55087
|
+
)
|
|
55088
|
+
);
|
|
55089
|
+
this.relationships = this.tableNames.concat(this.tableIds).concat(this.relationshipColumnNames).sort((a, b) => b.length - a.length);
|
|
55090
|
+
}
|
|
55091
|
+
run(key) {
|
|
55092
|
+
let { prefix, key: splitKey } = getKeyNumbering(key);
|
|
55093
|
+
let relationship;
|
|
55094
|
+
for (let possibleRelationship of this.relationships) {
|
|
55095
|
+
const withDot = `${possibleRelationship}.`;
|
|
55096
|
+
if (splitKey.startsWith(withDot)) {
|
|
55097
|
+
const finalKeyParts = splitKey.split(withDot);
|
|
55098
|
+
finalKeyParts.shift();
|
|
55099
|
+
relationship = withDot;
|
|
55100
|
+
splitKey = finalKeyParts.join(".");
|
|
55101
|
+
break;
|
|
55102
|
+
}
|
|
55103
|
+
}
|
|
55104
|
+
return {
|
|
55105
|
+
numberPrefix: prefix,
|
|
55106
|
+
relationshipPrefix: relationship,
|
|
55107
|
+
column: splitKey
|
|
55108
|
+
};
|
|
55073
55109
|
}
|
|
55074
55110
|
};
|
|
55075
55111
|
var buildQuery = (filter) => {
|
|
@@ -67180,14 +67216,20 @@ var import_knex2 = require("knex");
|
|
|
67180
67216
|
|
|
67181
67217
|
// src/sql/sqlStatements.ts
|
|
67182
67218
|
var SqlStatements = class {
|
|
67183
|
-
constructor(client, table, { allOr } = {}) {
|
|
67219
|
+
constructor(client, table, { allOr, columnPrefix } = {}) {
|
|
67184
67220
|
this.client = client;
|
|
67185
67221
|
this.table = table;
|
|
67186
67222
|
this.allOr = allOr;
|
|
67223
|
+
this.columnPrefix = columnPrefix;
|
|
67187
67224
|
}
|
|
67188
67225
|
getField(key) {
|
|
67189
67226
|
const fieldName = key.split(".")[1];
|
|
67190
|
-
|
|
67227
|
+
let found = this.table.schema[fieldName];
|
|
67228
|
+
if (!found && this.columnPrefix) {
|
|
67229
|
+
const prefixRemovedFieldName = fieldName.replace(this.columnPrefix, "");
|
|
67230
|
+
found = this.table.schema[prefixRemovedFieldName];
|
|
67231
|
+
}
|
|
67232
|
+
return found;
|
|
67191
67233
|
}
|
|
67192
67234
|
between(query, key, low, high) {
|
|
67193
67235
|
const field = this.getField(key);
|
|
@@ -67563,7 +67605,10 @@ var InternalBuilder = class {
|
|
|
67563
67605
|
}
|
|
67564
67606
|
filters = parseFilters(filters);
|
|
67565
67607
|
const allOr = filters.allOr;
|
|
67566
|
-
const sqlStatements = new SqlStatements(this.client, table, {
|
|
67608
|
+
const sqlStatements = new SqlStatements(this.client, table, {
|
|
67609
|
+
allOr,
|
|
67610
|
+
columnPrefix: opts.columnPrefix
|
|
67611
|
+
});
|
|
67567
67612
|
const tableName = this.client === "sqlite3" /* SQL_LITE */ ? table._id : table.name;
|
|
67568
67613
|
function getTableAlias(name) {
|
|
67569
67614
|
const alias = opts.aliases?.[name];
|
|
@@ -67938,6 +67983,7 @@ var InternalBuilder = class {
|
|
|
67938
67983
|
query = this.addSorting(query, json);
|
|
67939
67984
|
}
|
|
67940
67985
|
query = this.addFilters(query, filters, json.meta.table, {
|
|
67986
|
+
columnPrefix: json.meta.columnPrefix,
|
|
67941
67987
|
aliases: tableAliases
|
|
67942
67988
|
});
|
|
67943
67989
|
const alias = tableAliases?.[tableName] || tableName;
|
|
@@ -67963,6 +68009,7 @@ var InternalBuilder = class {
|
|
|
67963
68009
|
query = query.limit(limits.base);
|
|
67964
68010
|
}
|
|
67965
68011
|
return this.addFilters(query, filters, json.meta.table, {
|
|
68012
|
+
columnPrefix: json.meta.columnPrefix,
|
|
67966
68013
|
relationship: true,
|
|
67967
68014
|
aliases: tableAliases
|
|
67968
68015
|
});
|
|
@@ -67972,6 +68019,7 @@ var InternalBuilder = class {
|
|
|
67972
68019
|
let query = this.knexWithAlias(knex3, endpoint, tableAliases);
|
|
67973
68020
|
const parsedBody = parseBody(body2);
|
|
67974
68021
|
query = this.addFilters(query, filters, json.meta.table, {
|
|
68022
|
+
columnPrefix: json.meta.columnPrefix,
|
|
67975
68023
|
aliases: tableAliases
|
|
67976
68024
|
});
|
|
67977
68025
|
if (opts.disableReturning) {
|
|
@@ -67984,6 +68032,7 @@ var InternalBuilder = class {
|
|
|
67984
68032
|
const { endpoint, filters, tableAliases } = json;
|
|
67985
68033
|
let query = this.knexWithAlias(knex3, endpoint, tableAliases);
|
|
67986
68034
|
query = this.addFilters(query, filters, json.meta.table, {
|
|
68035
|
+
columnPrefix: json.meta.columnPrefix,
|
|
67987
68036
|
aliases: tableAliases
|
|
67988
68037
|
});
|
|
67989
68038
|
if (opts.disableReturning) {
|