prostgles-server 4.2.535 → 4.2.538

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.
Files changed (55) hide show
  1. package/dist/DboBuilder/DboBuilder.d.ts +1 -1
  2. package/dist/DboBuilder/DboBuilderTypes.d.ts +3 -1
  3. package/dist/DboBuilder/DboBuilderTypes.d.ts.map +1 -1
  4. package/dist/DboBuilder/TableHandler/TableHandler.d.ts +3 -1
  5. package/dist/DboBuilder/TableHandler/TableHandler.d.ts.map +1 -1
  6. package/dist/DboBuilder/TableHandler/TableHandler.js +20 -6
  7. package/dist/DboBuilder/TableHandler/TableHandler.js.map +1 -1
  8. package/dist/DboBuilder/runSql/runSqlUtils.d.ts +1 -1
  9. package/dist/DboBuilder/schema/getTablesForSchemaPostgresSQL.d.ts.map +1 -1
  10. package/dist/DboBuilder/schema/getTablesForSchemaPostgresSQL.js +0 -4
  11. package/dist/DboBuilder/schema/getTablesForSchemaPostgresSQL.js.map +1 -1
  12. package/dist/JSONBSchemaValidation/validateJSONBSchemaSQL.d.ts +1 -1
  13. package/dist/Logging.d.ts +4 -1
  14. package/dist/Logging.d.ts.map +1 -1
  15. package/dist/PubSubManager/PubSubManager.d.ts +5 -4
  16. package/dist/PubSubManager/PubSubManager.d.ts.map +1 -1
  17. package/dist/PubSubManager/PubSubManager.js +4 -2
  18. package/dist/PubSubManager/PubSubManager.js.map +1 -1
  19. package/dist/PubSubManager/SyncReplication/fetchSyncServerData.d.ts +11 -0
  20. package/dist/PubSubManager/SyncReplication/fetchSyncServerData.d.ts.map +1 -0
  21. package/dist/PubSubManager/SyncReplication/fetchSyncServerData.js +25 -0
  22. package/dist/PubSubManager/SyncReplication/fetchSyncServerData.js.map +1 -0
  23. package/dist/PubSubManager/SyncReplication/getSyncBatchOptions.d.ts +14 -0
  24. package/dist/PubSubManager/SyncReplication/getSyncBatchOptions.d.ts.map +1 -0
  25. package/dist/PubSubManager/SyncReplication/getSyncBatchOptions.js +19 -0
  26. package/dist/PubSubManager/SyncReplication/getSyncBatchOptions.js.map +1 -0
  27. package/dist/PubSubManager/SyncReplication/getSyncOrderByAndFields.d.ts +8 -0
  28. package/dist/PubSubManager/SyncReplication/getSyncOrderByAndFields.d.ts.map +1 -0
  29. package/dist/PubSubManager/SyncReplication/getSyncOrderByAndFields.js +9 -0
  30. package/dist/PubSubManager/SyncReplication/getSyncOrderByAndFields.js.map +1 -0
  31. package/dist/PubSubManager/SyncReplication/getSyncUtilFunctions.d.ts +44 -0
  32. package/dist/PubSubManager/SyncReplication/getSyncUtilFunctions.d.ts.map +1 -0
  33. package/dist/{SyncReplication.js → PubSubManager/SyncReplication/getSyncUtilFunctions.js} +101 -232
  34. package/dist/PubSubManager/SyncReplication/getSyncUtilFunctions.js.map +1 -0
  35. package/dist/{SyncReplication.d.ts → PubSubManager/SyncReplication/syncData.d.ts} +4 -4
  36. package/dist/PubSubManager/SyncReplication/syncData.d.ts.map +1 -0
  37. package/dist/PubSubManager/SyncReplication/syncData.js +132 -0
  38. package/dist/PubSubManager/SyncReplication/syncData.js.map +1 -0
  39. package/dist/PubSubManager/addSync.d.ts.map +1 -1
  40. package/dist/PubSubManager/addSync.js +10 -9
  41. package/dist/PubSubManager/addSync.js.map +1 -1
  42. package/lib/DboBuilder/DboBuilderTypes.ts +2 -1
  43. package/lib/DboBuilder/TableHandler/TableHandler.ts +26 -8
  44. package/lib/DboBuilder/schema/getTablesForSchemaPostgresSQL.ts +0 -4
  45. package/lib/Logging.ts +16 -1
  46. package/lib/PubSubManager/PubSubManager.ts +7 -5
  47. package/lib/PubSubManager/SyncReplication/fetchSyncServerData.ts +55 -0
  48. package/lib/PubSubManager/SyncReplication/getSyncBatchOptions.ts +31 -0
  49. package/lib/PubSubManager/SyncReplication/getSyncOrderByAndFields.ts +11 -0
  50. package/lib/{SyncReplication.ts → PubSubManager/SyncReplication/getSyncUtilFunctions.ts} +173 -330
  51. package/lib/PubSubManager/SyncReplication/syncData.ts +195 -0
  52. package/lib/PubSubManager/addSync.ts +13 -18
  53. package/package.json +2 -2
  54. package/dist/SyncReplication.d.ts.map +0 -1
  55. package/dist/SyncReplication.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSyncOrderByAndFields.js","sourceRoot":"","sources":["../../../lib/PubSubManager/SyncReplication/getSyncOrderByAndFields.ts"],"names":[],"mappings":";;;AAGO,MAAM,uBAAuB,GAAG,CAAC,EACtC,YAAY,EACZ,SAAS,GACsC,EAAE,EAAE;IACnD,MAAM,WAAW,GAAG,CAAC,YAAY,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,EACrD,UAAU,GAAY,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAChF,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;AACrC,CAAC,CAAC;AAPW,QAAA,uBAAuB,2BAOlC"}
