prostgles-server 4.2.300 → 4.2.302

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.
@@ -98,9 +98,6 @@ async function addTrigger(params, viewOptions, socket) {
98
98
  }
99
99
  exports.addTrigger = addTrigger;
100
100
  const getColumnsInfo = ({ tracked_columns, table_name }, tableHandler) => {
101
- if (tracked_columns && !tracked_columns.length) {
102
- throw "tracked_columns cannot be defined and empty";
103
- }
104
101
  let hasPkey = false;
105
102
  const cols = tableHandler.columns?.map((c) => {
106
103
  hasPkey = hasPkey || c.is_pkey;
@@ -114,6 +111,9 @@ const getColumnsInfo = ({ tracked_columns, table_name }, tableHandler) => {
114
111
  throw `tracked_columns ${colName} not found in table ${table_name}`;
115
112
  }
116
113
  });
114
+ /**
115
+ * TODO: finish tracked_columns by trigger condition
116
+ */
117
117
  const columns_info = !hasPkey || !cols || !tracked_columns?.length || tracked_columns.length === cols.length ?
118
118
  null
119
119
  : {
@@ -121,12 +121,12 @@ const getColumnsInfo = ({ tracked_columns, table_name }, tableHandler) => {
121
121
  .filter((c) => c.is_pkey)
122
122
  .map((c) => `n.${(0, prostgles_types_1.asName)(c.name)} = o.${(0, prostgles_types_1.asName)(c.name)}`)
123
123
  .join(" AND "),
124
- tracked_columns: tracked_columns.reduce((acc, colName) => ({
124
+ tracked_columns: cols.reduce((acc, { name }) => ({
125
125
  ...acc,
126
- [colName]: 1,
126
+ [name]: 1,
127
127
  }), {}),
128
128
  where_statement: cols
129
- .filter((c) => !c.is_pkey && tracked_columns.includes(c.name))
129
+ // .filter((c) => !c.is_pkey && tracked_columns.includes(c.name))
130
130
  .map((c) => `column_name = ${(0, PubSubManagerUtils_1.asValue)(c.name)} AND (ROW(n.*) IS NULL OR n.${(0, prostgles_types_1.asName)(c.name)}${c.cast_to} IS DISTINCT FROM o.${(0, prostgles_types_1.asName)(c.name)}${c.cast_to})`)
131
131
  .join(" OR \n"),
132
132
  };
@@ -1 +1 @@
1
- {"version":3,"file":"addTrigger.js","sourceRoot":"","sources":["../../lib/PubSubManager/addTrigger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"addTrigger.js","sourceRoot":"","sources":["../../lib/PubSubManager/addTrigger.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"getDataWatchFunctionQuery.d.ts","sourceRoot":"","sources":["../../../lib/PubSubManager/init/getDataWatchFunctionQuery.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,eAAO,MAAM,iCAAiC,UAAkB,CAAC;AACjE,eAAO,MAAM,yBAAyB,cAAe,OAAO,GAAG,SAAS,WA4JvE,CAAC"}
1
+ {"version":3,"file":"getDataWatchFunctionQuery.d.ts","sourceRoot":"","sources":["../../../lib/PubSubManager/init/getDataWatchFunctionQuery.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,eAAO,MAAM,iCAAiC,UAAkB,CAAC;AACjE,eAAO,MAAM,yBAAyB,cAAe,OAAO,GAAG,SAAS,WA0JvE,CAAC"}
@@ -33,9 +33,7 @@ const getDataWatchFunctionQuery = (debugMode) => {
33
33
 
34
34
  DECLARE _columns_info JSONB := NULL;
35
35
 
36
- DECLARE changed_columns _TEXT := NULL;
37
-
38
- DECLARE tracked_columns _TEXT := NULL;
36
+ DECLARE changed_columns _TEXT := NULL;
39
37
 
40
38
  BEGIN
41
39
 
@@ -173,21 +171,14 @@ exports.getDataWatchFunctionQuery = getDataWatchFunctionQuery;
173
171
  const CHANGED_COLUMNS_CHECK = `
174
172
  -- Determine changed columns for UPDATE operations
175
173
  IF TG_OP = 'UPDATE' THEN
176
-
177
- WITH cte1 AS (
178
- SELECT array_agg(DISTINCT col) AS cols
179
- FROM prostgles.v_triggers
180
- LEFT JOIN LATERAL jsonb_object_keys(columns_info ->'tracked_columns') col
181
- ON TRUE
174
+
175
+ IF NOT EXISTS (
176
+ SELECT 1
177
+ FROM prostgles.v_triggers
182
178
  WHERE table_name = escaped_table
183
- )
184
- SELECT cols
185
- INTO tracked_columns
186
- FROM cte1
187
- /* If any value is null it means that specific condition is tracking all columns so we need to check them all */
188
- WHERE array_position(cols, null) IS NULL;
189
-
190
- IF tracked_columns IS NOT NULL THEN
179
+ /* If any value is null it means some condition is tracking all columns so we need to check them all */
180
+ AND columns_info IS NULL
181
+ ) THEN
191
182
 
192
183
  SELECT columns_info
193
184
  INTO _columns_info
@@ -200,7 +191,7 @@ IF TG_OP = 'UPDATE' THEN
200
191
  $c$
201
192
  WITH changed AS (
202
193
  SELECT column_name
203
- FROM unnest(%L::_TEXT) as column_name
194
+ FROM jsonb_object_keys(%L) as column_name
204
195
  WHERE EXISTS (
205
196
  SELECT 1
206
197
  FROM old_table o
@@ -212,7 +203,7 @@ IF TG_OP = 'UPDATE' THEN
212
203
  SELECT array_agg(column_name)
213
204
  FROM changed;
214
205
  $c$,
215
- tracked_columns,
206
+ _columns_info->'tracked_columns',
216
207
  _columns_info->>'join_condition',
217
208
  _columns_info->>'where_statement'
218
209
  );
@@ -223,10 +214,6 @@ IF TG_OP = 'UPDATE' THEN
223
214
 
224
215
  /* It is possible to get no changes */
225
216
  changed_columns := COALESCE(changed_columns, '{}');
226
-
227
- IF NOT starts_with(changed_columns::TEXT, '{') THEN
228
- RAISE EXCEPTION 'changed_columns is not a JSON array: %', changed_columns;
229
- END IF;
230
217
 
231
218
  END IF;
232
219
 
@@ -1 +1 @@
1
- {"version":3,"file":"getDataWatchFunctionQuery.js","sourceRoot":"","sources":["../../../lib/PubSubManager/init/getDataWatchFunctionQuery.ts"],"names":[],"mappings":";;;AAAA,2EAA2D;AAC3D,8DAAyD;AACzD,8DAAsF;AAEtF;;;GAGG;AACU,QAAA,iCAAiC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC1D,MAAM,yBAAyB,GAAG,CAAC,SAA8B,EAAE,EAAE;IAC1E,OAAO;;qCAE4B,wCAAY,CAAC,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA6B/C,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAsFP,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;AA5JW,QAAA,yBAAyB,6BA4JpC;AAEF;;GAEG;AACH,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+D7B,CAAC"}
1
+ {"version":3,"file":"getDataWatchFunctionQuery.js","sourceRoot":"","sources":["../../../lib/PubSubManager/init/getDataWatchFunctionQuery.ts"],"names":[],"mappings":";;;AAAA,2EAA2D;AAC3D,8DAAyD;AACzD,8DAAsF;AAEtF;;;GAGG;AACU,QAAA,iCAAiC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC1D,MAAM,yBAAyB,GAAG,CAAC,SAA8B,EAAE,EAAE;IAC1E,OAAO;;qCAE4B,wCAAY,CAAC,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA2B/C,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAsFP,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;AA1JW,QAAA,yBAAyB,6BA0JpC;AAEF;;GAEG;AACH,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoD7B,CAAC"}
@@ -121,10 +121,6 @@ const getColumnsInfo = (
121
121
  { tracked_columns, table_name }: AddTriggerParams,
122
122
  tableHandler: Partial<TableHandler>
123
123
  ) => {
124
- if (tracked_columns && !tracked_columns.length) {
125
- throw "tracked_columns cannot be defined and empty";
126
- }
127
-
128
124
  let hasPkey = false as boolean;
129
125
  const cols = tableHandler.columns?.map((c) => {
130
126
  hasPkey = hasPkey || c.is_pkey;
@@ -138,6 +134,9 @@ const getColumnsInfo = (
138
134
  throw `tracked_columns ${colName} not found in table ${table_name}`;
139
135
  }
140
136
  });
137
+ /**
138
+ * TODO: finish tracked_columns by trigger condition
139
+ */
141
140
  const columns_info =
142
141
  !hasPkey || !cols || !tracked_columns?.length || tracked_columns.length === cols.length ?
143
142
  null
@@ -146,15 +145,15 @@ const getColumnsInfo = (
146
145
  .filter((c) => c.is_pkey)
147
146
  .map((c) => `n.${asName(c.name)} = o.${asName(c.name)}`)
148
147
  .join(" AND "),
149
- tracked_columns: tracked_columns.reduce(
150
- (acc, colName) => ({
148
+ tracked_columns: cols.reduce(
149
+ (acc, { name }) => ({
151
150
  ...acc,
152
- [colName]: 1,
151
+ [name]: 1,
153
152
  }),
154
153
  {} as Record<string, number>
155
154
  ),
156
155
  where_statement: cols
157
- .filter((c) => !c.is_pkey && tracked_columns.includes(c.name))
156
+ // .filter((c) => !c.is_pkey && tracked_columns.includes(c.name))
158
157
  .map(
159
158
  (c) =>
160
159
  `column_name = ${asValue(c.name)} AND (ROW(n.*) IS NULL OR n.${asName(c.name)}${c.cast_to} IS DISTINCT FROM o.${asName(c.name)}${c.cast_to})`
@@ -31,9 +31,7 @@ export const getDataWatchFunctionQuery = (debugMode: boolean | undefined) => {
31
31
 
32
32
  DECLARE _columns_info JSONB := NULL;
33
33
 
34
- DECLARE changed_columns _TEXT := NULL;
35
-
36
- DECLARE tracked_columns _TEXT := NULL;
34
+ DECLARE changed_columns _TEXT := NULL;
37
35
 
38
36
  BEGIN
39
37
 
@@ -171,21 +169,14 @@ export const getDataWatchFunctionQuery = (debugMode: boolean | undefined) => {
171
169
  const CHANGED_COLUMNS_CHECK = `
172
170
  -- Determine changed columns for UPDATE operations
173
171
  IF TG_OP = 'UPDATE' THEN
174
-
175
- WITH cte1 AS (
176
- SELECT array_agg(DISTINCT col) AS cols
177
- FROM prostgles.v_triggers
178
- LEFT JOIN LATERAL jsonb_object_keys(columns_info ->'tracked_columns') col
179
- ON TRUE
172
+
173
+ IF NOT EXISTS (
174
+ SELECT 1
175
+ FROM prostgles.v_triggers
180
176
  WHERE table_name = escaped_table
181
- )
182
- SELECT cols
183
- INTO tracked_columns
184
- FROM cte1
185
- /* If any value is null it means that specific condition is tracking all columns so we need to check them all */
186
- WHERE array_position(cols, null) IS NULL;
187
-
188
- IF tracked_columns IS NOT NULL THEN
177
+ /* If any value is null it means some condition is tracking all columns so we need to check them all */
178
+ AND columns_info IS NULL
179
+ ) THEN
189
180
 
190
181
  SELECT columns_info
191
182
  INTO _columns_info
@@ -198,7 +189,7 @@ IF TG_OP = 'UPDATE' THEN
198
189
  $c$
199
190
  WITH changed AS (
200
191
  SELECT column_name
201
- FROM unnest(%L::_TEXT) as column_name
192
+ FROM jsonb_object_keys(%L) as column_name
202
193
  WHERE EXISTS (
203
194
  SELECT 1
204
195
  FROM old_table o
@@ -210,7 +201,7 @@ IF TG_OP = 'UPDATE' THEN
210
201
  SELECT array_agg(column_name)
211
202
  FROM changed;
212
203
  $c$,
213
- tracked_columns,
204
+ _columns_info->'tracked_columns',
214
205
  _columns_info->>'join_condition',
215
206
  _columns_info->>'where_statement'
216
207
  );
@@ -221,10 +212,6 @@ IF TG_OP = 'UPDATE' THEN
221
212
 
222
213
  /* It is possible to get no changes */
223
214
  changed_columns := COALESCE(changed_columns, '{}');
224
-
225
- IF NOT starts_with(changed_columns::TEXT, '{') THEN
226
- RAISE EXCEPTION 'changed_columns is not a JSON array: %', changed_columns;
227
- END IF;
228
215
 
229
216
  END IF;
230
217
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prostgles-server",
3
- "version": "4.2.300",
3
+ "version": "4.2.302",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",