@budibase/backend-core 2.29.21 → 2.29.22
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 +68 -40
- package/dist/index.js.map +3 -3
- package/dist/index.js.meta.json +1 -1
- package/dist/package.json +4 -4
- package/dist/src/sql/sql.d.ts +2 -2
- package/dist/src/sql/sql.js +68 -42
- package/dist/src/sql/sql.js.map +1 -1
- package/dist/src/sql/sqlTable.d.ts +3 -3
- package/dist/src/sql/sqlTable.js.map +1 -1
- package/package.json +4 -4
- package/src/sql/sql.ts +103 -44
- package/src/sql/sqlTable.ts +3 -3
package/dist/index.js
CHANGED
|
@@ -67621,27 +67621,20 @@ var sqlTable_default = SqlTableQueryBuilder;
|
|
|
67621
67621
|
// src/sql/sql.ts
|
|
67622
67622
|
var envLimit = environment_default.SQL_MAX_ROWS ? parseInt(environment_default.SQL_MAX_ROWS) : null;
|
|
67623
67623
|
var BASE_LIMIT = envLimit || 5e3;
|
|
67624
|
-
function
|
|
67625
|
-
let start2, end2;
|
|
67624
|
+
function quote(client, str) {
|
|
67626
67625
|
switch (client) {
|
|
67627
|
-
case "mysql2" /* MY_SQL */:
|
|
67628
|
-
start2 = end2 = "`";
|
|
67629
|
-
break;
|
|
67630
67626
|
case "sqlite3" /* SQL_LITE */:
|
|
67631
67627
|
case "oracledb" /* ORACLE */:
|
|
67632
67628
|
case "pg" /* POSTGRES */:
|
|
67633
|
-
|
|
67634
|
-
break;
|
|
67629
|
+
return `"${str}"`;
|
|
67635
67630
|
case "mssql" /* MS_SQL */:
|
|
67636
|
-
|
|
67637
|
-
|
|
67638
|
-
|
|
67639
|
-
default:
|
|
67640
|
-
throw new Error("Unknown client generating like key");
|
|
67631
|
+
return `[${str}]`;
|
|
67632
|
+
case "mysql2" /* MY_SQL */:
|
|
67633
|
+
return `\`${str}\``;
|
|
67641
67634
|
}
|
|
67642
|
-
|
|
67643
|
-
|
|
67644
|
-
return key;
|
|
67635
|
+
}
|
|
67636
|
+
function quotedIdentifier(client, key) {
|
|
67637
|
+
return key.split(".").map((part) => quote(client, part)).join(".");
|
|
67645
67638
|
}
|
|
67646
67639
|
function parse(input) {
|
|
67647
67640
|
if (Array.isArray(input)) {
|
|
@@ -67684,27 +67677,51 @@ function parseFilters(filters) {
|
|
|
67684
67677
|
}
|
|
67685
67678
|
function generateSelectStatement(json, knex3) {
|
|
67686
67679
|
const { resource, meta } = json;
|
|
67680
|
+
const client = knex3.client.config.client;
|
|
67687
67681
|
if (!resource || !resource.fields || resource.fields.length === 0) {
|
|
67688
67682
|
return "*";
|
|
67689
67683
|
}
|
|
67690
|
-
const schema = meta
|
|
67684
|
+
const schema = meta.table.schema;
|
|
67691
67685
|
return resource.fields.map((field) => {
|
|
67692
|
-
const
|
|
67693
|
-
|
|
67694
|
-
|
|
67695
|
-
|
|
67696
|
-
|
|
67697
|
-
|
|
67698
|
-
|
|
67699
|
-
|
|
67700
|
-
|
|
67701
|
-
|
|
67702
|
-
|
|
67686
|
+
const parts = field.split(/\./g);
|
|
67687
|
+
let table = void 0;
|
|
67688
|
+
let column = void 0;
|
|
67689
|
+
if (parts.length === 1) {
|
|
67690
|
+
column = parts[0];
|
|
67691
|
+
}
|
|
67692
|
+
if (parts.length === 2) {
|
|
67693
|
+
table = parts[0];
|
|
67694
|
+
column = parts[1];
|
|
67695
|
+
}
|
|
67696
|
+
if (parts.length > 2) {
|
|
67697
|
+
table = parts[0];
|
|
67698
|
+
column = parts.slice(1).join(".");
|
|
67699
|
+
}
|
|
67700
|
+
if (!column) {
|
|
67701
|
+
throw new Error(`Invalid field name: ${field}`);
|
|
67702
|
+
}
|
|
67703
|
+
const columnSchema = schema[column];
|
|
67704
|
+
if (client === "pg" /* POSTGRES */ && columnSchema?.externalType?.includes("money")) {
|
|
67705
|
+
return knex3.raw(
|
|
67706
|
+
`${quotedIdentifier(
|
|
67707
|
+
client,
|
|
67708
|
+
[table, column].join(".")
|
|
67709
|
+
)}::money::numeric as ${quote(client, field)}`
|
|
67710
|
+
);
|
|
67703
67711
|
}
|
|
67704
|
-
if (
|
|
67712
|
+
if (client === "mssql" /* MS_SQL */ && columnSchema?.type === "datetime" /* DATETIME */ && columnSchema.timeOnly) {
|
|
67705
67713
|
return knex3.raw(`CONVERT(varchar, ${field}, 108) as "${field}"`);
|
|
67706
67714
|
}
|
|
67707
|
-
|
|
67715
|
+
if (table) {
|
|
67716
|
+
return knex3.raw(
|
|
67717
|
+
`${quote(client, table)}.${quote(client, column)} as ${quote(
|
|
67718
|
+
client,
|
|
67719
|
+
field
|
|
67720
|
+
)}`
|
|
67721
|
+
);
|
|
67722
|
+
} else {
|
|
67723
|
+
return knex3.raw(`${quote(client, field)} as ${quote(client, field)}`);
|
|
67724
|
+
}
|
|
67708
67725
|
});
|
|
67709
67726
|
}
|
|
67710
67727
|
function getTableName(table) {
|
|
@@ -67780,9 +67797,10 @@ var InternalBuilder = class {
|
|
|
67780
67797
|
query = query[fnc](key, "ilike", `%${value}%`);
|
|
67781
67798
|
} else {
|
|
67782
67799
|
const rawFnc = `${fnc}Raw`;
|
|
67783
|
-
query = query[rawFnc](
|
|
67784
|
-
|
|
67785
|
-
|
|
67800
|
+
query = query[rawFnc](
|
|
67801
|
+
`LOWER(${quotedIdentifier(this.client, key)}) LIKE ?`,
|
|
67802
|
+
[`%${value.toLowerCase()}%`]
|
|
67803
|
+
);
|
|
67786
67804
|
}
|
|
67787
67805
|
};
|
|
67788
67806
|
const contains = (mode, any = false) => {
|
|
@@ -67829,7 +67847,10 @@ var InternalBuilder = class {
|
|
|
67829
67847
|
} else {
|
|
67830
67848
|
value[i] = `%${value[i]}%`;
|
|
67831
67849
|
}
|
|
67832
|
-
statement += (statement ? andOr : "") + `COALESCE(LOWER(${
|
|
67850
|
+
statement += (statement ? andOr : "") + `COALESCE(LOWER(${quotedIdentifier(
|
|
67851
|
+
this.client,
|
|
67852
|
+
key
|
|
67853
|
+
)}), '') LIKE ?`;
|
|
67833
67854
|
}
|
|
67834
67855
|
if (statement === "") {
|
|
67835
67856
|
return;
|
|
@@ -67857,9 +67878,10 @@ var InternalBuilder = class {
|
|
|
67857
67878
|
query = query[fnc](key, "ilike", `${value}%`);
|
|
67858
67879
|
} else {
|
|
67859
67880
|
const rawFnc = `${fnc}Raw`;
|
|
67860
|
-
query = query[rawFnc](
|
|
67861
|
-
|
|
67862
|
-
|
|
67881
|
+
query = query[rawFnc](
|
|
67882
|
+
`LOWER(${quotedIdentifier(this.client, key)}) LIKE ?`,
|
|
67883
|
+
[`${value.toLowerCase()}%`]
|
|
67884
|
+
);
|
|
67863
67885
|
}
|
|
67864
67886
|
});
|
|
67865
67887
|
}
|
|
@@ -67892,12 +67914,15 @@ var InternalBuilder = class {
|
|
|
67892
67914
|
const fnc = allOr ? "orWhereRaw" : "whereRaw";
|
|
67893
67915
|
if (this.client === "mssql" /* MS_SQL */) {
|
|
67894
67916
|
query = query[fnc](
|
|
67895
|
-
`CASE WHEN ${
|
|
67917
|
+
`CASE WHEN ${quotedIdentifier(
|
|
67918
|
+
this.client,
|
|
67919
|
+
key
|
|
67920
|
+
)} = ? THEN 1 ELSE 0 END = 1`,
|
|
67896
67921
|
[value]
|
|
67897
67922
|
);
|
|
67898
67923
|
} else {
|
|
67899
67924
|
query = query[fnc](
|
|
67900
|
-
`COALESCE(${
|
|
67925
|
+
`COALESCE(${quotedIdentifier(this.client, key)} = ?, FALSE)`,
|
|
67901
67926
|
[value]
|
|
67902
67927
|
);
|
|
67903
67928
|
}
|
|
@@ -67908,12 +67933,15 @@ var InternalBuilder = class {
|
|
|
67908
67933
|
const fnc = allOr ? "orWhereRaw" : "whereRaw";
|
|
67909
67934
|
if (this.client === "mssql" /* MS_SQL */) {
|
|
67910
67935
|
query = query[fnc](
|
|
67911
|
-
`CASE WHEN ${
|
|
67936
|
+
`CASE WHEN ${quotedIdentifier(
|
|
67937
|
+
this.client,
|
|
67938
|
+
key
|
|
67939
|
+
)} = ? THEN 1 ELSE 0 END = 0`,
|
|
67912
67940
|
[value]
|
|
67913
67941
|
);
|
|
67914
67942
|
} else {
|
|
67915
67943
|
query = query[fnc](
|
|
67916
|
-
`COALESCE(${
|
|
67944
|
+
`COALESCE(${quotedIdentifier(this.client, key)} != ?, TRUE)`,
|
|
67917
67945
|
[value]
|
|
67918
67946
|
);
|
|
67919
67947
|
}
|