@@ -0,0 +1,44 @@
1
+ import { type AnyObject, type SyncBatchParams } from "prostgles-types";
2
+ import type { PRGLIOSocket } from "../../DboBuilder/DboBuilder";
3
+ import type { TableHandler } from "../../DboBuilder/TableHandler/TableHandler";
4
+ import type { PubSubManager, SyncParams } from "../PubSubManager";
5
+ import type { ClientSyncInfo, ServerSyncInfo, SyncBatchInfo } from "./syncData";
6
+ import type { EventTypes } from "../../Logging";
7
+ type Args = {
8
+ socket: PRGLIOSocket;
9
+ tableHandler: TableHandler;
10
+ sync: SyncParams;
11
+ pubSubManager: PubSubManager;
12
+ logSyncData: (state: Extract<EventTypes.Sync, {
13
+ command: "syncData";
14
+ }>["state"]) => void;
15
+ };
16
+ export declare const getSyncUtilFunctions: ({ socket, tableHandler, sync, pubSubManager, logSyncData, }: Args) => {
17
+ rowsIdsMatch: (a?: AnyObject, b?: AnyObject) => boolean | undefined;
18
+ rowsFullyMatch: (a?: AnyObject, b?: AnyObject) => boolean | undefined;
19
+ getServerRowInfo: (args?: SyncBatchParams) => Promise<ServerSyncInfo>;
20
+ getClientRowInfo: (args?: SyncBatchInfo) => Promise<Partial<{
21
+ c_fr: AnyObject;
22
+ c_lr: AnyObject;
23
+ c_count: number | string;
24
+ }>>;
25
+ getClientData: (from_synced: number | undefined, offset?: number) => Promise<AnyObject[]>;
26
+ getServerData: (from_synced: number | undefined, offset?: number) => Promise<AnyObject[]>;
27
+ deleteData: (deleted: AnyObject[]) => Promise<void>;
28
+ upsertData: (data: AnyObject[]) => Promise<{
29
+ inserted: number;
30
+ updated: number;
31
+ total: number;
32
+ }>;
33
+ pushData: (data: AnyObject[], isSynced?: boolean) => Promise<{
34
+ pushed: number;
35
+ resp: {
36
+ ok: boolean;
37
+ };
38
+ }>;
39
+ getLastSynced: (clientSyncInfo?: ClientSyncInfo) => Promise<number | null>;
40
+ updateSyncLR: (data: AnyObject[]) => void;
41
+ syncBatch: (from_synced: SyncBatchInfo["from_synced"]) => Promise<boolean>;
42
+ };
43
+ export {};
44
+ //# sourceMappingURL=getSyncUtilFunctions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSyncUtilFunctions.d.ts","sourceRoot":"","sources":["../../../lib/PubSubManager/SyncReplication/getSyncUtilFunctions.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,eAAe,EACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAE/E,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAElE,OAAO,KAAK,EACV,cAAc,EAEd,cAAc,EACd,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,YAAY,CAAC;IACrB,YAAY,EAAE,YAAY,CAAC;IAC3B,IAAI,EAAE,UAAU,CAAC;IACjB,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,UAAU,CAAA;KAAE,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;CAC1F,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,6DAMlC,IAAI;uBAciB,SAAS,MAAM,SAAS;yBAGtB,SAAS,MAAM,SAAS;8BAGd,eAAe,KAAQ,OAAO,CAAC,cAAc,CAAC;8BA6BpD,aAAa;;;;;iCAoBT,MAAM,GAAG,SAAS,sBAAe,OAAO,CAAC,SAAS,EAAE,CAAC;iCAkC/C,MAAM,GAAG,SAAS,sBAAe,OAAO,CAAC,SAAS,EAAE,CAAC;0BAM5D,SAAS,EAAE;uBA4Bd,SAAS,EAAE;;;;;qBA8Fb,SAAS,EAAE;gBAGvB,MAAM;cACR;YACJ,EAAE,EAAE,OAAO,CAAC;SACb;;qCAiCmC,cAAc,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;yBA8EzD,SAAS,EAAE;6BAmBD,aAAa,CAAC,aAAa,CAAC;CA8F/D,CAAC"}
@@ -1,57 +1,32 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.syncData = syncData;
3
+ exports.getSyncUtilFunctions = void 0;
4
4
  const prostgles_types_1 = require("prostgles-types");
