prostgles-server 4.1.68 → 4.1.69
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/ViewHandler/getExistsFilters.js +2 -2
- package/dist/DboBuilder/ViewHandler/getExistsFilters.js.map +1 -1
- package/dist/DboBuilder/getSubscribeRelatedTables.d.ts.map +1 -1
- package/dist/DboBuilder/getSubscribeRelatedTables.js +20 -8
- package/dist/DboBuilder/getSubscribeRelatedTables.js.map +1 -1
- package/lib/DboBuilder/ViewHandler/getExistsFilters.ts +2 -2
- package/lib/DboBuilder/getSubscribeRelatedTables.ts +20 -8
- package/package.json +1 -1
- package/tests/client/PID.txt +1 -1
- package/tests/isomorphic_queries.ts +2 -1
- package/tests/server/DBoGenerated.d.ts +12 -0
- package/tests/server/index.ts +1 -0
- package/tests/server/init.sql +7 -0
- package/tests/server/package-lock.json +1 -1
- package/tests/server/publishTypeCheck.ts +1 -0
|
@@ -5,7 +5,7 @@ const prostgles_types_1 = require("prostgles-types");
|
|
|
5
5
|
const parseJoinPath_1 = require("./parseJoinPath");
|
|
6
6
|
const getExistsFilters = (filter, viewHandler) => {
|
|
7
7
|
/* Exists join filter */
|
|
8
|
-
const ERR = "Invalid exists filter. \nExpecting
|
|
8
|
+
const ERR = "Invalid exists filter. \nExpecting something like: \n | { $exists: { tableName.tableName2: Filter } } \n | { $exists: { \"**.tableName3\": Filter } }\n | { path: string[]; filter: AnyObject }";
|
|
9
9
|
const existsConfigs = (0, prostgles_types_1.getKeys)(filter)
|
|
10
10
|
.filter((k) => prostgles_types_1.EXISTS_KEYS.includes(k) && !!Object.keys(filter[k] ?? {}).length)
|
|
11
11
|
.map(key => {
|
|
@@ -45,7 +45,7 @@ const getExistsFilters = (filter, viewHandler) => {
|
|
|
45
45
|
const firstKeyIsATable = !!viewHandler.dboBuilder.dbo[firstKey];
|
|
46
46
|
const [path, targetTableFilter] = isDetailed ? [filterValue.path, filterValue.filter] : [(firstKeyIsATable ? [firstKey] : firstKey.split(".")), filterValue[firstKey]];
|
|
47
47
|
if (!path.length) {
|
|
48
|
-
throw ERR + "\nBut got: " + filterValue;
|
|
48
|
+
throw ERR + "\nBut got: " + JSON.stringify(filterValue);
|
|
49
49
|
}
|
|
50
50
|
return {
|
|
51
51
|
isJoined: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getExistsFilters.js","sourceRoot":"","sources":["../../../lib/DboBuilder/ViewHandler/getExistsFilters.ts"],"names":[],"mappings":";;;AAAA,qDAAmE;AAGnE,mDAAgD;AAEzC,MAAM,gBAAgB,GAAG,CAAC,MAAW,EAAE,WAAwB,EAAwB,EAAE;IAE9F,wBAAwB;IACxB,MAAM,GAAG,GAAG,
|
|
1
|
+
{"version":3,"file":"getExistsFilters.js","sourceRoot":"","sources":["../../../lib/DboBuilder/ViewHandler/getExistsFilters.ts"],"names":[],"mappings":";;;AAAA,qDAAmE;AAGnE,mDAAgD;AAEzC,MAAM,gBAAgB,GAAG,CAAC,MAAW,EAAE,WAAwB,EAAwB,EAAE;IAE9F,wBAAwB;IACxB,MAAM,GAAG,GAAG,kMAAkM,CAAA;IAC9M,MAAM,aAAa,GAAyB,IAAA,yBAAO,EAAC,MAAM,CAAC;SACxD,MAAM,CAAC,CAAC,CAAC,EAAoC,EAAE,CAAC,6BAAW,CAAC,QAAQ,CAAC,CAAe,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;SAC/H,GAAG,CAAC,GAAG,CAAC,EAAE;QAET,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpD,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAGhC;;;;WAIG;QACH,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QAEpG,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;QAE9B;;WAEG;QACH,IAAG,CAAC,QAAQ,EAAC;YACX,MAAM,MAAM,GAAG,sFAAsF,CAAA;YACrG,IAAG,UAAU,EAAC;gBACZ,MAAM,sCAAsC,MAAM,EAAE,CAAA;aACrD;YACD,MAAM,WAAW,GAAG,QAAQ,CAAC;YAC7B,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;gBAC5C,MAAM,SAAS,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,MAAM,EAAE,CAAA;aAClE;YACD,MAAM,GAAG,GAAuB;gBAC9B,QAAQ,EAAE,KAAK;gBACf,SAAS,EAAE,GAAiB;gBAC5B,iBAAiB,EAAE,WAAW,CAAC,QAAQ,CAAC;gBACxC,WAAW,EAAE,QAAQ;aACtB,CAAA;YACD,OAAO,GAAG,CAAC;SACZ;QAED;;WAEG;QACH,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChE,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC,GAAG,UAAU,CAAA,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAA,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;QAErK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,MAAM,GAAG,GAAG,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;SACzD;QAED,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,GAAiB;YAC5B,IAAI;YACJ,UAAU,EAAE,IAAA,6BAAa,EAAC;gBACxB,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,WAAW,CAAC,IAAI;gBAC3B,WAAW;gBACX,gBAAgB,EAAE,IAAI;aACvB,CAAC;YACF,iBAAiB;SAClB,CAAA;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,aAAa,CAAC;AACvB,CAAC,CAAA;AApEY,QAAA,gBAAgB,oBAoE5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSubscribeRelatedTables.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/getSubscribeRelatedTables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"getSubscribeRelatedTables.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/getSubscribeRelatedTables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAqB,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAwB,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAO,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGxD,KAAK,IAAI,GAAG;IACV,YAAY,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC;IACpD,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,SAAS,CAAC;QAClB,MAAM,EAAE,kBAAkB,EAAE,CAAC;KAC9B,CAAC;CACH,CAAA;AACD,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,IAAI,gDAyKjJ"}
|
|
@@ -159,14 +159,26 @@ async function getSubscribeRelatedTables({ selectParams, filter, localParams, ta
|
|
|
159
159
|
return viewOptions;
|
|
160
160
|
}
|
|
161
161
|
exports.getSubscribeRelatedTables = getSubscribeRelatedTables;
|
|
162
|
+
/**
|
|
163
|
+
* TODO: ADD TESTS!
|
|
164
|
+
* result = [
|
|
165
|
+
* { table, on: parsedPath[0] }
|
|
166
|
+
* ...parsedPath.map(p => ({ table: p.table, on: reversedOn(parsedPath[i+1].on) }))
|
|
167
|
+
* ]
|
|
168
|
+
*/
|
|
162
169
|
const reverseParsedPath = (parsedPath, table) => {
|
|
163
|
-
const
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
170
|
+
const newPPath = [
|
|
171
|
+
{ table, on: [{}] },
|
|
172
|
+
...(parsedPath ?? [])
|
|
173
|
+
];
|
|
174
|
+
return newPPath.map((pp, i) => {
|
|
175
|
+
const nextPath = newPPath[i + 1];
|
|
176
|
+
if (!nextPath)
|
|
177
|
+
return undefined;
|
|
178
|
+
return {
|
|
179
|
+
table: pp.table,
|
|
180
|
+
on: (0, parseJoinPath_1.reverseJoinOn)(nextPath.on)
|
|
181
|
+
};
|
|
182
|
+
}).filter(prostgles_types_1.isDefined).reverse();
|
|
171
183
|
};
|
|
172
184
|
//# sourceMappingURL=getSubscribeRelatedTables.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSubscribeRelatedTables.js","sourceRoot":"","sources":["../../lib/DboBuilder/getSubscribeRelatedTables.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"getSubscribeRelatedTables.js","sourceRoot":"","sources":["../../lib/DboBuilder/getSubscribeRelatedTables.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import { parseJoinPath } from "./parseJoinPath";
|
|
|
6
6
|
export const getExistsFilters = (filter: any, viewHandler: ViewHandler): ExistsFilterConfig[] => {
|
|
7
7
|
|
|
8
8
|
/* Exists join filter */
|
|
9
|
-
const ERR = "Invalid exists filter. \nExpecting
|
|
9
|
+
const ERR = "Invalid exists filter. \nExpecting something like: \n | { $exists: { tableName.tableName2: Filter } } \n | { $exists: { \"**.tableName3\": Filter } }\n | { path: string[]; filter: AnyObject }"
|
|
10
10
|
const existsConfigs: ExistsFilterConfig[] = getKeys(filter)
|
|
11
11
|
.filter((k ): k is typeof EXISTS_KEYS[number] => EXISTS_KEYS.includes(k as EXISTS_KEY) && !!Object.keys(filter[k] ?? {}).length)
|
|
12
12
|
.map(key => {
|
|
@@ -53,7 +53,7 @@ export const getExistsFilters = (filter: any, viewHandler: ViewHandler): ExistsF
|
|
|
53
53
|
const [path, targetTableFilter] = isDetailed? [filterValue.path, filterValue.filter] : [(firstKeyIsATable? [firstKey] : firstKey.split(".")), filterValue[firstKey]];
|
|
54
54
|
|
|
55
55
|
if (!path.length) {
|
|
56
|
-
throw ERR + "\nBut got: " + filterValue;
|
|
56
|
+
throw ERR + "\nBut got: " + JSON.stringify(filterValue);
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
return {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AnyObject, asName, SubscribeParams } from "prostgles-types";
|
|
1
|
+
import { AnyObject, asName, isDefined, SubscribeParams } from "prostgles-types";
|
|
2
2
|
import { Filter, LocalParams, makeErrorFromPGError, ExistsFilterConfig } from "../DboBuilder";
|
|
3
3
|
import { TableRule } from "../PublishParser";
|
|
4
4
|
import { log, ViewSubscriptionOptions } from "../PubSubManager/PubSubManager";
|
|
@@ -189,12 +189,24 @@ export async function getSubscribeRelatedTables(this: ViewHandler, { selectParam
|
|
|
189
189
|
return viewOptions;
|
|
190
190
|
}
|
|
191
191
|
|
|
192
|
+
/**
|
|
193
|
+
* TODO: ADD TESTS!
|
|
194
|
+
* result = [
|
|
195
|
+
* { table, on: parsedPath[0] }
|
|
196
|
+
* ...parsedPath.map(p => ({ table: p.table, on: reversedOn(parsedPath[i+1].on) }))
|
|
197
|
+
* ]
|
|
198
|
+
*/
|
|
192
199
|
const reverseParsedPath = (parsedPath: ParsedJoinPath[], table: string) => {
|
|
193
|
-
const [
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
+
const newPPath: ParsedJoinPath[] = [
|
|
201
|
+
{ table, on: [{}] },
|
|
202
|
+
...(parsedPath ?? [])
|
|
203
|
+
]
|
|
204
|
+
return newPPath.map((pp, i) => {
|
|
205
|
+
const nextPath = newPPath[i+1];
|
|
206
|
+
if(!nextPath) return undefined;
|
|
207
|
+
return {
|
|
208
|
+
table: pp.table,
|
|
209
|
+
on: reverseJoinOn(nextPath.on)
|
|
210
|
+
}
|
|
211
|
+
}).filter(isDefined).reverse();
|
|
200
212
|
}
|
package/package.json
CHANGED
package/tests/client/PID.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
12910
|
|
@@ -512,6 +512,18 @@ export type DBSchemaGenerated = {
|
|
|
512
512
|
tr1_id?: null | number;
|
|
513
513
|
};
|
|
514
514
|
};
|
|
515
|
+
tr3: {
|
|
516
|
+
is_view: false;
|
|
517
|
+
select: true;
|
|
518
|
+
insert: true;
|
|
519
|
+
update: true;
|
|
520
|
+
delete: true;
|
|
521
|
+
columns: {
|
|
522
|
+
id?: number;
|
|
523
|
+
t2?: null | string;
|
|
524
|
+
tr2_id?: null | number;
|
|
525
|
+
};
|
|
526
|
+
};
|
|
515
527
|
trades: {
|
|
516
528
|
is_view: false;
|
|
517
529
|
select: true;
|
package/tests/server/index.ts
CHANGED
package/tests/server/init.sql
CHANGED
|
@@ -194,6 +194,13 @@ CREATE TABLE IF NOT EXISTS tr2 (
|
|
|
194
194
|
UNIQUE(id, t1)
|
|
195
195
|
);
|
|
196
196
|
|
|
197
|
+
DROP TABLE IF EXISTS tr3 CASCADE;
|
|
198
|
+
CREATE TABLE IF NOT EXISTS tr3 (
|
|
199
|
+
id SERIAL PRIMARY KEY,
|
|
200
|
+
tr2_id INTEGER REFERENCES tr2(id),
|
|
201
|
+
t2 TEXT
|
|
202
|
+
);
|
|
203
|
+
|
|
197
204
|
DROP TABLE IF EXISTS obj_table CASCADE;
|
|
198
205
|
CREATE TABLE IF NOT EXISTS obj_table (
|
|
199
206
|
id SERIAL PRIMARY KEY,
|