prostgles-server 4.1.51 → 4.1.52
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/DboBuilder/QueryBuilder/getJoinQuery.js +2 -2
- package/dist/DboBuilder/QueryBuilder/getJoinQuery.js.map +1 -1
- package/dist/DboBuilder/QueryBuilder/getSelectQuery.d.ts +7 -1
- package/dist/DboBuilder/QueryBuilder/getSelectQuery.d.ts.map +1 -1
- package/dist/DboBuilder/QueryBuilder/getSelectQuery.js +30 -18
- package/dist/DboBuilder/QueryBuilder/getSelectQuery.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/prepareSortItems.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/prepareSortItems.js +2 -1
- package/dist/DboBuilder/ViewHandler/prepareSortItems.js.map +1 -1
- package/lib/DboBuilder/QueryBuilder/getJoinQuery.ts +2 -2
- package/lib/DboBuilder/QueryBuilder/getSelectQuery.ts +39 -20
- package/lib/DboBuilder/ViewHandler/prepareSortItems.ts +2 -2
- package/package.json +1 -1
- package/tests/client/PID.txt +1 -1
- package/tests/isomorphic_queries.ts +21 -1
- package/tests/server/package-lock.json +1 -1
|
@@ -73,7 +73,7 @@ const getJoinQuery = (viewHandler, { q1, q2, depth }) => {
|
|
|
73
73
|
return [
|
|
74
74
|
`SELECT `,
|
|
75
75
|
` /* Join fields + select */`,
|
|
76
|
-
|
|
76
|
+
...(0, getSelectQuery_1.indentLines)(rootSelectItems.map(s => s.query), { appendCommas: true }),
|
|
77
77
|
`FROM ${table.name} ${table.alias}`,
|
|
78
78
|
...targetQueryExtraQueries
|
|
79
79
|
];
|
|
@@ -86,7 +86,7 @@ const getJoinQuery = (viewHandler, { q1, q2, depth }) => {
|
|
|
86
86
|
});
|
|
87
87
|
const queryLines = [
|
|
88
88
|
`${joinType} JOIN (`,
|
|
89
|
-
...(0, getSelectQuery_1.indentLines)(innerQuery
|
|
89
|
+
...(0, getSelectQuery_1.indentLines)(innerQuery),
|
|
90
90
|
`) ${targetTableAlias}`,
|
|
91
91
|
`ON ${(0, getTableJoinQuery_1.getJoinOnCondition)({
|
|
92
92
|
on: firstJoinTablePath.on,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getJoinQuery.js","sourceRoot":"","sources":["../../../lib/DboBuilder/QueryBuilder/getJoinQuery.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"getJoinQuery.js","sourceRoot":"","sources":["../../../lib/DboBuilder/QueryBuilder/getJoinQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,13 @@ import { ViewHandler } from "../ViewHandler/ViewHandler";
|
|
|
5
5
|
* No validation/authorisation at this point
|
|
6
6
|
* */
|
|
7
7
|
export declare function getSelectQuery(viewHandler: ViewHandler, q: NewQuery, depth: number | undefined, selectParamsGroupBy: boolean): string;
|
|
8
|
-
|
|
8
|
+
type IndentLinesOpts = {
|
|
9
|
+
numberOfSpaces?: number;
|
|
10
|
+
indentStr?: string;
|
|
11
|
+
appendCommas?: boolean;
|
|
12
|
+
};
|
|
13
|
+
export declare const indentLines: (strArr: (string | undefined | null)[], { numberOfSpaces, indentStr, appendCommas }?: IndentLinesOpts) => string[];
|
|
9
14
|
export declare const getTableAliasAsName: (q: NewQuery) => string;
|
|
10
15
|
export declare const getRootGroupBy: (q: NewQuery, selectParamsGroupBy?: boolean) => string[];
|
|
16
|
+
export {};
|
|
11
17
|
//# sourceMappingURL=getSelectQuery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSelectQuery.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/QueryBuilder/getSelectQuery.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAe,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAGzD;;;KAGK;AACL,wBAAgB,cAAc,CAC5B,WAAW,EAAE,WAAW,EACxB,CAAC,EAAE,QAAQ,EACX,KAAK,oBAAI,EACT,mBAAmB,EAAE,OAAO,GAC3B,MAAM,
|
|
1
|
+
{"version":3,"file":"getSelectQuery.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/QueryBuilder/getSelectQuery.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAe,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAGzD;;;KAGK;AACL,wBAAgB,cAAc,CAC5B,WAAW,EAAE,WAAW,EACxB,CAAC,EAAE,QAAQ,EACX,KAAK,oBAAI,EACT,mBAAmB,EAAE,OAAO,GAC3B,MAAM,CAyDR;AAGD,KAAK,eAAe,GAAG;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAA;AACD,eAAO,MAAM,WAAW,WAAY,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,gDAAkE,eAAe,KAAQ,MAAM,EAW/J,CAAA;AAGD,eAAO,MAAM,mBAAmB,MAAO,QAAQ,WAA6B,CAAC;AAG7E,eAAO,MAAM,cAAc,MAAO,QAAQ,wBAAwB,OAAO,aAmBxE,CAAA"}
|
|
@@ -25,23 +25,25 @@ function getSelectQuery(viewHandler, q, depth = 0, selectParamsGroupBy) {
|
|
|
25
25
|
...parsed
|
|
26
26
|
};
|
|
27
27
|
}) ?? [];
|
|
28
|
+
const selectItems = rootSelect.concat(parsedJoins?.map(join => {
|
|
29
|
+
const joinAlias = join.tableAlias || join.table;
|
|
30
|
+
const selectedFields = join.select.filter(s => s.selected).map(s => (0, QueryBuilder_1.asNameAlias)(s.alias, joinAlias));
|
|
31
|
+
/** Used to ensure the json array object has named properties */
|
|
32
|
+
const jsonAggSelect = `SELECT x FROM (SELECT ${selectedFields}) as x`;
|
|
33
|
+
/** Used to:
|
|
34
|
+
* 1) prevent arrays with a single null element when no rows were matched
|
|
35
|
+
* 2) allow nested limit
|
|
36
|
+
* */
|
|
37
|
+
const joinAggNonNullArrayElemFilter = join.targetTableJoinFields
|
|
38
|
+
.map(f => `${joinAlias}.${(0, getJoinQuery_1.getJoinCol)(f).alias} IS NOT NULL`)
|
|
39
|
+
.concat(join.limitFieldName ? [`${(0, QueryBuilder_1.asNameAlias)(join.limitFieldName, joinAlias)} <= ${join.limit}`] : [])
|
|
40
|
+
.join(" AND ");
|
|
41
|
+
const nestedOrderBy = join.orderByItems.length ? `ORDER BY ${join.orderByItems.map(o => (0, QueryBuilder_1.asNameAlias)(o.key, joinAlias))}` : "";
|
|
42
|
+
return (`COALESCE(json_agg((${jsonAggSelect}) ${nestedOrderBy}) FILTER (WHERE ${joinAggNonNullArrayElemFilter}), '[]'::JSON) as ${joinAlias}`);
|
|
43
|
+
}) ?? []);
|
|
28
44
|
const query = [
|
|
29
|
-
`SELECT
|
|
30
|
-
|
|
31
|
-
const selectedFields = join.select.filter(s => s.selected).map(s => (0, QueryBuilder_1.asNameAlias)(s.alias, joinAlias));
|
|
32
|
-
/** Used to ensure the json array object has named properties */
|
|
33
|
-
const jsonAggSelect = `SELECT x FROM (SELECT ${selectedFields}) as x`;
|
|
34
|
-
/** Used to:
|
|
35
|
-
* 1) prevent arrays with a single null element when no rows were matched
|
|
36
|
-
* 2) allow nested limit
|
|
37
|
-
* */
|
|
38
|
-
const joinAggNonNullArrayElemFilter = join.targetTableJoinFields
|
|
39
|
-
.map(f => `${joinAlias}.${(0, getJoinQuery_1.getJoinCol)(f).alias} IS NOT NULL`)
|
|
40
|
-
.concat(join.limitFieldName ? [`${(0, QueryBuilder_1.asNameAlias)(join.limitFieldName, joinAlias)} <= ${join.limit}`] : [])
|
|
41
|
-
.join(" AND ");
|
|
42
|
-
const nestedOrderBy = join.orderByItems.length ? `ORDER BY ${join.orderByItems.map(o => (0, QueryBuilder_1.asNameAlias)(o.key, joinAlias))}` : "";
|
|
43
|
-
return (`COALESCE(json_agg((${jsonAggSelect}) ${nestedOrderBy}) FILTER (WHERE ${joinAggNonNullArrayElemFilter}), '[]'::JSON) as ${joinAlias}`);
|
|
44
|
-
}) ?? [])}`,
|
|
45
|
+
`SELECT`,
|
|
46
|
+
...(0, exports.indentLines)(selectItems, { appendCommas: true }),
|
|
45
47
|
`FROM ( `,
|
|
46
48
|
` SELECT * `,
|
|
47
49
|
` FROM ${q.table}`,
|
|
@@ -58,9 +60,19 @@ function getSelectQuery(viewHandler, q, depth = 0, selectParamsGroupBy) {
|
|
|
58
60
|
}
|
|
59
61
|
exports.getSelectQuery = getSelectQuery;
|
|
60
62
|
const indentLine = (numberOfSpaces, str, indentStr = " ") => new Array(numberOfSpaces).fill(indentStr).join("") + str;
|
|
61
|
-
const indentLines = (strArr, numberOfSpaces =
|
|
63
|
+
const indentLines = (strArr, { numberOfSpaces = 2, indentStr = " ", appendCommas = false } = {}) => {
|
|
64
|
+
const nonEmptyLines = strArr
|
|
65
|
+
.filter(v => v);
|
|
66
|
+
return nonEmptyLines.map((str, idx) => {
|
|
67
|
+
const res = indentLine(numberOfSpaces, str, indentStr);
|
|
68
|
+
if (appendCommas && idx < nonEmptyLines.length - 1) {
|
|
69
|
+
return `${res},`;
|
|
70
|
+
}
|
|
71
|
+
return res;
|
|
72
|
+
});
|
|
73
|
+
};
|
|
62
74
|
exports.indentLines = indentLines;
|
|
63
|
-
const indentLinesToString = (strArr, numberOfSpaces = 0, separator = " \n ", indentStr = " ") => (0, exports.indentLines)(strArr, numberOfSpaces, indentStr).join(separator);
|
|
75
|
+
const indentLinesToString = (strArr, numberOfSpaces = 0, separator = " \n ", indentStr = " ") => (0, exports.indentLines)(strArr, { numberOfSpaces, indentStr }).join(separator);
|
|
64
76
|
const getTableAlias = (q) => !q.tableAlias ? q.table : `${q.tableAlias || ""}_${q.table}`;
|
|
65
77
|
const getTableAliasAsName = (q) => (0, prostgles_types_1.asName)(getTableAlias(q));
|
|
66
78
|
exports.getTableAliasAsName = getTableAliasAsName;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSelectQuery.js","sourceRoot":"","sources":["../../../lib/DboBuilder/QueryBuilder/getSelectQuery.ts"],"names":[],"mappings":";;;AACA,iDAA+C;AAC/C,qDAAoD;AACpD,iDAAuD;AAEvD,iDAA0D;AAE1D;;;KAGK;AACL,SAAgB,cAAc,CAC5B,WAAwB,EACxB,CAAW,EACX,KAAK,GAAG,CAAC,EACT,mBAA4B;IAG5B,MAAM,aAAa,GAAG,mBAAmB,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC;IAC/D,MAAM,cAAc,GAAG,4BAA4B,CAAC;IACpD,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,IAAA,wBAAM,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAE7H,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE;QACxC,MAAM,MAAM,GAAG,IAAA,2BAAY,EACzB,WAAW,EAAE;YACX,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE;YACxC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE;YACb,KAAK,EAAE,KAAK,GAAG,CAAC;YAChB,mBAAmB,EAAE,aAAa;SACnC,CACF,CAAC;QACF,OAAO;YACL,GAAG,EAAE;YACL,GAAG,MAAM;SACV,CAAA;IACH,CAAC,CAAC,IAAI,EAAE,CAAC;IAET,MAAM,
|
|
1
|
+
{"version":3,"file":"getSelectQuery.js","sourceRoot":"","sources":["../../../lib/DboBuilder/QueryBuilder/getSelectQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepareSortItems.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/ViewHandler/prepareSortItems.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAwC,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"prepareSortItems.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/ViewHandler/prepareSortItems.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAwC,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAe,MAAM,8BAA8B,CAAC;AAI9F,eAAO,MAAM,gBAAgB,eACf,OAAO,GAAG,SAAS,gBACjB,MAAM,EAAE,cACV,MAAM,GAAG,SAAS,UACtB,mBAAmB,EAAE,eAChB,YAAY,EAAE,KAC1B,QAAQ,EA+FV,CAAA"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.prepareSortItems = void 0;
|
|
4
4
|
const dist_1 = require("prostgles-types/dist");
|
|
5
|
+
const QueryBuilder_1 = require("../QueryBuilder/QueryBuilder");
|
|
5
6
|
/* This relates only to SELECT */
|
|
6
7
|
const prepareSortItems = (rawOrderBy, allowed_cols, tableAlias, select, joinQueries) => {
|
|
7
8
|
if (!rawOrderBy)
|
|
@@ -49,7 +50,7 @@ const prepareSortItems = (rawOrderBy, allowed_cols, tableAlias, select, joinQuer
|
|
|
49
50
|
const nestedField = sortableNestedColumns.find(f => f.key === key);
|
|
50
51
|
if (nestedField) {
|
|
51
52
|
const { tableAlias, table, selectItem } = nestedField;
|
|
52
|
-
const fieldQuery = `${asc ? "MIN" : "MAX"}(${tableAlias ?? table}
|
|
53
|
+
const fieldQuery = `${asc ? "MIN" : "MAX"}(${(0, QueryBuilder_1.asNameAlias)(selectItem.alias, tableAlias ?? table)})`;
|
|
53
54
|
return {
|
|
54
55
|
key,
|
|
55
56
|
type: "query",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepareSortItems.js","sourceRoot":"","sources":["../../../lib/DboBuilder/ViewHandler/prepareSortItems.ts"],"names":[],"mappings":";;;AAAA,+CAAqF;
|
|
1
|
+
{"version":3,"file":"prepareSortItems.js","sourceRoot":"","sources":["../../../lib/DboBuilder/ViewHandler/prepareSortItems.ts"],"names":[],"mappings":"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"}
|
|
@@ -88,7 +88,7 @@ export const getJoinQuery = (viewHandler: ViewHandler, { q1, q2, depth }: Args):
|
|
|
88
88
|
return [
|
|
89
89
|
`SELECT `,
|
|
90
90
|
` /* Join fields + select */`,
|
|
91
|
-
|
|
91
|
+
...indentLines(rootSelectItems.map(s => s.query), { appendCommas: true }),
|
|
92
92
|
`FROM ${table.name} ${table.alias}`,
|
|
93
93
|
...targetQueryExtraQueries
|
|
94
94
|
]
|
|
@@ -103,7 +103,7 @@ export const getJoinQuery = (viewHandler: ViewHandler, { q1, q2, depth }: Args):
|
|
|
103
103
|
|
|
104
104
|
const queryLines = [
|
|
105
105
|
`${joinType} JOIN (`,
|
|
106
|
-
...indentLines(innerQuery
|
|
106
|
+
...indentLines(innerQuery),
|
|
107
107
|
`) ${targetTableAlias}`,
|
|
108
108
|
`ON ${getJoinOnCondition({
|
|
109
109
|
on: firstJoinTablePath.on,
|
|
@@ -34,26 +34,29 @@ export function getSelectQuery(
|
|
|
34
34
|
...parsed
|
|
35
35
|
}
|
|
36
36
|
}) ?? [];
|
|
37
|
+
|
|
38
|
+
const selectItems = rootSelect.concat(
|
|
39
|
+
parsedJoins?.map(join => {
|
|
40
|
+
const joinAlias = join.tableAlias || join.table
|
|
41
|
+
const selectedFields = join.select.filter(s => s.selected).map(s => asNameAlias(s.alias, joinAlias));
|
|
42
|
+
/** Used to ensure the json array object has named properties */
|
|
43
|
+
const jsonAggSelect = `SELECT x FROM (SELECT ${selectedFields}) as x`;
|
|
44
|
+
/** Used to:
|
|
45
|
+
* 1) prevent arrays with a single null element when no rows were matched
|
|
46
|
+
* 2) allow nested limit
|
|
47
|
+
* */
|
|
48
|
+
const joinAggNonNullArrayElemFilter = join.targetTableJoinFields
|
|
49
|
+
.map(f => `${joinAlias}.${getJoinCol(f).alias} IS NOT NULL`)
|
|
50
|
+
.concat(join.limitFieldName? [`${asNameAlias(join.limitFieldName, joinAlias)} <= ${join.limit}`] : [])
|
|
51
|
+
.join(" AND ");
|
|
52
|
+
|
|
53
|
+
const nestedOrderBy = join.orderByItems.length? `ORDER BY ${join.orderByItems.map(o => asNameAlias(o.key, joinAlias))}` : ""
|
|
54
|
+
return (`COALESCE(json_agg((${jsonAggSelect}) ${nestedOrderBy}) FILTER (WHERE ${joinAggNonNullArrayElemFilter}), '[]'::JSON) as ${joinAlias}`);
|
|
55
|
+
}) ?? []);
|
|
37
56
|
|
|
38
57
|
const query = [
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
const joinAlias = join.tableAlias || join.table
|
|
42
|
-
const selectedFields = join.select.filter(s => s.selected).map(s => asNameAlias(s.alias, joinAlias));
|
|
43
|
-
/** Used to ensure the json array object has named properties */
|
|
44
|
-
const jsonAggSelect = `SELECT x FROM (SELECT ${selectedFields}) as x`;
|
|
45
|
-
/** Used to:
|
|
46
|
-
* 1) prevent arrays with a single null element when no rows were matched
|
|
47
|
-
* 2) allow nested limit
|
|
48
|
-
* */
|
|
49
|
-
const joinAggNonNullArrayElemFilter = join.targetTableJoinFields
|
|
50
|
-
.map(f => `${joinAlias}.${getJoinCol(f).alias} IS NOT NULL`)
|
|
51
|
-
.concat(join.limitFieldName? [`${asNameAlias(join.limitFieldName, joinAlias)} <= ${join.limit}`] : [])
|
|
52
|
-
.join(" AND ");
|
|
53
|
-
|
|
54
|
-
const nestedOrderBy = join.orderByItems.length? `ORDER BY ${join.orderByItems.map(o => asNameAlias(o.key, joinAlias))}` : ""
|
|
55
|
-
return (`COALESCE(json_agg((${jsonAggSelect}) ${nestedOrderBy}) FILTER (WHERE ${joinAggNonNullArrayElemFilter}), '[]'::JSON) as ${joinAlias}`);
|
|
56
|
-
}) ?? [])}`
|
|
58
|
+
`SELECT`
|
|
59
|
+
,...indentLines(selectItems, { appendCommas: true })
|
|
57
60
|
, `FROM ( `
|
|
58
61
|
, ` SELECT * `
|
|
59
62
|
, ` FROM ${q.table}`
|
|
@@ -71,8 +74,24 @@ export function getSelectQuery(
|
|
|
71
74
|
}
|
|
72
75
|
|
|
73
76
|
const indentLine = (numberOfSpaces: number, str: string, indentStr = " "): string => new Array(numberOfSpaces).fill(indentStr).join("") + str;
|
|
74
|
-
|
|
75
|
-
|
|
77
|
+
type IndentLinesOpts = {
|
|
78
|
+
numberOfSpaces?: number;
|
|
79
|
+
indentStr?: string;
|
|
80
|
+
appendCommas?: boolean;
|
|
81
|
+
}
|
|
82
|
+
export const indentLines = (strArr: (string | undefined | null)[], { numberOfSpaces = 2, indentStr = " ", appendCommas = false }: IndentLinesOpts = {}): string[] => {
|
|
83
|
+
const nonEmptyLines = strArr
|
|
84
|
+
.filter(v => v);
|
|
85
|
+
|
|
86
|
+
return nonEmptyLines.map((str, idx) => {
|
|
87
|
+
const res = indentLine(numberOfSpaces, str as string, indentStr);
|
|
88
|
+
if(appendCommas && idx < nonEmptyLines.length - 1){
|
|
89
|
+
return `${res},`;
|
|
90
|
+
}
|
|
91
|
+
return res;
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
const indentLinesToString = (strArr: (string | undefined | null)[], numberOfSpaces = 0, separator = " \n ", indentStr = " ") => indentLines(strArr, { numberOfSpaces, indentStr }).join(separator);
|
|
76
95
|
const getTableAlias = (q: NewQuery) => !q.tableAlias ? q.table : `${q.tableAlias || ""}_${q.table}`;
|
|
77
96
|
export const getTableAliasAsName = (q: NewQuery) => asName(getTableAlias(q));
|
|
78
97
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { OrderBy, asName, isDefined, isEmpty, isObject } from "prostgles-types/dist";
|
|
2
2
|
import { SortItem } from "../../DboBuilder";
|
|
3
|
-
import { NewQueryJoin, SelectItemValidated } from "../QueryBuilder/QueryBuilder";
|
|
3
|
+
import { NewQueryJoin, SelectItemValidated, asNameAlias } from "../QueryBuilder/QueryBuilder";
|
|
4
4
|
import { asValue } from "../../PubSubManager/PubSubManager";
|
|
5
5
|
|
|
6
6
|
/* This relates only to SELECT */
|
|
@@ -60,7 +60,7 @@ export const prepareSortItems = (
|
|
|
60
60
|
const nestedField = sortableNestedColumns.find(f => f.key === key);
|
|
61
61
|
if (nestedField) {
|
|
62
62
|
const { tableAlias, table, selectItem } = nestedField;
|
|
63
|
-
const fieldQuery = `${asc? "MIN" : "MAX"}(${tableAlias ?? table}
|
|
63
|
+
const fieldQuery = `${asc? "MIN" : "MAX"}(${asNameAlias(selectItem.alias, tableAlias ?? table)})`;
|
|
64
64
|
return {
|
|
65
65
|
key,
|
|
66
66
|
type: "query",
|
package/package.json
CHANGED
package/tests/client/PID.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
6917
|
|
@@ -891,7 +891,7 @@ export default async function isomorphic(db: Required<DBHandlerServer> | Require
|
|
|
891
891
|
});
|
|
892
892
|
|
|
893
893
|
await tryRun("Related table subscribe", async () => {
|
|
894
|
-
const sub = await
|
|
894
|
+
const sub = await db.tr1.subscribe!({}, {
|
|
895
895
|
select: {
|
|
896
896
|
"*": 1,
|
|
897
897
|
tr2: "*"
|
|
@@ -903,6 +903,26 @@ export default async function isomorphic(db: Required<DBHandlerServer> | Require
|
|
|
903
903
|
await sub.unsubscribe();
|
|
904
904
|
});
|
|
905
905
|
|
|
906
|
+
await tryRun("Nested sort by computed col", async () => {
|
|
907
|
+
const getSorted = (asc = false) => db.tr1.find!({}, {
|
|
908
|
+
select: {
|
|
909
|
+
"*": 1,
|
|
910
|
+
tr2: {
|
|
911
|
+
maxId: { $max: ["id"] }
|
|
912
|
+
}
|
|
913
|
+
},
|
|
914
|
+
orderBy: {
|
|
915
|
+
"tr2.maxId": asc
|
|
916
|
+
}
|
|
917
|
+
})
|
|
918
|
+
const sortedAsc = await getSorted(true);
|
|
919
|
+
const sortedDesc = await getSorted(false);
|
|
920
|
+
assert.deepStrictEqual(
|
|
921
|
+
sortedAsc.map(d => d.tr2[0].maxId).slice(0).reverse(),
|
|
922
|
+
sortedDesc.map(d => d.tr2[0].maxId)
|
|
923
|
+
);
|
|
924
|
+
})
|
|
925
|
+
|
|
906
926
|
await tryRun("Reference column deep nested insert", async () => {
|
|
907
927
|
|
|
908
928
|
const pr = await db.items4a.insert!({
|