5
- const PubSubManagerUtils_1 = require("./PubSubManager/PubSubManagerUtils");
6
- function getNumbers(numberArr) {
7
- return numberArr.filter((v) => v !== null && v !== undefined && Number.isFinite(+v));
8
- }
9
- /**
10
- * Server or client requested data sync
11
- */
12
- async function syncData(sync, clientData, source) {
13
- await this._log({
14
- type: "sync",
15
- command: "syncData",
16
- tableName: sync.table_name,
17
- sid: sync.sid,
18
- source,
19
- ...(0, prostgles_types_1.pickKeys)(sync, ["socket_id", "condition", "last_synced", "is_syncing"]),
20
- lr: JSON.stringify(sync.lr),
21
- connectedSocketIds: this.dboBuilder.prostgles.connectedSockets.map((s) => s.id),
22
- localParams: undefined,
23
- duration: -1,
24
- socketId: sync.socket_id,
25
- });
26
- const { socket_id, channel_name, table_name, filter, table_rules, params, synced_field, id_fields = [], batch_size, wal, throttle = 0, } = sync;
27
- const socket = this.sockets[socket_id];
28
- if (!socket) {
29
- return;
30
- }
31
- const tableHandler = this.dbo[table_name];
32
- if (!tableHandler?.find) {
33
- throw `dbo.${table_name}.find missing or not allowed`;
34
- }
35
- const sync_fields = [synced_field, ...id_fields.sort()], orderByAsc = sync_fields.reduce((a, v) => ({ ...a, [v]: true }), {}), rowsIdsMatch = (a, b) => {
5
+ const getSyncOrderByAndFields_1 = require("./getSyncOrderByAndFields");
6
+ const fetchSyncServerData_1 = require("./fetchSyncServerData");
7
+ const PubSubManagerUtils_1 = require("../PubSubManagerUtils");
8
+ const getSyncUtilFunctions = ({ socket, tableHandler, sync, pubSubManager, logSyncData, }) => {
9
+ const { synced_field, socket_id, id_fields, filter, table_rules, batch_size, channel_name, table_name, params, } = sync;
10
+ const { orderByAsc, sync_fields } = (0, getSyncOrderByAndFields_1.getSyncOrderByAndFields)({ synced_field, id_fields }), rowsIdsMatch = (a, b) => {
36
11
  return a && b && !id_fields.find((key) => a[key].toString() !== b[key].toString());
37
12
  }, rowsFullyMatch = (a, b) => {
38
13
  return rowsIdsMatch(a, b) && a?.[synced_field].toString() === b?.[synced_field].toString();
39
14
  }, getServerRowInfo = async (args = {}) => {
40
- const { from_synced = null, to_synced = null, offset = 0, limit } = args;
41
- const _filter = { ...filter };
42
- if (from_synced || to_synced) {
43
- _filter[synced_field] = {
44
- ...(from_synced ? { $gte: from_synced } : {}),
45
- ...(to_synced ? { $lte: to_synced } : {}),
15
+ const { from_synced, to_synced, offset = 0, limit } = args;
16
+ const batchFilter = { ...filter };
17
+ if ((0, prostgles_types_1.isDefined)(from_synced) || (0, prostgles_types_1.isDefined)(to_synced)) {
18
+ batchFilter[synced_field] = {
19
+ ...((0, prostgles_types_1.isDefined)(from_synced) ? { $gte: from_synced } : {}),
20
+ ...((0, prostgles_types_1.isDefined)(to_synced) ? { $lte: to_synced } : {}),
46
21
  };
47
22
  }
48
- const first_rows = await tableHandler.find(_filter, { orderBy: orderByAsc, select: sync_fields, limit, offset }, undefined, table_rules, { clientReq: { socket } });
23
+ const first_rows = (await tableHandler.find(batchFilter, { orderBy: orderByAsc, select: sync_fields, limit, offset }, undefined, table_rules, { clientReq: { socket } }));
49
24
  const last_rows = first_rows.slice(-1); // Why not logic below?
50
25
  // const last_rows = await _this?.dbo[table_name]?.find?.(_filter, { orderBy: (orderByDesc as OrderBy), select: sync_fields, limit: 1, offset: -offset || 0 }, null, table_rules);
51
- const count = await tableHandler.count(_filter, undefined, undefined, table_rules);
26
+ const count = await tableHandler.count(batchFilter, undefined, undefined, table_rules);
52
27
  return {
53
- s_fr: first_rows[0] || null,
54
- s_lr: last_rows[0] || null,
28
+ s_fr: first_rows[0],
29
+ s_lr: last_rows[0],
55
30
  s_count: count,
56
31
  };
57
32
  }, getClientRowInfo = (args = {}) => {
@@ -70,16 +45,15 @@ async function syncData(sync, clientData, source) {
70
45
  });
71
46
  });
72
47
  return res;
73
- }, getClientData = (from_synced = 0, offset = 0) => {
48
+ }, getClientData = (from_synced, offset = 0) => {
74
49
  return new Promise((resolve, reject) => {
75
50
  const onPullRequest = {
76
- from_synced: from_synced || 0,
51
+ from_synced: from_synced,
77
52
  offset: offset || 0,
78
53
  limit: batch_size,
79
54
  };
80
55
  socket.emit(channel_name, { onPullRequest }, (resp) => {
81
56
  if (resp && resp.data && Array.isArray(resp.data)) {
82
- // console.log({ onPullRequest, resp }, socket._user)
83
57
  resolve(sortClientData(resp.data));
84
58
  }
85
59
  else {
@@ -100,24 +74,8 @@ async function syncData(sync, clientData, source) {
100
74
  0);
101
75
  });
102
76
  }
103
- }, getServerData = async (from_synced = 0, offset = 0) => {
104
- const _filter = {
105
- ...filter,
106
- [synced_field]: { $gte: from_synced || 0 },
107
- };
108
- try {
109
- const res = await tableHandler.find(_filter, {
110
- select: params.select,
111
- orderBy: orderByAsc,
112
- offset: offset || 0,
113
- limit: batch_size,
114
- }, undefined, table_rules, { clientReq: { socket } });
115
- return res;
116
- }
117
- catch (e) {
118
- console.error("Sync getServerData failed: ", e);
119
- throw "INTERNAL ERROR";
120
- }
77
+ }, getServerData = async (from_synced, offset = 0) => {
78
+ return (0, fetchSyncServerData_1.fetchSyncServerData)({ tableHandler, socket, from_synced, offset }, { filter, id_fields, params, synced_field, batch_size, table_rules });
121
79
  }, deleteData = async (deleted) => {
122
80
  // console.log("deleteData deleteData deleteData " + deleted.length);
123
81
  // if (allow_delete) {
@@ -125,7 +83,7 @@ async function syncData(sync, clientData, source) {
125
83
  // deleted.map(async (d) => {
126
84
  // const id_filter = pickKeys(d, id_fields);
127
85
  // try {
128
- // await (this.dbo[table_name] as TableHandler).delete(
86
+ // await (pubSubManager.dbo[table_name] as TableHandler).delete(
129
87
  // id_filter,
130
88
  // undefined,
131
89
  // undefined,
@@ -148,44 +106,35 @@ async function syncData(sync, clientData, source) {
148
106
  */
149
107
  upsertData = async (data) => {
150
108
  const start = Date.now();
151
- const result = await this.dboBuilder
109
+ const result = await pubSubManager.dboBuilder
152
110
  .getTX(async (dbTX) => {
153
111
  const tableHandlerTx = dbTX[table_name];
154
112
  const existingData = await tableHandlerTx.find({ $or: data.map((d) => (0, prostgles_types_1.pickKeys)(d, id_fields)) }, {
155
113
  select: [synced_field, ...id_fields],
156
114
  orderBy: orderByAsc,
157
115
  }, undefined, table_rules, { clientReq: { socket } });
158
- let inserts = data.filter((d) => !existingData.find((ed) => rowsIdsMatch(ed, d)));
159
- let updates = data.filter((d) => existingData.find((ed) => rowsIdsMatch(ed, d) && +ed[synced_field] < +d[synced_field]));
160
- try {
161
- if (!table_rules)
162
- throw "table_rules missing";
163
- if (table_rules.update && updates.length) {
164
- const updateData = [];
165
- await Promise.all(updates.map((upd) => {
166
- const id_filter = (0, prostgles_types_1.pickKeys)(upd, id_fields);
167
- const syncSafeFilter = {
168
- $and: [id_filter, { [synced_field]: { "<": upd[synced_field] } }],
169
- };
170
- updateData.push([syncSafeFilter, (0, prostgles_types_1.omitKeys)(upd, id_fields)]);
171
- }));
172
- await tableHandlerTx.updateBatch(updateData, { removeDisallowedFields: true }, undefined, table_rules, { clientReq: { socket } });
173
- }
174
- else {
175
- updates = [];
176
- }
177
- if (table_rules.insert && inserts.length) {
178
- await tableHandlerTx.insert(inserts, { removeDisallowedFields: true }, undefined, table_rules, { clientReq: { socket } });
179
- }
180
- else {
181
- inserts = [];
182
- }
183
- return { inserts, updates };
116
+ let rowsToInsert = data.filter((d) => !existingData.find((ed) => rowsIdsMatch(ed, d)));
117
+ let rowsToUpdate = data.filter((d) => existingData.find((ed) => rowsIdsMatch(ed, d) && Number(ed[synced_field]) < Number(d[synced_field])));
118
+ if (table_rules.update && rowsToUpdate.length) {
119
+ const batchUpdates = rowsToUpdate.map((rowToUpdate) => {
120
+ const id_filter = (0, prostgles_types_1.pickKeys)(rowToUpdate, id_fields);
121
+ const syncSafeFilter = {
122
+ $and: [id_filter, { [synced_field]: { "<": rowToUpdate[synced_field] } }],
123
+ };
124
+ return [syncSafeFilter, (0, prostgles_types_1.omitKeys)(rowToUpdate, id_fields)];
125
+ });
126
+ await tableHandlerTx.updateBatch(batchUpdates, { removeDisallowedFields: true }, undefined, table_rules, { clientReq: { socket } });
184
127
  }
185
- catch (e) {
186
- console.trace(e);
187
- throw e;
128
+ else {
129
+ rowsToUpdate = [];
188
130
  }
131
+ if (table_rules.insert && rowsToInsert.length) {
132
+ await tableHandlerTx.insert(rowsToInsert, { removeDisallowedFields: true }, undefined, table_rules, { clientReq: { socket } });
133
+ }
134
+ else {
135
+ rowsToInsert = [];
136
+ }
137
+ return { inserts: rowsToInsert, updates: rowsToUpdate };
189
138
  })
190
139
  .then(({ inserts, updates }) => {
191
140
  (0, PubSubManagerUtils_1.log)(`upsertData: inserted( ${inserts.length} ) updated( ${updates.length} ) total( ${data.length} ) \n last insert ${JSON.stringify(inserts.at(-1))} \n last update ${JSON.stringify(updates.at(-1))}`);
@@ -199,15 +148,17 @@ async function syncData(sync, clientData, source) {
199
148
  console.trace("Something went wrong with syncing to server: " + err.message, data.length, id_fields);
200
149
  return Promise.reject(new Error("Something went wrong with syncing to server: "));
201
150
  });
202
- await this._log({
151
+ await pubSubManager._log({
203
152
  type: "sync",
204
153
  command: "upsertData",
154
+ channelName: channel_name,
205
155
  tableName: sync.table_name,
206
156
  rows: data.length,
207
157
  socketId: socket_id,
208
158
  sid: sync.sid,
209
159
  duration: Date.now() - start,
210
- connectedSocketIds: this.dboBuilder.prostgles.connectedSockets.map((s) => s.id),
160
+ connectedSocketIds: pubSubManager.dboBuilder.prostgles.connectedSockets.map((s) => s.id),
161
+ syncParams: sync,
211
162
  });
212
163
  return result;
213
164
  },
@@ -215,13 +166,13 @@ async function syncData(sync, clientData, source) {
215
166
  * Pushes the given data to client
216
167
  * @param isSynced = true if
217
168
  */
218
- pushData = async (data, isSynced = false, err = null) => {
169
+ pushData = async (data, isSynced = false) => {
219
170
  const start = Date.now();
220
171
  const result = await new Promise((resolve, reject) => {
221
172
  socket.emit(channel_name, { data, isSynced }, (resp) => {
222
173
  if (resp && resp.ok) {
223
174
  // console.log("PUSHED to client: fr/lr", data[0], data[data.length - 1]);
224
- resolve({ pushed: data?.length, resp });
175
+ resolve({ pushed: data.length, resp });
225
176
  }
226
177
  else {
227
178
  reject(resp);
@@ -229,15 +180,17 @@ async function syncData(sync, clientData, source) {
229
180
  }
230
181
  });
231
182
  });
232
- await this._log({
183
+ await pubSubManager._log({
233
184
  type: "sync",
234
185
  command: "pushData",
235
186
  tableName: sync.table_name,
236
- rows: data?.length ?? 0,
187
+ rows: data.length,
237
188
  socketId: socket_id,
238
189
  duration: Date.now() - start,
239
190
  sid: sync.sid,
240
- connectedSocketIds: this.dboBuilder.prostgles.connectedSockets.map((s) => s.id),
191
+ connectedSocketIds: pubSubManager.dboBuilder.prostgles.connectedSockets.map((s) => s.id),
192
+ channelName: channel_name,
193
+ syncParams: sync,
241
194
  });
242
195
  return result;
243
196
  },
@@ -253,18 +206,20 @@ async function syncData(sync, clientData, source) {
253
206
  // console.log("getLastSynced", clientData, socket._user )
254
207
  let result = null;
255
208
  /* Nothing to sync */
256
- if ((!c_fr && !s_fr) || rowsFullyMatch(c_lr, s_lr)) {
257
- // c_count === s_count &&
258
- // sync.last_synced = null;
259
- result = null;
260
- /* Sync Everything */
209
+ if (!c_fr && !s_fr) {
210
+ logSyncData("getLastSynced.nothingToSync");
211
+ return null;
212
+ }
213
+ if (rowsFullyMatch(c_lr, s_lr)) {
214
+ logSyncData("getLastSynced.rowsFullyMatch(lr)");
215
+ return null;
261
216
  }
262
- else if (!rowsFullyMatch(c_fr, s_fr)) {
217
+ if (!rowsFullyMatch(c_fr, s_fr)) {
263
218
  if (c_fr && s_fr) {
264
219
  result = Math.min(c_fr[synced_field], s_fr[synced_field]);
265
220
  }
266
- else if (c_fr || s_fr) {
267
- result = (c_fr || s_fr)[synced_field];
221
+ else {
222
+ result = (c_fr ?? s_fr)[synced_field];
268
223
  }
269
224
  /* Sync from last matching synced value */
270
225
  }
@@ -284,19 +239,17 @@ async function syncData(sync, clientData, source) {
284
239
  to_synced: result,
285
240
  end_offset,
286
241
  });
287
- // console.log("getLastSynced... end_offset > " + end_offset);
288
- let server_row;
242
+ let server_rows;
289
243
  if (c_lr) {
290
244
  const _filter = {};
291
245
  sync_fields.map((key) => {
292
246
  _filter[key] = c_lr[key];
293
247
  });
294
- server_row = await this.dbo[table_name]?.find(_filter, { select: sync_fields, limit: 1 }, undefined, table_rules, { clientReq: { socket } });
248
+ server_rows = await tableHandler.find(_filter, { select: sync_fields, limit: 1 }, undefined, table_rules, { clientReq: { socket } });
295
249
  }
296
- // if(rowsFullyMatch(c_lr, s_lr)){ //c_count === s_count &&
297
- if (server_row && server_row.length) {
298
- server_row = server_row[0];
299
- result = +server_row[synced_field];
250
+ const first_server_row = server_rows?.[0];
251
+ if (first_server_row) {
252
+ result = +first_server_row[synced_field];
300
253
  end_offset = min_count;
301
254
  // console.log(`getLastSynced found for ${table_name} -> ${result}`);
302
255
  }
@@ -309,23 +262,24 @@ async function syncData(sync, clientData, source) {
309
262
  }
310
263
  return result;
311
264
  }, updateSyncLR = (data) => {
312
- if (data.length) {
313
- const lastRow = data[data.length - 1];
314
- if (sync.lr?.[synced_field] && +sync.lr[synced_field] > +lastRow[synced_field]) {
315
- console.error({
316
- syncIssue: "sync.lr[synced_field] is greater than lastRow[synced_field]",
317
- }, sync.table_name);
318
- }
319
- sync.lr = lastRow;
320
- sync.last_synced = +sync.lr?.[synced_field];
265
+ const lastRow = data.at(-1);
266
+ if (!lastRow) {
267
+ return;
268
+ }
269
+ if (sync.lr?.[synced_field] && +sync.lr[synced_field] > +lastRow[synced_field]) {
270
+ console.error({
271
+ syncIssue: "sync.lr[synced_field] is greater than lastRow[synced_field]",
272
+ }, sync.table_name);
321
273
  }
274
+ sync.lr = lastRow;
275
+ sync.last_synced = +sync.lr[synced_field];
322
276
  },
323
277
  /**
324
278
  * Will push pull sync between client and server from a given from_synced value
325
279
  */
326
280
  syncBatch = async (from_synced) => {
327
281
  let offset = 0, canContinue = true;
328
- const limit = batch_size, min_synced = from_synced || 0, max_synced = from_synced;
282
+ const limit = batch_size, min_synced = from_synced ?? undefined;
329
283
  let inserted = 0, updated = 0, pushed = 0, total = 0;
330
284
  const deleted = 0;
331
285
  // console.log("syncBatch", from_synced)
@@ -342,7 +296,7 @@ async function syncData(sync, clientData, source) {
342
296
  }
343
297
  catch (e) {
344
298
  console.trace("sync getServerData err", e);
345
- await pushData(undefined, undefined, "Internal error. Check server logs");
299
+ // await pushData(undefined, undefined, "Internal error. Check server logs");
346
300
  throw " d";
347
301
  }
348
302
  // TODO: Implement delete ensuring:
@@ -354,7 +308,7 @@ async function syncData(sync, clientData, source) {
354
308
  // await Promise.all(
355
309
  // to_delete.map((d) => {
356
310
  // deleted++;
357
- // return (this.dbo[table_name] as TableHandler).delete(
311
+ // return (pubSubManager.dbo[table_name] as TableHandler).delete(
358
312
  // pickKeys(d, id_fields),
359
313
  // {},
360
314
  // undefined,
@@ -376,113 +330,28 @@ async function syncData(sync, clientData, source) {
376
330
  total += serverData.length;
377
331
  }
378
332
  offset += serverData.length;
379
- // canContinue = offset >= limit;
380
333
  canContinue = serverData.length >= limit;
381
- // console.log(`sData ${sData.length} limit ${limit}`);
382
334
  }
383
335
  (0, PubSubManagerUtils_1.log)(`server.syncBatch ${table_name}: inserted( ${inserted} ) updated( ${updated} ) deleted( ${deleted} ) pushed to client( ${pushed} ) total( ${total} )`, socket._user);
384
336
  return true;
385
337
  };
386
- if (!wal) {
387
- /* Used to throttle and merge incomming updates */
388
- sync.wal = new prostgles_types_1.WAL({
389
- id_fields,
390
- synced_field,
391
- throttle,
392
- batch_size,
393
- DEBUG_MODE: this.dboBuilder.prostgles.opts.DEBUG_MODE,
394
- onSendStart: () => {
395
- sync.is_syncing = true;
396
- },
397
- onSend: async (data) => {
398
- // console.log("WAL upsertData START", data)
399
- const res = await upsertData(data);
400
- // const max_incoming_synced = Math.max(...data.map(d => +d[synced_field]));
401
- // if(Number.isFinite(max_incoming_synced) && max_incoming_synced > +sync.last_synced){
402
- // sync.last_synced = max_incoming_synced;
403
- // }
404
- // console.log("WAL upsertData END")
405
- /******** */
406
- /* TO DO -> Store and push patch updates instead of full data if and where possible */
407
- /******** */
408
- // 1. Store successfully upserted wal items for a couple of seconds
409
- // 2. When pushing data to clients check if any matching wal items exist
410
- // 3. Replace text fields with matching patched data
411
- return res;
412
- },
413
- onSendEnd: (batch) => {
414
- updateSyncLR(batch);
415
- sync.is_syncing = false;
416
- // console.log("syncData from WAL.onSendEnd")
417
- /**
418
- * After all data was inserted request SyncInfo from client and sync again if necessary
419
- */
420
- void this.syncData(sync, undefined, source);
421
- },
422
- });
423
- }
424
- /* Debounce sync requests */
425
- if (!sync.wal)
426
- throw "sync.wal missing";
427
- if (!sync.wal.isSending() && sync.is_syncing) {
428
- if (!this.syncTimeout) {
429
- this.syncTimeout = setTimeout(() => {
430
- this.syncTimeout = undefined;
431
- // console.log("SYNC FROM TIMEOUT")
432
- void this.syncData(sync, undefined, source);
433
- }, throttle);
434
- }
435
- // console.log("SYNC THROTTLE")
436
- return;
437
- }
438
- // console.log("syncData", clientData)
439
- /**
440
- * Express data sent from a client that has already been synced
441
- * Add to WAL manager which will sync at the end
442
- */
443
- if (clientData) {
444
- if (clientData.data && Array.isArray(clientData.data) && clientData.data.length) {
445
- return sync.wal.addData(clientData.data.map((d) => ({ current: d })));
446
- // await upsertData(clientData.data, true);
447
- /* Not expecting this anymore. use normal db.table.delete channel */
448
- }
449
- else if (clientData.deleted &&
450
- Array.isArray(clientData.deleted) &&
451
- clientData.deleted.length) {
452
- await deleteData(clientData.deleted);
453
- }
454
- }
455
- else {
456
- // do nothing
457
- }
458
- if (sync.wal.isSending())
459
- return;
460
- sync.is_syncing = true;
461
- // from synced does not make sense. It should be sync.lr only!!!
462
- let from_synced = null;
463
- /** Sync was already synced */
464
- if (sync.lr) {
465
- const { s_lr } = await getServerRowInfo();
466
- /* Make sure trigger is not firing on freshly synced data */
467
- if (!rowsFullyMatch(sync.lr, s_lr)) {
468
- from_synced = sync.last_synced;
469
- }
470
- else {
471
- // console.log("rowsFullyMatch")
472
- }
473
- // console.log(table_name, sync.lr[synced_field])
474
- }
475
- else {
476
- from_synced = await getLastSynced(clientData);
477
- }
478
- if (from_synced !== null) {
479
- await syncBatch(from_synced);
480
- }
481
- else {
482
- // console.log("from_synced is null")
483
- }
484
- await pushData([], true);
485
- sync.is_syncing = false;
486
- // console.log(`Finished sync for ${table_name}`, socket._user);
338
+ return {
339
+ rowsIdsMatch,
340
+ rowsFullyMatch,
341
+ getServerRowInfo,
342
+ getClientRowInfo,
343
+ getClientData,
344
+ getServerData,
345
+ deleteData,
346
+ upsertData,
347
+ pushData,
348
+ getLastSynced,
349
+ updateSyncLR,
350
+ syncBatch,
351
+ };
352
+ };
353
+ exports.getSyncUtilFunctions = getSyncUtilFunctions;
354
+ function getNumbers(numberArr) {
355
+ return numberArr.filter((v) => v !== null && v !== undefined && Number.isFinite(+v));
487
356
  }
488
- //# sourceMappingURL=SyncReplication.js.map
357
+ //# sourceMappingURL=getSyncUtilFunctions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSyncUtilFunctions.js","sourceRoot":"","sources":["../../../lib/PubSubManager/SyncReplication/getSyncUtilFunctions.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import type { AnyObject } from "prostgles-types";
2
- import type { PubSubManager, SyncParams } from "./PubSubManager/PubSubManager";
2
+ import type { PubSubManager, SyncParams } from "../PubSubManager";
3
3
  export type ClientSyncInfo = Partial<{
4
4
  c_fr: AnyObject;
5
5
  c_lr: AnyObject;
6
6
  /**
7
- * PG count is ussually string due to bigint
7
+ * PG count is usually string due to bigint
8
8
  */
9
9
  c_count: number | string;
10
10
  }>;
@@ -12,7 +12,7 @@ export type ServerSyncInfo = Partial<{
12
12
  s_fr: AnyObject;
13
13
  s_lr: AnyObject;
14
14
  /**
15
- * PG count is ussually string due to bigint
15
+ * PG count is usually string due to bigint
16
16
  */
17
17
  s_count: number | string;
18
18
  }>;
@@ -34,4 +34,4 @@ export type ClientExpressData = ClientSyncInfo & {
34
34
  * Server or client requested data sync
35
35
  */
36
36
  export declare function syncData(this: PubSubManager, sync: SyncParams, clientData: ClientExpressData | undefined, source: "trigger" | "client"): Promise<void>;
37
- //# sourceMappingURL=SyncReplication.d.ts.map
37
+ //# sourceMappingURL=syncData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncData.d.ts","sourceRoot":"","sources":["../../../lib/PubSubManager/SyncReplication/syncData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAIlE,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC;IACnC,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB;;OAEG;IACH,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B,CAAC,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC;IACnC,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB;;OAEG;IACH,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B,CAAC,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC;IAClC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAC7B;IACE,aAAa,CAAC,EAAE,cAAc,CAAC;CAChC,GACD;IACE,GAAG,EAAE,SAAS,GAAG,MAAM,CAAC;CACzB,CAAC;AAEN,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG;IAC/C,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,iBAAiB,GAAG,SAAS,EACzC,MAAM,EAAE,SAAS,GAAG,QAAQ,iBA+I7B"}