prostgles-server 4.2.294 → 4.2.296
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/subscribe.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/subscribe.js +1 -0
- package/dist/DboBuilder/ViewHandler/subscribe.js.map +1 -1
- package/dist/PubSubManager/PubSubManager.d.ts +3 -1
- package/dist/PubSubManager/PubSubManager.d.ts.map +1 -1
- package/dist/PubSubManager/PubSubManager.js.map +1 -1
- package/dist/PubSubManager/addSub.d.ts.map +1 -1
- package/dist/PubSubManager/addSub.js +2 -1
- package/dist/PubSubManager/addSub.js.map +1 -1
- package/dist/PubSubManager/getPubSubManagerInitQuery.d.ts.map +1 -1
- package/dist/PubSubManager/getPubSubManagerInitQuery.js +9 -151
- package/dist/PubSubManager/getPubSubManagerInitQuery.js.map +1 -1
- package/dist/PubSubManager/init/getDataWatchFunctionQuery.d.ts +2 -0
- package/dist/PubSubManager/init/getDataWatchFunctionQuery.d.ts.map +1 -0
- package/dist/PubSubManager/init/getDataWatchFunctionQuery.js +187 -0
- package/dist/PubSubManager/init/getDataWatchFunctionQuery.js.map +1 -0
- package/dist/PubSubManager/initPubSubManager.d.ts.map +1 -1
- package/dist/PubSubManager/initPubSubManager.js +1 -1
- package/dist/PubSubManager/initPubSubManager.js.map +1 -1
- package/dist/PubSubManager/notifListener.d.ts.map +1 -1
- package/dist/PubSubManager/notifListener.js +9 -1
- package/dist/PubSubManager/notifListener.js.map +1 -1
- package/lib/DboBuilder/ViewHandler/subscribe.ts +3 -2
- package/lib/PubSubManager/PubSubManager.ts +3 -0
- package/lib/PubSubManager/addSub.ts +2 -1
- package/lib/PubSubManager/getPubSubManagerInitQuery.ts +6 -148
- package/lib/PubSubManager/init/getDataWatchFunctionQuery.ts +183 -0
- package/lib/PubSubManager/initPubSubManager.ts +5 -2
- package/lib/PubSubManager/notifListener.ts +18 -3
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscribe.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/ViewHandler/subscribe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EACL,MAAM,EAGN,WAAW,EACZ,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,KAAK,MAAM,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,GAAG,CAAC;AAC1C,MAAM,MAAM,UAAU,GAClB;IACE,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CAChC,GACD,MAAM,CAAC;AAEX,eAAO,MAAM,aAAa,eAAgB,UAAU,GAAG,SAAS,KAAG,MAAM,GAAG,SAE3E,CAAC;AACF,eAAO,MAAM,iBAAiB,gBACf,UAAU,GAAG,SAAS,eACtB,UAAU,GAAG,SAAS,wBAGpC,CAAC;AACF,eAAO,MAAM,eAAe,gBACb,UAAU,GAAG,SAAS,KAClC,QAAQ,UAAU,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,SAS5C,CAAC;AAEF,iBAAe,SAAS,CACtB,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,eAAe,EACvB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,GAAG,CAAA;CAAE,CAAC,CAAC;AACvC,iBAAe,SAAS,CACtB,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,eAAe,EACvB,UAAU,EAAE,SAAS,EACrB,WAAW,EAAE,eAAe,GAAG,SAAS,EACxC,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,oBAAoB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"subscribe.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/ViewHandler/subscribe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EACL,MAAM,EAGN,WAAW,EACZ,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,KAAK,MAAM,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,GAAG,CAAC;AAC1C,MAAM,MAAM,UAAU,GAClB;IACE,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CAChC,GACD,MAAM,CAAC;AAEX,eAAO,MAAM,aAAa,eAAgB,UAAU,GAAG,SAAS,KAAG,MAAM,GAAG,SAE3E,CAAC;AACF,eAAO,MAAM,iBAAiB,gBACf,UAAU,GAAG,SAAS,eACtB,UAAU,GAAG,SAAS,wBAGpC,CAAC;AACF,eAAO,MAAM,eAAe,gBACb,UAAU,GAAG,SAAS,KAClC,QAAQ,UAAU,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,SAS5C,CAAC;AAEF,iBAAe,SAAS,CACtB,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,eAAe,EACvB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,GAAG,CAAA;CAAE,CAAC,CAAC;AACvC,iBAAe,SAAS,CACtB,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,eAAe,EACvB,UAAU,EAAE,SAAS,EACrB,WAAW,EAAE,eAAe,GAAG,SAAS,EACxC,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAyHjC,OAAO,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -59,6 +59,7 @@ async function subscribe(filter, params, localFuncs, table_rules, localParams) {
|
|
|
59
59
|
selectParams: { ...selectParams },
|
|
60
60
|
subscribeOptions: (0, getValidatedSubscribeOptions_1.getValidatedSubscribeOptions)({ actions, skipFirst, throttle, throttleOpts }, table_rules?.subscribe),
|
|
61
61
|
lastPushed: 0,
|
|
62
|
+
newQuery,
|
|
62
63
|
};
|
|
63
64
|
const pubSubManager = await this.dboBuilder.getPubSubManager();
|
|
64
65
|
if (!localFuncs) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscribe.js","sourceRoot":"","sources":["../../../lib/DboBuilder/ViewHandler/subscribe.ts"],"names":[],"mappings":";;;AAEA,8CAKuB;AACvB,4EAAyE;AAGzE,iFAA8E;AAUvE,MAAM,aAAa,GAAG,CAAC,UAAkC,EAAsB,EAAE;IACtF,OAAO,OAAO,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC;AAC5E,CAAC,CAAC;AAFW,QAAA,aAAa,iBAExB;AACK,MAAM,iBAAiB,GAAG,CAC/B,WAAmC,EACnC,WAAmC,EACnC,EAAE;IACF,OAAO,WAAW,IAAI,WAAW,IAAI,IAAA,qBAAa,EAAC,WAAW,CAAC,KAAK,IAAA,qBAAa,EAAC,WAAW,CAAC,CAAC;AACjG,CAAC,CAAC;AALW,QAAA,iBAAiB,qBAK5B;AACK,MAAM,eAAe,GAAG,CAC7B,WAAmC,EACkB,EAAE;IACvD,OAAO,CACL,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;QACxB,CAAC,CAAC,OAAO,WAAW,KAAK,UAAU,CAAC,CAAC;YACnC;gBACE,MAAM,EAAE,WAAW;aACpB;YACH,CAAC,CAAC,WAAW,CACd,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,eAAe,mBAW1B;AAgBF,KAAK,UAAU,SAAS,CAEtB,MAAc,EACd,MAAuB,EACvB,UAAuB,EACvB,WAA6B,EAC7B,WAAyB;IAEzB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,IAAI,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;YAClC,MAAM,+CAA+C,CAAC;QACxD,CAAC;QAED,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,2CAA2C,CAAC;QACpD,CAAC;QACD,MAAM,SAAS,GAAG,WAAW,EAAE,SAAS,CAAC;QACzC,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,EAAE,CAAC;YAC9B,MAAM,+DAA+D,CAAC;QACxE,CAAC;QACD,IAAI,SAAS,EAAE,MAAM,IAAI,UAAU,EAAE,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC;YAC3C,MAAM,oCAAoC,CAAC;QAC7C,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,YAAY,EAAE,GAAG,MAAM,CAAC;QAE/E,8BAA8B;QAC9B,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAE5F,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"file":"subscribe.js","sourceRoot":"","sources":["../../../lib/DboBuilder/ViewHandler/subscribe.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ import { AnyObject, FieldFilter, SelectParams, WAL, type SubscribeOptions } from
|
|
|
6
6
|
import { LocalFuncs } from "../DboBuilder/ViewHandler/subscribe";
|
|
7
7
|
import { EventTypes } from "../Logging";
|
|
8
8
|
import { ParsedTableRule } from "../PublishParser/PublishParser";
|
|
9
|
+
import type { NewQuery } from "../DboBuilder/QueryBuilder/QueryBuilder";
|
|
9
10
|
export type BasicCallback = (err?: any, res?: any) => void;
|
|
10
11
|
export type SyncParams = {
|
|
11
12
|
socket_id: string;
|
|
@@ -69,13 +70,14 @@ export type SubscriptionParams = {
|
|
|
69
70
|
filter: object;
|
|
70
71
|
selectParams: SelectParams;
|
|
71
72
|
subscribeOptions: SubscribeOptions;
|
|
73
|
+
newQuery: NewQuery;
|
|
72
74
|
localFuncs?: LocalFuncs;
|
|
73
75
|
socket: PRGLIOSocket | undefined;
|
|
74
76
|
lastPushed: number;
|
|
75
77
|
is_throttling?: any;
|
|
76
78
|
is_ready?: boolean;
|
|
77
79
|
};
|
|
78
|
-
export type Subscription = Pick<SubscriptionParams, "selectParams" | "subscribeOptions" | "is_throttling" | "lastPushed" | "channel_name" | "is_ready" | "localFuncs" | "socket" | "socket_id" | "table_info" | "filter" | "table_rules"> & {
|
|
80
|
+
export type Subscription = Pick<SubscriptionParams, "selectParams" | "subscribeOptions" | "is_throttling" | "lastPushed" | "channel_name" | "is_ready" | "localFuncs" | "socket" | "socket_id" | "table_info" | "filter" | "table_rules" | "newQuery"> & {
|
|
79
81
|
triggers: {
|
|
80
82
|
table_name: string;
|
|
81
83
|
condition: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PubSubManager.d.ts","sourceRoot":"","sources":["../../lib/PubSubManager/PubSubManager.ts"],"names":[],"mappings":";AAKA,OAAO,EACL,eAAe,EACf,UAAU,EACV,YAAY,EACZ,SAAS,EACT,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAQlC,OAAO,EACL,SAAS,EAET,WAAW,EACX,YAAY,EACZ,GAAG,EACH,KAAK,gBAAgB,EACtB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,UAAU,EAAoC,MAAM,qCAAqC,CAAC;AACnG,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"PubSubManager.d.ts","sourceRoot":"","sources":["../../lib/PubSubManager/PubSubManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PubSubManager.js","sourceRoot":"","sources":["../../lib/PubSubManager/PubSubManager.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;;AAWhG,uCAAoC;AACpC,6CAA0C;AAC1C,qEAAkE;AAClE,uEAAoE;AACpE,2DAAwD;AACxD,uDAAoD;AAEpD,qDAOyB;AAEzB,qDAAiD;AACjD,mEAAmG;AAGnG,wDAA8C;AAC9C,qCAAkC;AAClC,mDAAgD;AAChD,+CAA4C;AAC5C,6DAA2C;
|
|
1
|
+
{"version":3,"file":"PubSubManager.js","sourceRoot":"","sources":["../../lib/PubSubManager/PubSubManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addSub.d.ts","sourceRoot":"","sources":["../../lib/PubSubManager/addSub.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAiB,aAAa,EAAgB,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAGjG,KAAK,qBAAqB,GAAG,kBAAkB,GAAG;IAChD,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,YAAY,GAAG,oBAAoB,GAAG;IACzC,aAAa,EAAE,YAAY,GAAG,SAAS,CAAC;CACzC,CAAC;AAIF,wBAAsB,MAAM,CAC1B,IAAI,EAAE,aAAa,EACnB,kBAAkB,EAAE,IAAI,CAAC,qBAAqB,EAAE,cAAc,GAAG,iBAAiB,CAAC,GAClF,OAAO,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"addSub.d.ts","sourceRoot":"","sources":["../../lib/PubSubManager/addSub.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAiB,aAAa,EAAgB,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAGjG,KAAK,qBAAqB,GAAG,kBAAkB,GAAG;IAChD,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,YAAY,GAAG,oBAAoB,GAAG;IACzC,aAAa,EAAE,YAAY,GAAG,SAAS,CAAC;CACzC,CAAC;AAIF,wBAAsB,MAAM,CAC1B,IAAI,EAAE,aAAa,EACnB,kBAAkB,EAAE,IAAI,CAAC,qBAAqB,EAAE,cAAc,GAAG,iBAAiB,CAAC,GAClF,OAAO,CAAC,YAAY,CAAC,CAuIvB"}
|
|
@@ -6,7 +6,7 @@ const PubSubManagerUtils_1 = require("./PubSubManagerUtils");
|
|
|
6
6
|
/* Must return a channel for socket */
|
|
7
7
|
/* The distinct list of {table_name, condition} must have a corresponding trigger in the database */
|
|
8
8
|
async function addSub(subscriptionParams) {
|
|
9
|
-
const { socket, localFuncs, table_rules, filter = {}, selectParams = {}, condition = "", viewOptions, table_info, subscribeOptions, } = subscriptionParams;
|
|
9
|
+
const { socket, localFuncs, table_rules, filter = {}, selectParams = {}, condition = "", viewOptions, table_info, subscribeOptions, newQuery, } = subscriptionParams;
|
|
10
10
|
const table_name = table_info.name;
|
|
11
11
|
if (!socket && !localFuncs) {
|
|
12
12
|
throw "socket AND func missing";
|
|
@@ -33,6 +33,7 @@ async function addSub(subscriptionParams) {
|
|
|
33
33
|
is_throttling: false,
|
|
34
34
|
socket_id: socket?.id,
|
|
35
35
|
table_rules,
|
|
36
|
+
newQuery,
|
|
36
37
|
triggers: [mainTrigger],
|
|
37
38
|
};
|
|
38
39
|
const result = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addSub.js","sourceRoot":"","sources":["../../lib/PubSubManager/addSub.ts"],"names":[],"mappings":";;;AAEA,2DAA2C;AAE3C,6DAAsD;AAUtD,sCAAsC;AACtC,oGAAoG;AAC7F,KAAK,UAAU,MAAM,CAE1B,kBAAmF;IAEnF,MAAM,EACJ,MAAM,EACN,UAAU,EACV,WAAW,EACX,MAAM,GAAG,EAAE,EACX,YAAY,GAAG,EAAE,EACjB,SAAS,GAAG,EAAE,EACd,WAAW,EACX,UAAU,EACV,gBAAgB,
|
|
1
|
+
{"version":3,"file":"addSub.js","sourceRoot":"","sources":["../../lib/PubSubManager/addSub.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPubSubManagerInitQuery.d.ts","sourceRoot":"","sources":["../../lib/PubSubManager/getPubSubManagerInitQuery.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"getPubSubManagerInitQuery.d.ts","sourceRoot":"","sources":["../../lib/PubSubManager/getPubSubManagerInitQuery.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAatD,eAAO,MAAM,YAAY;;;;;;CAMf,CAAC;AA4dX;;;GAGG;AACH,eAAO,MAAM,yBAAyB,SAC9B,UAAU,KACf,QAAQ,MAAM,GAAG,SAAS,CAyB5B,CAAC"}
|
|
@@ -5,7 +5,8 @@ const prostgles_types_1 = require("prostgles-types");
|
|
|
5
5
|
const DboBuilderTypes_1 = require("../DboBuilder/DboBuilderTypes");
|
|
6
6
|
const PubSubManagerUtils_1 = require("./PubSubManagerUtils");
|
|
7
7
|
const orphanTriggerCheck_1 = require("./orphanTriggerCheck");
|
|
8
|
-
const
|
|
8
|
+
const package_json_1 = require("../../package.json");
|
|
9
|
+
const getDataWatchFunctionQuery_1 = require("./init/getDataWatchFunctionQuery");
|
|
9
10
|
exports.DB_OBJ_NAMES = {
|
|
10
11
|
trigger_add_remove_func: "prostgles.trigger_add_remove_func",
|
|
11
12
|
data_watch_func: "prostgles.prostgles_trigger_function",
|
|
@@ -90,7 +91,7 @@ BEGIN
|
|
|
90
91
|
COMMENT ON TABLE prostgles.versions IS 'Stores the prostgles schema creation query hash and package version number to identify when a newer schema needs to be re-created';
|
|
91
92
|
|
|
92
93
|
INSERT INTO prostgles.versions(version, schema_md5)
|
|
93
|
-
VALUES(${(0, PubSubManagerUtils_1.asValue)(version)}, \${schema_md5})
|
|
94
|
+
VALUES(${(0, PubSubManagerUtils_1.asValue)(package_json_1.version)}, \${schema_md5})
|
|
94
95
|
ON CONFLICT DO NOTHING;
|
|
95
96
|
|
|
96
97
|
|
|
@@ -186,6 +187,9 @@ BEGIN
|
|
|
186
187
|
table_name TEXT NOT NULL,
|
|
187
188
|
condition TEXT NOT NULL,
|
|
188
189
|
condition_hash TEXT NOT NULL,
|
|
190
|
+
|
|
191
|
+
/** If defined, will check the provided fields for changes */
|
|
192
|
+
fields _TEXT ,
|
|
189
193
|
|
|
190
194
|
/* The view from the root subscription, found in the condition.
|
|
191
195
|
We need this because old_table/new_table data is not reflected in the view inside the AFTER trigger
|
|
@@ -207,153 +211,7 @@ BEGIN
|
|
|
207
211
|
FROM prostgles.app_triggers;
|
|
208
212
|
COMMENT ON VIEW prostgles.v_triggers IS 'Augment trigger table with natural IDs and per app IDs';
|
|
209
213
|
|
|
210
|
-
|
|
211
|
-
CREATE OR REPLACE FUNCTION ${exports.DB_OBJ_NAMES.data_watch_func}() RETURNS TRIGGER
|
|
212
|
-
AS $$
|
|
213
|
-
|
|
214
|
-
DECLARE t_ids TEXT[];
|
|
215
|
-
DECLARE c_ids INTEGER[];
|
|
216
|
-
DECLARE err_c_ids INTEGER[];
|
|
217
|
-
DECLARE unions TEXT := '';
|
|
218
|
-
DECLARE query TEXT := '';
|
|
219
|
-
DECLARE v_trigger RECORD;
|
|
220
|
-
DECLARE has_errors BOOLEAN := FALSE;
|
|
221
|
-
|
|
222
|
-
DECLARE err_text TEXT;
|
|
223
|
-
DECLARE err_detail TEXT;
|
|
224
|
-
DECLARE err_hint TEXT;
|
|
225
|
-
|
|
226
|
-
DECLARE view_def_query TEXT := '';
|
|
227
|
-
|
|
228
|
-
DECLARE escaped_table TEXT;
|
|
229
|
-
|
|
230
|
-
BEGIN
|
|
231
|
-
|
|
232
|
-
--PERFORM pg_notify('debug', concat_ws(' ', 'TABLE', TG_TABLE_NAME, TG_OP));
|
|
233
|
-
|
|
234
|
-
escaped_table := concat_ws('.', CASE WHEN TG_TABLE_SCHEMA <> CURRENT_SCHEMA THEN format('%I', TG_TABLE_SCHEMA) END, format('%I', TG_TABLE_NAME));
|
|
235
|
-
|
|
236
|
-
SELECT string_agg(
|
|
237
|
-
format(
|
|
238
|
-
$c$
|
|
239
|
-
SELECT CASE WHEN EXISTS(
|
|
240
|
-
SELECT 1
|
|
241
|
-
FROM %s
|
|
242
|
-
WHERE %s
|
|
243
|
-
) THEN %s::text END AS t_ids
|
|
244
|
-
$c$,
|
|
245
|
-
table_name,
|
|
246
|
-
condition,
|
|
247
|
-
id
|
|
248
|
-
),
|
|
249
|
-
E' UNION \n '
|
|
250
|
-
)
|
|
251
|
-
INTO unions
|
|
252
|
-
FROM prostgles.v_triggers
|
|
253
|
-
WHERE table_name = escaped_table;
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
/* unions = 'old_table union new_table' or any one of the tables */
|
|
257
|
-
IF unions IS NOT NULL THEN
|
|
258
|
-
|
|
259
|
-
SELECT
|
|
260
|
-
format(
|
|
261
|
-
E'WITH %I AS (\n %s \n) ',
|
|
262
|
-
TG_TABLE_NAME,
|
|
263
|
-
concat_ws(
|
|
264
|
-
E' UNION ALL \n ',
|
|
265
|
-
CASE WHEN (TG_OP = 'DELETE' OR TG_OP = 'UPDATE') THEN ' SELECT * FROM old_table ' END,
|
|
266
|
-
CASE WHEN (TG_OP = 'INSERT' OR TG_OP = 'UPDATE') THEN ' SELECT * FROM new_table ' END
|
|
267
|
-
)
|
|
268
|
-
)
|
|
269
|
-
||
|
|
270
|
-
COALESCE((
|
|
271
|
-
SELECT ', ' || string_agg(format(E' %s AS ( \n %s \n ) ', related_view_name, related_view_def), ', ')
|
|
272
|
-
FROM (
|
|
273
|
-
SELECT DISTINCT related_view_name, related_view_def
|
|
274
|
-
FROM prostgles.v_triggers
|
|
275
|
-
WHERE table_name = escaped_table
|
|
276
|
-
AND related_view_name IS NOT NULL
|
|
277
|
-
AND related_view_def IS NOT NULL
|
|
278
|
-
) t
|
|
279
|
-
), '')
|
|
280
|
-
||
|
|
281
|
-
format(
|
|
282
|
-
$c$
|
|
283
|
-
SELECT ARRAY_AGG(DISTINCT t.t_ids)
|
|
284
|
-
FROM (
|
|
285
|
-
%s
|
|
286
|
-
) t
|
|
287
|
-
$c$,
|
|
288
|
-
unions
|
|
289
|
-
)
|
|
290
|
-
INTO query;
|
|
291
|
-
|
|
292
|
-
BEGIN
|
|
293
|
-
EXECUTE query INTO t_ids;
|
|
294
|
-
|
|
295
|
-
--RAISE NOTICE 'trigger fired ok';
|
|
296
|
-
|
|
297
|
-
EXCEPTION WHEN OTHERS THEN
|
|
298
|
-
|
|
299
|
-
has_errors := TRUE;
|
|
300
|
-
|
|
301
|
-
GET STACKED DIAGNOSTICS
|
|
302
|
-
err_text = MESSAGE_TEXT,
|
|
303
|
-
err_detail = PG_EXCEPTION_DETAIL,
|
|
304
|
-
err_hint = PG_EXCEPTION_HINT;
|
|
305
|
-
|
|
306
|
-
END;
|
|
307
|
-
|
|
308
|
-
--RAISE NOTICE 'has_errors: % ', has_errors;
|
|
309
|
-
--RAISE NOTICE 'unions: % , cids: %', unions, c_ids;
|
|
310
|
-
|
|
311
|
-
IF (t_ids IS NOT NULL OR has_errors) THEN
|
|
312
|
-
|
|
313
|
-
FOR v_trigger IN
|
|
314
|
-
SELECT app_id, string_agg(c_id::text, ',') as cids
|
|
315
|
-
FROM prostgles.v_triggers
|
|
316
|
-
WHERE id = ANY(t_ids)
|
|
317
|
-
OR has_errors
|
|
318
|
-
GROUP BY app_id
|
|
319
|
-
LOOP
|
|
320
|
-
|
|
321
|
-
PERFORM pg_notify(
|
|
322
|
-
${(0, PubSubManagerUtils_1.asValue)(PubSubManagerUtils_1.NOTIF_CHANNEL.preffix)} || v_trigger.app_id ,
|
|
323
|
-
LEFT(concat_ws(
|
|
324
|
-
${(0, PubSubManagerUtils_1.asValue)(PubSubManagerUtils_1.DELIMITER)},
|
|
325
|
-
|
|
326
|
-
${(0, PubSubManagerUtils_1.asValue)(PubSubManagerUtils_1.NOTIF_TYPE.data)},
|
|
327
|
-
COALESCE(escaped_table, 'MISSING'),
|
|
328
|
-
COALESCE(TG_OP, 'MISSING'),
|
|
329
|
-
CASE WHEN has_errors
|
|
330
|
-
THEN concat_ws('; ', 'error', err_text, err_detail, err_hint, 'query: ' || query )
|
|
331
|
-
ELSE COALESCE(v_trigger.cids, '')
|
|
332
|
-
END
|
|
333
|
-
${debugMode ? ", COALESCE(current_query(), 'current_query ??'), ' ', query" : ""}
|
|
334
|
-
), 7999/4) -- Some chars are 2bytes -> 'Ω'
|
|
335
|
-
);
|
|
336
|
-
END LOOP;
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
IF has_errors THEN
|
|
340
|
-
|
|
341
|
-
DELETE FROM prostgles.app_triggers;
|
|
342
|
-
RAISE NOTICE 'trigger dropped due to exception: % % %', err_text, err_detail, err_hint;
|
|
343
|
-
|
|
344
|
-
END IF;
|
|
345
|
-
|
|
346
|
-
END IF;
|
|
347
|
-
END IF;
|
|
348
|
-
|
|
349
|
-
${(0, orphanTriggerCheck_1.getAppCheckQuery)()}
|
|
350
|
-
|
|
351
|
-
RETURN NULL;
|
|
352
|
-
|
|
353
|
-
END;
|
|
354
|
-
|
|
355
|
-
$$ LANGUAGE plpgsql;
|
|
356
|
-
COMMENT ON FUNCTION ${exports.DB_OBJ_NAMES.data_watch_func} IS 'Prostgles internal function used to notify when data in the table changed';
|
|
214
|
+
${(0, getDataWatchFunctionQuery_1.getDataWatchFunctionQuery)(debugMode)}
|
|
357
215
|
|
|
358
216
|
CREATE OR REPLACE FUNCTION ${exports.DB_OBJ_NAMES.trigger_add_remove_func}() RETURNS TRIGGER
|
|
359
217
|
AS $$
|
|
@@ -636,7 +494,7 @@ const getPubSubManagerInitQuery = async function () {
|
|
|
636
494
|
const { schema_md5 = "none" } = await this.db.oneOrNone("SELECT md5($1) as schema_md5", [
|
|
637
495
|
initQuery.trim(),
|
|
638
496
|
]);
|
|
639
|
-
const query = DboBuilderTypes_1.pgp.as.format(initQuery, { schema_md5, version });
|
|
497
|
+
const query = DboBuilderTypes_1.pgp.as.format(initQuery, { schema_md5, version: package_json_1.version });
|
|
640
498
|
const existingSchema = await this.db.any(PROSTGLES_SCHEMA_EXISTS_QUERY);
|
|
641
499
|
if (!existingSchema.length) {
|
|
642
500
|
console.log("getPubSubManagerInitQuery: No prostgles.versions table found. Creating...");
|
|
@@ -645,7 +503,7 @@ const getPubSubManagerInitQuery = async function () {
|
|
|
645
503
|
const { data: existingSchemaVersions } = await (0, prostgles_types_1.tryCatchV2)(async () => {
|
|
646
504
|
const existingSchemaVersions = await this.db.any(PROSTGLES_SCHEMA_VERSION_OK_QUERY, {
|
|
647
505
|
schema_md5,
|
|
648
|
-
version,
|
|
506
|
+
version: package_json_1.version,
|
|
649
507
|
});
|
|
650
508
|
return existingSchemaVersions;
|
|
651
509
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPubSubManagerInitQuery.js","sourceRoot":"","sources":["../../lib/PubSubManager/getPubSubManagerInitQuery.ts"],"names":[],"mappings":";;;AAAA,qDAA6C;AAE7C,mEAAoD;AACpD,6DAM8B;AAC9B,6DAAwD;AACxD,
|
|
1
|
+
{"version":3,"file":"getPubSubManagerInitQuery.js","sourceRoot":"","sources":["../../lib/PubSubManager/getPubSubManagerInitQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDataWatchFunctionQuery.d.ts","sourceRoot":"","sources":["../../../lib/PubSubManager/init/getDataWatchFunctionQuery.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,yBAAyB,cAAe,OAAO,GAAG,SAAS,WAkLvE,CAAC"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getDataWatchFunctionQuery = void 0;
|
|
4
|
+
const getPubSubManagerInitQuery_1 = require("../getPubSubManagerInitQuery");
|
|
5
|
+
const orphanTriggerCheck_1 = require("../orphanTriggerCheck");
|
|
6
|
+
const PubSubManagerUtils_1 = require("../PubSubManagerUtils");
|
|
7
|
+
const getDataWatchFunctionQuery = (debugMode) => {
|
|
8
|
+
return `
|
|
9
|
+
|
|
10
|
+
CREATE OR REPLACE FUNCTION ${getPubSubManagerInitQuery_1.DB_OBJ_NAMES.data_watch_func}() RETURNS TRIGGER
|
|
11
|
+
AS $$
|
|
12
|
+
|
|
13
|
+
DECLARE t_ids TEXT[];
|
|
14
|
+
DECLARE c_ids INTEGER[];
|
|
15
|
+
DECLARE err_c_ids INTEGER[];
|
|
16
|
+
DECLARE unions TEXT := '';
|
|
17
|
+
DECLARE query TEXT := '';
|
|
18
|
+
DECLARE v_trigger RECORD;
|
|
19
|
+
DECLARE has_errors BOOLEAN := FALSE;
|
|
20
|
+
|
|
21
|
+
DECLARE err_text TEXT;
|
|
22
|
+
DECLARE err_detail TEXT;
|
|
23
|
+
DECLARE err_hint TEXT;
|
|
24
|
+
|
|
25
|
+
DECLARE view_def_query TEXT := '';
|
|
26
|
+
|
|
27
|
+
DECLARE escaped_table TEXT;
|
|
28
|
+
|
|
29
|
+
DECLARE changed_columns TEXT := NULL;
|
|
30
|
+
|
|
31
|
+
BEGIN
|
|
32
|
+
|
|
33
|
+
--PERFORM pg_notify('debug', concat_ws(' ', 'TABLE', TG_TABLE_NAME, TG_OP));
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
-- Determine changed columns for UPDATE operations
|
|
37
|
+
IF TG_OP = 'UPDATE' THEN
|
|
38
|
+
WITH cols AS (
|
|
39
|
+
SELECT column_name::text
|
|
40
|
+
FROM information_schema.columns
|
|
41
|
+
WHERE table_schema = TG_TABLE_SCHEMA
|
|
42
|
+
AND table_name = TG_TABLE_NAME
|
|
43
|
+
),
|
|
44
|
+
changed AS (
|
|
45
|
+
SELECT column_name
|
|
46
|
+
FROM cols
|
|
47
|
+
WHERE EXISTS (
|
|
48
|
+
SELECT 1 FROM new_table n
|
|
49
|
+
JOIN old_table o ON TRUE
|
|
50
|
+
WHERE n.* IS DISTINCT FROM o.*
|
|
51
|
+
LIMIT 1
|
|
52
|
+
)
|
|
53
|
+
)
|
|
54
|
+
SELECT string_agg(column_name, ',') INTO changed_columns
|
|
55
|
+
FROM changed;
|
|
56
|
+
END IF;
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
escaped_table := concat_ws('.', CASE WHEN TG_TABLE_SCHEMA <> CURRENT_SCHEMA THEN format('%I', TG_TABLE_SCHEMA) END, format('%I', TG_TABLE_NAME));
|
|
60
|
+
|
|
61
|
+
SELECT string_agg(
|
|
62
|
+
format(
|
|
63
|
+
$c$
|
|
64
|
+
SELECT CASE WHEN EXISTS(
|
|
65
|
+
SELECT 1
|
|
66
|
+
FROM %s
|
|
67
|
+
WHERE %s
|
|
68
|
+
) THEN %s::text END AS t_ids
|
|
69
|
+
$c$,
|
|
70
|
+
table_name,
|
|
71
|
+
condition,
|
|
72
|
+
id
|
|
73
|
+
),
|
|
74
|
+
E' UNION \n '
|
|
75
|
+
)
|
|
76
|
+
INTO unions
|
|
77
|
+
FROM prostgles.v_triggers
|
|
78
|
+
WHERE table_name = escaped_table;
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
/* unions = 'old_table union new_table' or any one of the tables */
|
|
82
|
+
IF unions IS NOT NULL THEN
|
|
83
|
+
|
|
84
|
+
SELECT
|
|
85
|
+
format(
|
|
86
|
+
E'WITH %I AS (\n %s \n) ',
|
|
87
|
+
TG_TABLE_NAME,
|
|
88
|
+
concat_ws(
|
|
89
|
+
E' UNION ALL \n ',
|
|
90
|
+
CASE WHEN (TG_OP = 'DELETE' OR TG_OP = 'UPDATE') THEN ' SELECT * FROM old_table ' END,
|
|
91
|
+
CASE WHEN (TG_OP = 'INSERT' OR TG_OP = 'UPDATE') THEN ' SELECT * FROM new_table ' END
|
|
92
|
+
)
|
|
93
|
+
)
|
|
94
|
+
||
|
|
95
|
+
COALESCE((
|
|
96
|
+
SELECT ', ' || string_agg(format(E' %s AS ( \n %s \n ) ', related_view_name, related_view_def), ', ')
|
|
97
|
+
FROM (
|
|
98
|
+
SELECT DISTINCT related_view_name, related_view_def
|
|
99
|
+
FROM prostgles.v_triggers
|
|
100
|
+
WHERE table_name = escaped_table
|
|
101
|
+
AND related_view_name IS NOT NULL
|
|
102
|
+
AND related_view_def IS NOT NULL
|
|
103
|
+
) t
|
|
104
|
+
), '')
|
|
105
|
+
||
|
|
106
|
+
format(
|
|
107
|
+
$c$
|
|
108
|
+
SELECT ARRAY_AGG(DISTINCT t.t_ids)
|
|
109
|
+
FROM (
|
|
110
|
+
%s
|
|
111
|
+
) t
|
|
112
|
+
$c$,
|
|
113
|
+
unions
|
|
114
|
+
)
|
|
115
|
+
INTO query;
|
|
116
|
+
|
|
117
|
+
BEGIN
|
|
118
|
+
EXECUTE query INTO t_ids;
|
|
119
|
+
|
|
120
|
+
--RAISE NOTICE 'trigger fired ok';
|
|
121
|
+
|
|
122
|
+
EXCEPTION WHEN OTHERS THEN
|
|
123
|
+
|
|
124
|
+
has_errors := TRUE;
|
|
125
|
+
|
|
126
|
+
GET STACKED DIAGNOSTICS
|
|
127
|
+
err_text = MESSAGE_TEXT,
|
|
128
|
+
err_detail = PG_EXCEPTION_DETAIL,
|
|
129
|
+
err_hint = PG_EXCEPTION_HINT;
|
|
130
|
+
|
|
131
|
+
END;
|
|
132
|
+
|
|
133
|
+
--RAISE NOTICE 'has_errors: % ', has_errors;
|
|
134
|
+
--RAISE NOTICE 'unions: % , cids: %', unions, c_ids;
|
|
135
|
+
|
|
136
|
+
IF (t_ids IS NOT NULL OR has_errors) THEN
|
|
137
|
+
|
|
138
|
+
FOR v_trigger IN
|
|
139
|
+
SELECT app_id, string_agg(c_id::text, ',') as cids
|
|
140
|
+
FROM prostgles.v_triggers
|
|
141
|
+
WHERE id = ANY(t_ids)
|
|
142
|
+
OR has_errors
|
|
143
|
+
GROUP BY app_id
|
|
144
|
+
LOOP
|
|
145
|
+
|
|
146
|
+
PERFORM pg_notify(
|
|
147
|
+
${(0, PubSubManagerUtils_1.asValue)(PubSubManagerUtils_1.NOTIF_CHANNEL.preffix)} || v_trigger.app_id ,
|
|
148
|
+
LEFT(concat_ws(
|
|
149
|
+
${(0, PubSubManagerUtils_1.asValue)(PubSubManagerUtils_1.DELIMITER)},
|
|
150
|
+
|
|
151
|
+
${(0, PubSubManagerUtils_1.asValue)(PubSubManagerUtils_1.NOTIF_TYPE.data)},
|
|
152
|
+
COALESCE(escaped_table, 'MISSING'),
|
|
153
|
+
COALESCE(TG_OP, 'MISSING'),
|
|
154
|
+
CASE WHEN has_errors
|
|
155
|
+
THEN concat_ws('; ', 'error', err_text, err_detail, err_hint, 'query: ' || query )
|
|
156
|
+
ELSE COALESCE(v_trigger.cids, '')
|
|
157
|
+
END,
|
|
158
|
+
COALESCE(changed_columns, '')
|
|
159
|
+
${debugMode ? ", COALESCE(current_query(), 'current_query ??'), ' ', query" : ""}
|
|
160
|
+
), 7999/4) -- Some chars are 2bytes -> 'Ω'
|
|
161
|
+
);
|
|
162
|
+
END LOOP;
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
IF has_errors THEN
|
|
166
|
+
|
|
167
|
+
DELETE FROM prostgles.app_triggers;
|
|
168
|
+
RAISE NOTICE 'trigger dropped due to exception: % % %', err_text, err_detail, err_hint;
|
|
169
|
+
|
|
170
|
+
END IF;
|
|
171
|
+
|
|
172
|
+
END IF;
|
|
173
|
+
END IF;
|
|
174
|
+
|
|
175
|
+
${(0, orphanTriggerCheck_1.getAppCheckQuery)()}
|
|
176
|
+
|
|
177
|
+
RETURN NULL;
|
|
178
|
+
|
|
179
|
+
END;
|
|
180
|
+
|
|
181
|
+
$$ LANGUAGE plpgsql;
|
|
182
|
+
COMMENT ON FUNCTION ${getPubSubManagerInitQuery_1.DB_OBJ_NAMES.data_watch_func} IS 'Prostgles internal function used to notify when data in the table changed';
|
|
183
|
+
|
|
184
|
+
`;
|
|
185
|
+
};
|
|
186
|
+
exports.getDataWatchFunctionQuery = getDataWatchFunctionQuery;
|
|
187
|
+
//# sourceMappingURL=getDataWatchFunctionQuery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDataWatchFunctionQuery.js","sourceRoot":"","sources":["../../../lib/PubSubManager/init/getDataWatchFunctionQuery.ts"],"names":[],"mappings":";;;AAAA,4EAA4D;AAC5D,8DAAyD;AACzD,8DAAsF;AAE/E,MAAM,yBAAyB,GAAG,CAAC,SAA8B,EAAE,EAAE;IAC1E,OAAO;;qCAE4B,wCAAY,CAAC,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAyIjC,IAAA,4BAAO,EAAC,kCAAa,CAAC,OAAO,CAAC;;kCAE5B,IAAA,4BAAO,EAAC,8BAAS,CAAC;;kCAElB,IAAA,4BAAO,EAAC,+BAAU,CAAC,IAAI,CAAC;;;;;;;;kCAQxB,SAAS,CAAC,CAAC,CAAC,6DAA6D,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;kBAgB9F,IAAA,qCAAgB,GAAE;;;;;;;8BAON,wCAAY,CAAC,eAAe;;GAEvD,CAAC;AACJ,CAAC,CAAC;AAlLW,QAAA,yBAAyB,6BAkLpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initPubSubManager.d.ts","sourceRoot":"","sources":["../../lib/PubSubManager/initPubSubManager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD,eAAO,MAAM,4BAA4B,qEAC2B,CAAC;AAErE,eAAO,MAAM,IAAI,OAAQ,MAAM,qBAA8C,CAAC;AAE9E,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"initPubSubManager.d.ts","sourceRoot":"","sources":["../../lib/PubSubManager/initPubSubManager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD,eAAO,MAAM,4BAA4B,qEAC2B,CAAC;AAErE,eAAO,MAAM,IAAI,OAAQ,MAAM,qBAA8C,CAAC;AAE9E,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CA0E/F"}
|
|
@@ -54,7 +54,7 @@ async function initPubSubManager() {
|
|
|
54
54
|
VALUES($1, $2, $3, current_setting('application_name')) \
|
|
55
55
|
RETURNING *; ", [this.appId, check_frequency_ms, watching_schema_tag_names]);
|
|
56
56
|
const appRecord = await this.db.one("SELECT * FROM prostgles.apps WHERE id = $1", [this.appId]);
|
|
57
|
-
if (!appRecord
|
|
57
|
+
if (!appRecord.application_name?.includes(this.appId)) {
|
|
58
58
|
throw `initPubSubManager error: App record with application_name containing appId (${this.appId}) not found`;
|
|
59
59
|
}
|
|
60
60
|
await this.db.any(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initPubSubManager.js","sourceRoot":"","sources":["../../lib/PubSubManager/initPubSubManager.ts"],"names":[],"mappings":";;;AAAA,qDAAsD;AACtD,8EAA2E;AAC3E,gFAA6E;AAE7E,2EAAwE;AACxE,6DAA8D;AACjD,QAAA,4BAA4B,GACvC,kEAAkE,CAAC;AAE9D,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AAAjE,QAAA,IAAI,QAA6D;AAEvE,KAAK,UAAU,iBAAiB;IACrC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;QAAE,OAAO,SAAS,CAAC;IAE7C,MAAM,SAAS,GAAG,MAAM,qDAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;IAE1E;;;OAGG;IACH,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAU,CAAC;IACf,OAAO,IAAA,2BAAS,EAAC,SAAS,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC;YACH,iGAAiG;YACjG,MAAM,IAAA,YAAI,EAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAE1B,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;YAC1C,KAAK,GAAG,SAAS,CAAC;YAClB,KAAK,GAAG,CAAC,CAAC;QACZ,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAI,CAAC,WAAW,IAAI,IAAA,0BAAQ,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACtD,WAAW,GAAG,IAAI,CAAC;gBACnB,KAAK,GAAG,CAAC,CAAC;gBACV,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;YAClD,CAAC;YACD,KAAK,GAAG,CAAC,CAAC;YACV,KAAK,EAAE,CAAC;QACV,CAAC;IACH,CAAC;IACD,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,KAAK,CAAC;IACd,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;QAAE,OAAO;IAEnC,oBAAoB;IACpB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC7B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,MAAM,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACpD,MAAM,yBAAyB,GAC7B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC;YAChE,IAAA,6CAAqB,EAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC;YACnE,CAAC,CAAC,IAAI,CAAC;QACT,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CACf;;oBAEc,EACd,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,EAAE,yBAAyB,CAAC,CAC5D,CAAC;QAEF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"initPubSubManager.js","sourceRoot":"","sources":["../../lib/PubSubManager/initPubSubManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifListener.d.ts","sourceRoot":"","sources":["../../lib/PubSubManager/notifListener.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"notifListener.d.ts","sourceRoot":"","sources":["../../lib/PubSubManager/notifListener.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAKhD,wBAAsB,aAAa,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,iBA+LjF"}
|
|
@@ -4,6 +4,7 @@ exports.notifListener = void 0;
|
|
|
4
4
|
const prostgles_types_1 = require("prostgles-types");
|
|
5
5
|
const parseFieldFilter_1 = require("../DboBuilder/ViewHandler/parseFieldFilter");
|
|
6
6
|
const PubSubManagerUtils_1 = require("./PubSubManagerUtils");
|
|
7
|
+
const JSONBValidation_1 = require("../JSONBValidation/JSONBValidation");
|
|
7
8
|
/* Relay relevant data to relevant subscriptions */
|
|
8
9
|
async function notifListener(data) {
|
|
9
10
|
const str = data.payload;
|
|
@@ -59,7 +60,7 @@ async function notifListener(data) {
|
|
|
59
60
|
if (dataArr.length < 3) {
|
|
60
61
|
throw "notifListener: dataArr length < 3";
|
|
61
62
|
}
|
|
62
|
-
const [_, table_name, op_name, condition_ids_str] = dataArr;
|
|
63
|
+
const [_, table_name, op_name, condition_ids_str, changed_columns_str = ""] = dataArr;
|
|
63
64
|
const condition_ids = condition_ids_str?.split(",").map((v) => +v);
|
|
64
65
|
if (!table_name) {
|
|
65
66
|
throw "table_name undef";
|
|
@@ -103,8 +104,15 @@ async function notifListener(data) {
|
|
|
103
104
|
const activeAndReadySubs = subs.filter((sub) => sub.triggers.some((trg) => this.dbo[trg.table_name] &&
|
|
104
105
|
sub.is_ready &&
|
|
105
106
|
((sub.socket_id && this.sockets[sub.socket_id]) || sub.localFuncs)));
|
|
107
|
+
const { data: changedColValidation } = (0, prostgles_types_1.tryCatchV2)(() => (0, JSONBValidation_1.getJSONBObjectSchemaValidationError)({ cols: "string[]" }, { cols: JSON.parse(`[${changed_columns_str}]`) }, "cols"));
|
|
108
|
+
const changedColumns = changedColValidation?.data?.cols;
|
|
106
109
|
activeAndReadySubs.forEach((sub) => {
|
|
107
110
|
const { throttle = 0, throttleOpts, actions } = sub.subscribeOptions;
|
|
111
|
+
if (changedColumns?.length) {
|
|
112
|
+
const subFieldsHaveChanged = changedColumns.some((changedColumn) => sub.newQuery.select.some((f) => f.fields.includes(changedColumn)));
|
|
113
|
+
if (!subFieldsHaveChanged)
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
108
116
|
const commandLowerCase = (op_name?.toLowerCase() || "insert");
|
|
109
117
|
const actionIsIgnored = actions &&
|
|
110
118
|
!(0, prostgles_types_1.includes)((0, parseFieldFilter_1.parseFieldFilter)(actions, false, ["insert", "update", "delete"]), commandLowerCase);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifListener.js","sourceRoot":"","sources":["../../lib/PubSubManager/notifListener.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"notifListener.js","sourceRoot":"","sources":["../../lib/PubSubManager/notifListener.ts"],"names":[],"mappings":"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"}
|
|
@@ -86,13 +86,13 @@ async function subscribe(
|
|
|
86
86
|
/** Ensure request is valid */
|
|
87
87
|
await this.find(filter, { ...selectParams, limit: 0 }, undefined, table_rules, localParams);
|
|
88
88
|
|
|
89
|
-
const newQuery
|
|
89
|
+
const newQuery = (await this.find(
|
|
90
90
|
filter,
|
|
91
91
|
{ ...selectParams, limit: 0 },
|
|
92
92
|
undefined,
|
|
93
93
|
table_rules,
|
|
94
94
|
{ ...localParams, returnNewQuery: true }
|
|
95
|
-
)) as
|
|
95
|
+
)) as unknown as NewQuery;
|
|
96
96
|
const viewOptions = await getSubscribeRelatedTables.bind(this)({
|
|
97
97
|
filter,
|
|
98
98
|
selectParams,
|
|
@@ -114,6 +114,7 @@ async function subscribe(
|
|
|
114
114
|
table_rules?.subscribe
|
|
115
115
|
),
|
|
116
116
|
lastPushed: 0,
|
|
117
|
+
newQuery,
|
|
117
118
|
} as const;
|
|
118
119
|
|
|
119
120
|
const pubSubManager = await this.dboBuilder.getPubSubManager();
|
|
@@ -37,6 +37,7 @@ import { addSub } from "./addSub";
|
|
|
37
37
|
import { notifListener } from "./notifListener";
|
|
38
38
|
import { pushSubData } from "./pushSubData";
|
|
39
39
|
import { log } from "./PubSubManagerUtils";
|
|
40
|
+
import type { NewQuery } from "../DboBuilder/QueryBuilder/QueryBuilder";
|
|
40
41
|
|
|
41
42
|
export type BasicCallback = (err?: any, res?: any) => void;
|
|
42
43
|
|
|
@@ -112,6 +113,7 @@ export type SubscriptionParams = {
|
|
|
112
113
|
filter: object;
|
|
113
114
|
selectParams: SelectParams;
|
|
114
115
|
subscribeOptions: SubscribeOptions;
|
|
116
|
+
newQuery: NewQuery;
|
|
115
117
|
|
|
116
118
|
localFuncs?: LocalFuncs;
|
|
117
119
|
socket: PRGLIOSocket | undefined;
|
|
@@ -135,6 +137,7 @@ export type Subscription = Pick<
|
|
|
135
137
|
| "table_info"
|
|
136
138
|
| "filter"
|
|
137
139
|
| "table_rules"
|
|
140
|
+
| "newQuery"
|
|
138
141
|
> & {
|
|
139
142
|
triggers: {
|
|
140
143
|
table_name: string;
|
|
@@ -28,6 +28,7 @@ export async function addSub(
|
|
|
28
28
|
viewOptions,
|
|
29
29
|
table_info,
|
|
30
30
|
subscribeOptions,
|
|
31
|
+
newQuery,
|
|
31
32
|
} = subscriptionParams;
|
|
32
33
|
const table_name = table_info.name;
|
|
33
34
|
|
|
@@ -58,7 +59,7 @@ export async function addSub(
|
|
|
58
59
|
is_throttling: false,
|
|
59
60
|
socket_id: socket?.id,
|
|
60
61
|
table_rules,
|
|
61
|
-
|
|
62
|
+
newQuery,
|
|
62
63
|
triggers: [mainTrigger],
|
|
63
64
|
};
|
|
64
65
|
|
|
@@ -9,7 +9,8 @@ import {
|
|
|
9
9
|
NOTIF_TYPE,
|
|
10
10
|
} from "./PubSubManagerUtils";
|
|
11
11
|
import { getAppCheckQuery } from "./orphanTriggerCheck";
|
|
12
|
-
|
|
12
|
+
import { version } from "../../package.json";
|
|
13
|
+
import { getDataWatchFunctionQuery } from "./init/getDataWatchFunctionQuery";
|
|
13
14
|
|
|
14
15
|
export const DB_OBJ_NAMES = {
|
|
15
16
|
trigger_add_remove_func: "prostgles.trigger_add_remove_func",
|
|
@@ -195,6 +196,9 @@ BEGIN
|
|
|
195
196
|
table_name TEXT NOT NULL,
|
|
196
197
|
condition TEXT NOT NULL,
|
|
197
198
|
condition_hash TEXT NOT NULL,
|
|
199
|
+
|
|
200
|
+
/** If defined, will check the provided fields for changes */
|
|
201
|
+
fields _TEXT ,
|
|
198
202
|
|
|
199
203
|
/* The view from the root subscription, found in the condition.
|
|
200
204
|
We need this because old_table/new_table data is not reflected in the view inside the AFTER trigger
|
|
@@ -216,153 +220,7 @@ BEGIN
|
|
|
216
220
|
FROM prostgles.app_triggers;
|
|
217
221
|
COMMENT ON VIEW prostgles.v_triggers IS 'Augment trigger table with natural IDs and per app IDs';
|
|
218
222
|
|
|
219
|
-
|
|
220
|
-
CREATE OR REPLACE FUNCTION ${DB_OBJ_NAMES.data_watch_func}() RETURNS TRIGGER
|
|
221
|
-
AS $$
|
|
222
|
-
|
|
223
|
-
DECLARE t_ids TEXT[];
|
|
224
|
-
DECLARE c_ids INTEGER[];
|
|
225
|
-
DECLARE err_c_ids INTEGER[];
|
|
226
|
-
DECLARE unions TEXT := '';
|
|
227
|
-
DECLARE query TEXT := '';
|
|
228
|
-
DECLARE v_trigger RECORD;
|
|
229
|
-
DECLARE has_errors BOOLEAN := FALSE;
|
|
230
|
-
|
|
231
|
-
DECLARE err_text TEXT;
|
|
232
|
-
DECLARE err_detail TEXT;
|
|
233
|
-
DECLARE err_hint TEXT;
|
|
234
|
-
|
|
235
|
-
DECLARE view_def_query TEXT := '';
|
|
236
|
-
|
|
237
|
-
DECLARE escaped_table TEXT;
|
|
238
|
-
|
|
239
|
-
BEGIN
|
|
240
|
-
|
|
241
|
-
--PERFORM pg_notify('debug', concat_ws(' ', 'TABLE', TG_TABLE_NAME, TG_OP));
|
|
242
|
-
|
|
243
|
-
escaped_table := concat_ws('.', CASE WHEN TG_TABLE_SCHEMA <> CURRENT_SCHEMA THEN format('%I', TG_TABLE_SCHEMA) END, format('%I', TG_TABLE_NAME));
|
|
244
|
-
|
|
245
|
-
SELECT string_agg(
|
|
246
|
-
format(
|
|
247
|
-
$c$
|
|
248
|
-
SELECT CASE WHEN EXISTS(
|
|
249
|
-
SELECT 1
|
|
250
|
-
FROM %s
|
|
251
|
-
WHERE %s
|
|
252
|
-
) THEN %s::text END AS t_ids
|
|
253
|
-
$c$,
|
|
254
|
-
table_name,
|
|
255
|
-
condition,
|
|
256
|
-
id
|
|
257
|
-
),
|
|
258
|
-
E' UNION \n '
|
|
259
|
-
)
|
|
260
|
-
INTO unions
|
|
261
|
-
FROM prostgles.v_triggers
|
|
262
|
-
WHERE table_name = escaped_table;
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
/* unions = 'old_table union new_table' or any one of the tables */
|
|
266
|
-
IF unions IS NOT NULL THEN
|
|
267
|
-
|
|
268
|
-
SELECT
|
|
269
|
-
format(
|
|
270
|
-
E'WITH %I AS (\n %s \n) ',
|
|
271
|
-
TG_TABLE_NAME,
|
|
272
|
-
concat_ws(
|
|
273
|
-
E' UNION ALL \n ',
|
|
274
|
-
CASE WHEN (TG_OP = 'DELETE' OR TG_OP = 'UPDATE') THEN ' SELECT * FROM old_table ' END,
|
|
275
|
-
CASE WHEN (TG_OP = 'INSERT' OR TG_OP = 'UPDATE') THEN ' SELECT * FROM new_table ' END
|
|
276
|
-
)
|
|
277
|
-
)
|
|
278
|
-
||
|
|
279
|
-
COALESCE((
|
|
280
|
-
SELECT ', ' || string_agg(format(E' %s AS ( \n %s \n ) ', related_view_name, related_view_def), ', ')
|
|
281
|
-
FROM (
|
|
282
|
-
SELECT DISTINCT related_view_name, related_view_def
|
|
283
|
-
FROM prostgles.v_triggers
|
|
284
|
-
WHERE table_name = escaped_table
|
|
285
|
-
AND related_view_name IS NOT NULL
|
|
286
|
-
AND related_view_def IS NOT NULL
|
|
287
|
-
) t
|
|
288
|
-
), '')
|
|
289
|
-
||
|
|
290
|
-
format(
|
|
291
|
-
$c$
|
|
292
|
-
SELECT ARRAY_AGG(DISTINCT t.t_ids)
|
|
293
|
-
FROM (
|
|
294
|
-
%s
|
|
295
|
-
) t
|
|
296
|
-
$c$,
|
|
297
|
-
unions
|
|
298
|
-
)
|
|
299
|
-
INTO query;
|
|
300
|
-
|
|
301
|
-
BEGIN
|
|
302
|
-
EXECUTE query INTO t_ids;
|
|
303
|
-
|
|
304
|
-
--RAISE NOTICE 'trigger fired ok';
|
|
305
|
-
|
|
306
|
-
EXCEPTION WHEN OTHERS THEN
|
|
307
|
-
|
|
308
|
-
has_errors := TRUE;
|
|
309
|
-
|
|
310
|
-
GET STACKED DIAGNOSTICS
|
|
311
|
-
err_text = MESSAGE_TEXT,
|
|
312
|
-
err_detail = PG_EXCEPTION_DETAIL,
|
|
313
|
-
err_hint = PG_EXCEPTION_HINT;
|
|
314
|
-
|
|
315
|
-
END;
|
|
316
|
-
|
|
317
|
-
--RAISE NOTICE 'has_errors: % ', has_errors;
|
|
318
|
-
--RAISE NOTICE 'unions: % , cids: %', unions, c_ids;
|
|
319
|
-
|
|
320
|
-
IF (t_ids IS NOT NULL OR has_errors) THEN
|
|
321
|
-
|
|
322
|
-
FOR v_trigger IN
|
|
323
|
-
SELECT app_id, string_agg(c_id::text, ',') as cids
|
|
324
|
-
FROM prostgles.v_triggers
|
|
325
|
-
WHERE id = ANY(t_ids)
|
|
326
|
-
OR has_errors
|
|
327
|
-
GROUP BY app_id
|
|
328
|
-
LOOP
|
|
329
|
-
|
|
330
|
-
PERFORM pg_notify(
|
|
331
|
-
${asValue(NOTIF_CHANNEL.preffix)} || v_trigger.app_id ,
|
|
332
|
-
LEFT(concat_ws(
|
|
333
|
-
${asValue(DELIMITER)},
|
|
334
|
-
|
|
335
|
-
${asValue(NOTIF_TYPE.data)},
|
|
336
|
-
COALESCE(escaped_table, 'MISSING'),
|
|
337
|
-
COALESCE(TG_OP, 'MISSING'),
|
|
338
|
-
CASE WHEN has_errors
|
|
339
|
-
THEN concat_ws('; ', 'error', err_text, err_detail, err_hint, 'query: ' || query )
|
|
340
|
-
ELSE COALESCE(v_trigger.cids, '')
|
|
341
|
-
END
|
|
342
|
-
${debugMode ? ", COALESCE(current_query(), 'current_query ??'), ' ', query" : ""}
|
|
343
|
-
), 7999/4) -- Some chars are 2bytes -> 'Ω'
|
|
344
|
-
);
|
|
345
|
-
END LOOP;
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
IF has_errors THEN
|
|
349
|
-
|
|
350
|
-
DELETE FROM prostgles.app_triggers;
|
|
351
|
-
RAISE NOTICE 'trigger dropped due to exception: % % %', err_text, err_detail, err_hint;
|
|
352
|
-
|
|
353
|
-
END IF;
|
|
354
|
-
|
|
355
|
-
END IF;
|
|
356
|
-
END IF;
|
|
357
|
-
|
|
358
|
-
${getAppCheckQuery()}
|
|
359
|
-
|
|
360
|
-
RETURN NULL;
|
|
361
|
-
|
|
362
|
-
END;
|
|
363
|
-
|
|
364
|
-
$$ LANGUAGE plpgsql;
|
|
365
|
-
COMMENT ON FUNCTION ${DB_OBJ_NAMES.data_watch_func} IS 'Prostgles internal function used to notify when data in the table changed';
|
|
223
|
+
${getDataWatchFunctionQuery(debugMode)}
|
|
366
224
|
|
|
367
225
|
CREATE OR REPLACE FUNCTION ${DB_OBJ_NAMES.trigger_add_remove_func}() RETURNS TRIGGER
|
|
368
226
|
AS $$
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { DB_OBJ_NAMES } from "../getPubSubManagerInitQuery";
|
|
2
|
+
import { getAppCheckQuery } from "../orphanTriggerCheck";
|
|
3
|
+
import { asValue, DELIMITER, NOTIF_CHANNEL, NOTIF_TYPE } from "../PubSubManagerUtils";
|
|
4
|
+
|
|
5
|
+
export const getDataWatchFunctionQuery = (debugMode: boolean | undefined) => {
|
|
6
|
+
return `
|
|
7
|
+
|
|
8
|
+
CREATE OR REPLACE FUNCTION ${DB_OBJ_NAMES.data_watch_func}() RETURNS TRIGGER
|
|
9
|
+
AS $$
|
|
10
|
+
|
|
11
|
+
DECLARE t_ids TEXT[];
|
|
12
|
+
DECLARE c_ids INTEGER[];
|
|
13
|
+
DECLARE err_c_ids INTEGER[];
|
|
14
|
+
DECLARE unions TEXT := '';
|
|
15
|
+
DECLARE query TEXT := '';
|
|
16
|
+
DECLARE v_trigger RECORD;
|
|
17
|
+
DECLARE has_errors BOOLEAN := FALSE;
|
|
18
|
+
|
|
19
|
+
DECLARE err_text TEXT;
|
|
20
|
+
DECLARE err_detail TEXT;
|
|
21
|
+
DECLARE err_hint TEXT;
|
|
22
|
+
|
|
23
|
+
DECLARE view_def_query TEXT := '';
|
|
24
|
+
|
|
25
|
+
DECLARE escaped_table TEXT;
|
|
26
|
+
|
|
27
|
+
DECLARE changed_columns TEXT := NULL;
|
|
28
|
+
|
|
29
|
+
BEGIN
|
|
30
|
+
|
|
31
|
+
--PERFORM pg_notify('debug', concat_ws(' ', 'TABLE', TG_TABLE_NAME, TG_OP));
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
-- Determine changed columns for UPDATE operations
|
|
35
|
+
IF TG_OP = 'UPDATE' THEN
|
|
36
|
+
WITH cols AS (
|
|
37
|
+
SELECT column_name::text
|
|
38
|
+
FROM information_schema.columns
|
|
39
|
+
WHERE table_schema = TG_TABLE_SCHEMA
|
|
40
|
+
AND table_name = TG_TABLE_NAME
|
|
41
|
+
),
|
|
42
|
+
changed AS (
|
|
43
|
+
SELECT column_name
|
|
44
|
+
FROM cols
|
|
45
|
+
WHERE EXISTS (
|
|
46
|
+
SELECT 1 FROM new_table n
|
|
47
|
+
JOIN old_table o ON TRUE
|
|
48
|
+
WHERE n.* IS DISTINCT FROM o.*
|
|
49
|
+
LIMIT 1
|
|
50
|
+
)
|
|
51
|
+
)
|
|
52
|
+
SELECT string_agg(column_name, ',') INTO changed_columns
|
|
53
|
+
FROM changed;
|
|
54
|
+
END IF;
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
escaped_table := concat_ws('.', CASE WHEN TG_TABLE_SCHEMA <> CURRENT_SCHEMA THEN format('%I', TG_TABLE_SCHEMA) END, format('%I', TG_TABLE_NAME));
|
|
58
|
+
|
|
59
|
+
SELECT string_agg(
|
|
60
|
+
format(
|
|
61
|
+
$c$
|
|
62
|
+
SELECT CASE WHEN EXISTS(
|
|
63
|
+
SELECT 1
|
|
64
|
+
FROM %s
|
|
65
|
+
WHERE %s
|
|
66
|
+
) THEN %s::text END AS t_ids
|
|
67
|
+
$c$,
|
|
68
|
+
table_name,
|
|
69
|
+
condition,
|
|
70
|
+
id
|
|
71
|
+
),
|
|
72
|
+
E' UNION \n '
|
|
73
|
+
)
|
|
74
|
+
INTO unions
|
|
75
|
+
FROM prostgles.v_triggers
|
|
76
|
+
WHERE table_name = escaped_table;
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
/* unions = 'old_table union new_table' or any one of the tables */
|
|
80
|
+
IF unions IS NOT NULL THEN
|
|
81
|
+
|
|
82
|
+
SELECT
|
|
83
|
+
format(
|
|
84
|
+
E'WITH %I AS (\n %s \n) ',
|
|
85
|
+
TG_TABLE_NAME,
|
|
86
|
+
concat_ws(
|
|
87
|
+
E' UNION ALL \n ',
|
|
88
|
+
CASE WHEN (TG_OP = 'DELETE' OR TG_OP = 'UPDATE') THEN ' SELECT * FROM old_table ' END,
|
|
89
|
+
CASE WHEN (TG_OP = 'INSERT' OR TG_OP = 'UPDATE') THEN ' SELECT * FROM new_table ' END
|
|
90
|
+
)
|
|
91
|
+
)
|
|
92
|
+
||
|
|
93
|
+
COALESCE((
|
|
94
|
+
SELECT ', ' || string_agg(format(E' %s AS ( \n %s \n ) ', related_view_name, related_view_def), ', ')
|
|
95
|
+
FROM (
|
|
96
|
+
SELECT DISTINCT related_view_name, related_view_def
|
|
97
|
+
FROM prostgles.v_triggers
|
|
98
|
+
WHERE table_name = escaped_table
|
|
99
|
+
AND related_view_name IS NOT NULL
|
|
100
|
+
AND related_view_def IS NOT NULL
|
|
101
|
+
) t
|
|
102
|
+
), '')
|
|
103
|
+
||
|
|
104
|
+
format(
|
|
105
|
+
$c$
|
|
106
|
+
SELECT ARRAY_AGG(DISTINCT t.t_ids)
|
|
107
|
+
FROM (
|
|
108
|
+
%s
|
|
109
|
+
) t
|
|
110
|
+
$c$,
|
|
111
|
+
unions
|
|
112
|
+
)
|
|
113
|
+
INTO query;
|
|
114
|
+
|
|
115
|
+
BEGIN
|
|
116
|
+
EXECUTE query INTO t_ids;
|
|
117
|
+
|
|
118
|
+
--RAISE NOTICE 'trigger fired ok';
|
|
119
|
+
|
|
120
|
+
EXCEPTION WHEN OTHERS THEN
|
|
121
|
+
|
|
122
|
+
has_errors := TRUE;
|
|
123
|
+
|
|
124
|
+
GET STACKED DIAGNOSTICS
|
|
125
|
+
err_text = MESSAGE_TEXT,
|
|
126
|
+
err_detail = PG_EXCEPTION_DETAIL,
|
|
127
|
+
err_hint = PG_EXCEPTION_HINT;
|
|
128
|
+
|
|
129
|
+
END;
|
|
130
|
+
|
|
131
|
+
--RAISE NOTICE 'has_errors: % ', has_errors;
|
|
132
|
+
--RAISE NOTICE 'unions: % , cids: %', unions, c_ids;
|
|
133
|
+
|
|
134
|
+
IF (t_ids IS NOT NULL OR has_errors) THEN
|
|
135
|
+
|
|
136
|
+
FOR v_trigger IN
|
|
137
|
+
SELECT app_id, string_agg(c_id::text, ',') as cids
|
|
138
|
+
FROM prostgles.v_triggers
|
|
139
|
+
WHERE id = ANY(t_ids)
|
|
140
|
+
OR has_errors
|
|
141
|
+
GROUP BY app_id
|
|
142
|
+
LOOP
|
|
143
|
+
|
|
144
|
+
PERFORM pg_notify(
|
|
145
|
+
${asValue(NOTIF_CHANNEL.preffix)} || v_trigger.app_id ,
|
|
146
|
+
LEFT(concat_ws(
|
|
147
|
+
${asValue(DELIMITER)},
|
|
148
|
+
|
|
149
|
+
${asValue(NOTIF_TYPE.data)},
|
|
150
|
+
COALESCE(escaped_table, 'MISSING'),
|
|
151
|
+
COALESCE(TG_OP, 'MISSING'),
|
|
152
|
+
CASE WHEN has_errors
|
|
153
|
+
THEN concat_ws('; ', 'error', err_text, err_detail, err_hint, 'query: ' || query )
|
|
154
|
+
ELSE COALESCE(v_trigger.cids, '')
|
|
155
|
+
END,
|
|
156
|
+
COALESCE(changed_columns, '')
|
|
157
|
+
${debugMode ? ", COALESCE(current_query(), 'current_query ??'), ' ', query" : ""}
|
|
158
|
+
), 7999/4) -- Some chars are 2bytes -> 'Ω'
|
|
159
|
+
);
|
|
160
|
+
END LOOP;
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
IF has_errors THEN
|
|
164
|
+
|
|
165
|
+
DELETE FROM prostgles.app_triggers;
|
|
166
|
+
RAISE NOTICE 'trigger dropped due to exception: % % %', err_text, err_detail, err_hint;
|
|
167
|
+
|
|
168
|
+
END IF;
|
|
169
|
+
|
|
170
|
+
END IF;
|
|
171
|
+
END IF;
|
|
172
|
+
|
|
173
|
+
${getAppCheckQuery()}
|
|
174
|
+
|
|
175
|
+
RETURN NULL;
|
|
176
|
+
|
|
177
|
+
END;
|
|
178
|
+
|
|
179
|
+
$$ LANGUAGE plpgsql;
|
|
180
|
+
COMMENT ON FUNCTION ${DB_OBJ_NAMES.data_watch_func} IS 'Prostgles internal function used to notify when data in the table changed';
|
|
181
|
+
|
|
182
|
+
`;
|
|
183
|
+
};
|
|
@@ -60,8 +60,11 @@ export async function initPubSubManager(this: PubSubManager): Promise<PubSubMana
|
|
|
60
60
|
[this.appId, check_frequency_ms, watching_schema_tag_names]
|
|
61
61
|
);
|
|
62
62
|
|
|
63
|
-
const appRecord = await this.db.one
|
|
64
|
-
|
|
63
|
+
const appRecord = await this.db.one<{ application_name: string | null }>(
|
|
64
|
+
"SELECT * FROM prostgles.apps WHERE id = $1",
|
|
65
|
+
[this.appId]
|
|
66
|
+
);
|
|
67
|
+
if (!appRecord.application_name?.includes(this.appId)) {
|
|
65
68
|
throw `initPubSubManager error: App record with application_name containing appId (${this.appId}) not found`;
|
|
66
69
|
}
|
|
67
70
|
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { includes, pickKeys } from "prostgles-types";
|
|
1
|
+
import { includes, pickKeys, tryCatchV2 } from "prostgles-types";
|
|
2
2
|
import { parseFieldFilter } from "../DboBuilder/ViewHandler/parseFieldFilter";
|
|
3
3
|
import { PubSubManager } from "./PubSubManager";
|
|
4
4
|
import { DELIMITER, log, NOTIF_TYPE, type NotifTypeName } from "./PubSubManagerUtils";
|
|
5
|
+
import { getJSONBObjectSchemaValidationError } from "../JSONBValidation/JSONBValidation";
|
|
5
6
|
|
|
6
7
|
/* Relay relevant data to relevant subscriptions */
|
|
7
8
|
export async function notifListener(this: PubSubManager, data: { payload: string }) {
|
|
@@ -68,7 +69,7 @@ export async function notifListener(this: PubSubManager, data: { payload: string
|
|
|
68
69
|
throw "notifListener: dataArr length < 3";
|
|
69
70
|
}
|
|
70
71
|
|
|
71
|
-
const [_, table_name, op_name, condition_ids_str] = dataArr;
|
|
72
|
+
const [_, table_name, op_name, condition_ids_str, changed_columns_str = ""] = dataArr;
|
|
72
73
|
const condition_ids = condition_ids_str?.split(",").map((v) => +v);
|
|
73
74
|
|
|
74
75
|
if (!table_name) {
|
|
@@ -130,9 +131,23 @@ export async function notifListener(this: PubSubManager, data: { payload: string
|
|
|
130
131
|
((sub.socket_id && this.sockets[sub.socket_id]) || sub.localFuncs)
|
|
131
132
|
)
|
|
132
133
|
);
|
|
134
|
+
const { data: changedColValidation } = tryCatchV2(() =>
|
|
135
|
+
getJSONBObjectSchemaValidationError(
|
|
136
|
+
{ cols: "string[]" },
|
|
137
|
+
{ cols: JSON.parse(`[${changed_columns_str}]`) as string[] },
|
|
138
|
+
"cols"
|
|
139
|
+
)
|
|
140
|
+
);
|
|
141
|
+
const changedColumns = changedColValidation?.data?.cols;
|
|
142
|
+
|
|
133
143
|
activeAndReadySubs.forEach((sub) => {
|
|
134
144
|
const { throttle = 0, throttleOpts, actions } = sub.subscribeOptions;
|
|
135
|
-
|
|
145
|
+
if (changedColumns?.length) {
|
|
146
|
+
const subFieldsHaveChanged = changedColumns.some((changedColumn) =>
|
|
147
|
+
sub.newQuery.select.some((f) => f.fields.includes(changedColumn))
|
|
148
|
+
);
|
|
149
|
+
if (!subFieldsHaveChanged) return;
|
|
150
|
+
}
|
|
136
151
|
const commandLowerCase = (op_name?.toLowerCase() || "insert") as keyof NonNullable<
|
|
137
152
|
typeof actions
|
|
138
153
|
>;
|