@xuda.io/runtime-bundle 1.0.560 → 1.0.562
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/js/modules/xuda-db-adapter-module.min.mjs +1 -1
- package/js/modules/xuda-db-adapter-module.mjs +155 -333
- package/js/xuda-runtime-bundle.js +380 -703
- package/js/xuda-runtime-bundle.min.js +1 -1
- package/js/xuda-runtime-slim.js +380 -703
- package/js/xuda-runtime-slim.min.es.js +380 -703
- package/js/xuda-runtime-slim.min.js +1 -1
- package/js/xuda-server-bundle.min.mjs +1 -1
- package/js/xuda-server-bundle.mjs +380 -703
- package/js/xuda-worker-bundle.js +380 -703
- package/js/xuda-worker-bundle.min.js +1 -1
- package/js/xuda_common-bundle.js +382 -705
- package/js/xuda_common-bundle.min.js +1 -1
- package/package.json +1 -1
|
@@ -8,12 +8,7 @@ export const init_module = async (e) => {
|
|
|
8
8
|
_this.IS_DOCKER = e.IS_DOCKER;
|
|
9
9
|
_this.IS_API_SERVER = e.IS_API_SERVER;
|
|
10
10
|
_this.IS_PROCESS_SERVER = e.IS_PROCESS_SERVER;
|
|
11
|
-
if (
|
|
12
|
-
!_this.xuda_dbs_plugin &&
|
|
13
|
-
typeof _this.IS_DOCKER === "undefined" &&
|
|
14
|
-
typeof _this.IS_PROCESS_SERVER === "undefined" &&
|
|
15
|
-
typeof _this.IS_API_SERVER === "undefined"
|
|
16
|
-
) {
|
|
11
|
+
if (!_this.xuda_dbs_plugin && typeof _this.IS_DOCKER === 'undefined' && typeof _this.IS_PROCESS_SERVER === 'undefined' && typeof _this.IS_API_SERVER === 'undefined') {
|
|
17
12
|
await init_xuda_dbs_plugin(e.SESSION_ID);
|
|
18
13
|
}
|
|
19
14
|
_this.db_replication_store;
|
|
@@ -28,26 +23,15 @@ _db.save_data = async function (SESSION_ID, dsSessionP, keyP) {
|
|
|
28
23
|
// const app_id = _this.SESSION_OBJ[SESSION_ID].app_id;
|
|
29
24
|
|
|
30
25
|
var db_driver = await this.get_db_driver(SESSION_ID, dsSessionP);
|
|
31
|
-
if (db_driver ===
|
|
32
|
-
var callback_id = _this.func.utils.set_callback_queue(
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
);
|
|
40
|
-
return _this.func.utils.post_back_to_client(
|
|
41
|
-
SESSION_ID,
|
|
42
|
-
"execute_local_sava_data",
|
|
43
|
-
_this.SESSION_OBJ[SESSION_ID].worker_id,
|
|
44
|
-
{
|
|
45
|
-
ds_obj: obj,
|
|
46
|
-
dsSessionP: dsSessionP,
|
|
47
|
-
keyP: keyP,
|
|
48
|
-
callback_id: callback_id,
|
|
49
|
-
}
|
|
50
|
-
);
|
|
26
|
+
if (db_driver === 'pouchdb' && _this.glb.IS_WORKER) {
|
|
27
|
+
var callback_id = _this.func.utils.set_callback_queue(SESSION_ID, callbackP);
|
|
28
|
+
var obj = _this.func.utils.clean_returned_datasource(SESSION_ID, dsSessionP);
|
|
29
|
+
return _this.func.utils.post_back_to_client(SESSION_ID, 'execute_local_sava_data', _this.SESSION_OBJ[SESSION_ID].worker_id, {
|
|
30
|
+
ds_obj: obj,
|
|
31
|
+
dsSessionP: dsSessionP,
|
|
32
|
+
keyP: keyP,
|
|
33
|
+
callback_id: callback_id,
|
|
34
|
+
});
|
|
51
35
|
}
|
|
52
36
|
|
|
53
37
|
_db.save_indicator(SESSION_ID, true);
|
|
@@ -60,36 +44,29 @@ _db.save_data = async function (SESSION_ID, dsSessionP, keyP) {
|
|
|
60
44
|
|
|
61
45
|
if (!dataSourceTableId) {
|
|
62
46
|
_db.save_indicator(SESSION_ID, false);
|
|
63
|
-
_this.func.utils.alerts.invoke(SESSION_ID,
|
|
47
|
+
_this.func.utils.alerts.invoke(SESSION_ID, 'system_msg', 'SYS_MSG_0105'); //Table entry missing
|
|
64
48
|
return;
|
|
65
49
|
}
|
|
66
50
|
|
|
67
51
|
var db_driver = await _db.get_db_driver(SESSION_ID, dsSessionP);
|
|
68
52
|
|
|
69
|
-
let table_ret = await _this.func.utils.FILES_OBJ.get(
|
|
70
|
-
SESSION_ID,
|
|
71
|
-
dataSourceTableId
|
|
72
|
-
);
|
|
53
|
+
let table_ret = await _this.func.utils.FILES_OBJ.get(SESSION_ID, dataSourceTableId);
|
|
73
54
|
|
|
74
55
|
if (!table_ret.tableIndexes || _.isEmpty(table_ret.tableIndexes)) {
|
|
75
56
|
_db.save_indicator(SESSION_ID, false);
|
|
76
|
-
_this.func.utils.alerts.invoke(SESSION_ID,
|
|
57
|
+
_this.func.utils.alerts.invoke(SESSION_ID, 'system_msg', 'SYS_MSG_0104'); //index missing
|
|
77
58
|
return;
|
|
78
59
|
}
|
|
79
60
|
|
|
80
61
|
if (!_ds.data_feed.rows) {
|
|
81
|
-
return console.error(
|
|
62
|
+
return console.error('data_feed rows is empty');
|
|
82
63
|
}
|
|
83
64
|
|
|
84
65
|
const clean_virtual_fields = async function (table_id, data) {
|
|
85
66
|
let table_obj = await func.utils.VIEWS_OBJ.get(SESSION_ID, table_id);
|
|
86
67
|
var data_obj = {};
|
|
87
68
|
for (const [key, val] of Object.entries(data)) {
|
|
88
|
-
const _tableFieldsObj = func.common.find_item_by_key(
|
|
89
|
-
table_obj.tableFields,
|
|
90
|
-
"field_id",
|
|
91
|
-
key
|
|
92
|
-
);
|
|
69
|
+
const _tableFieldsObj = func.common.find_item_by_key(table_obj.tableFields, 'field_id', key);
|
|
93
70
|
if (_tableFieldsObj) {
|
|
94
71
|
data_obj[key] = val;
|
|
95
72
|
}
|
|
@@ -98,13 +75,9 @@ _db.save_data = async function (SESSION_ID, dsSessionP, keyP) {
|
|
|
98
75
|
};
|
|
99
76
|
let save_ret;
|
|
100
77
|
// component
|
|
101
|
-
if (_view_obj.properties.menuType ===
|
|
102
|
-
if (_view_obj?.properties?.rwMode !==
|
|
103
|
-
return _this.func.utils.alerts.invoke(
|
|
104
|
-
SESSION_ID,
|
|
105
|
-
"system_msg",
|
|
106
|
-
"SYS_MSG_0126"
|
|
107
|
-
); //Program Read Only
|
|
78
|
+
if (_view_obj.properties.menuType === 'component') {
|
|
79
|
+
if (_view_obj?.properties?.rwMode !== 'U') {
|
|
80
|
+
return _this.func.utils.alerts.invoke(SESSION_ID, 'system_msg', 'SYS_MSG_0126'); //Program Read Only
|
|
108
81
|
}
|
|
109
82
|
|
|
110
83
|
// check if rows exist
|
|
@@ -114,25 +87,15 @@ _db.save_data = async function (SESSION_ID, dsSessionP, keyP) {
|
|
|
114
87
|
let data = { prog_id: _ds.prog_id };
|
|
115
88
|
if (_ds.data_feed.rows_added?.length) {
|
|
116
89
|
if (!_view_obj?.properties?.allowCreate) {
|
|
117
|
-
_this.func.utils.alerts.invoke(
|
|
118
|
-
SESSION_ID,
|
|
119
|
-
"system_msg",
|
|
120
|
-
"SYS_MSG_0120"
|
|
121
|
-
); //Create Mode Denied
|
|
90
|
+
_this.func.utils.alerts.invoke(SESSION_ID, 'system_msg', 'SYS_MSG_0120'); //Create Mode Denied
|
|
122
91
|
}
|
|
123
92
|
|
|
124
93
|
_.forEach(_ds.data_feed.rows_added, function (val, key) {
|
|
125
94
|
data[key] = val;
|
|
126
95
|
});
|
|
127
96
|
|
|
128
|
-
delete _ds.data_feed.rows_added[
|
|
129
|
-
save_ret = await _this.func.common.db(
|
|
130
|
-
SESSION_ID,
|
|
131
|
-
"dbs_create",
|
|
132
|
-
data,
|
|
133
|
-
{},
|
|
134
|
-
dsSessionP
|
|
135
|
-
);
|
|
97
|
+
delete _ds.data_feed.rows_added['newRecord'];
|
|
98
|
+
save_ret = await _this.func.common.db(SESSION_ID, 'dbs_create', data, {}, dsSessionP);
|
|
136
99
|
refresh_document_changes_for_realtime_update(SESSION_ID, {
|
|
137
100
|
row_id: save_ret.data.id,
|
|
138
101
|
table_id: dataSourceTableId,
|
|
@@ -143,26 +106,18 @@ _db.save_data = async function (SESSION_ID, dsSessionP, keyP) {
|
|
|
143
106
|
// delete
|
|
144
107
|
//===============
|
|
145
108
|
if (_ds.data_feed.rows_deleted?.length) {
|
|
146
|
-
|
|
147
|
-
for await (const [key, val] of Object.entries(
|
|
148
|
-
|
|
149
|
-
)) {
|
|
150
|
-
ids.push(val);
|
|
109
|
+
data.ids = [];
|
|
110
|
+
for await (const [key, val] of Object.entries(_ds.data_feed.rows_deleted)) {
|
|
111
|
+
data.ids.push(val);
|
|
151
112
|
|
|
152
113
|
try {
|
|
153
114
|
const row_idx = func.common.find_ROWID_idx(_ds, val);
|
|
154
115
|
|
|
155
116
|
delete _ds.data_feed.rows[row_idx];
|
|
156
|
-
} catch (error) {
|
|
117
|
+
} catch (error) {}
|
|
157
118
|
}
|
|
158
119
|
_ds.data_feed.rows_deleted = [];
|
|
159
|
-
save_ret = await _this.func.common.db(
|
|
160
|
-
SESSION_ID,
|
|
161
|
-
"dbs_delete",
|
|
162
|
-
data,
|
|
163
|
-
{},
|
|
164
|
-
dsSessionP
|
|
165
|
-
);
|
|
120
|
+
save_ret = await _this.func.common.db(SESSION_ID, 'dbs_delete', data, {}, dsSessionP);
|
|
166
121
|
refresh_document_changes_for_realtime_update(SESSION_ID, {
|
|
167
122
|
row_id: save_ret.data?.id?.[0],
|
|
168
123
|
table_id: dataSourceTableId,
|
|
@@ -173,56 +128,40 @@ _db.save_data = async function (SESSION_ID, dsSessionP, keyP) {
|
|
|
173
128
|
// update
|
|
174
129
|
//===============
|
|
175
130
|
if (_ds.data_feed.rows_changed?.length) {
|
|
176
|
-
for await (const [key, row_id] of Object.entries(
|
|
177
|
-
|
|
178
|
-
)) {
|
|
179
|
-
if (row_id === "datasource_main") continue;
|
|
131
|
+
for await (const [key, row_id] of Object.entries(_ds.data_feed.rows_changed)) {
|
|
132
|
+
if (row_id === 'datasource_main') continue;
|
|
180
133
|
|
|
181
134
|
let data = { prog_id: _ds.prog_id };
|
|
182
135
|
|
|
183
136
|
try {
|
|
184
137
|
const row_idx = func.common.find_ROWID_idx(_ds, row_id);
|
|
185
138
|
|
|
186
|
-
data.table_data = await clean_virtual_fields(
|
|
187
|
-
_ds._dataSourceTableId,
|
|
188
|
-
_ds.data_feed.rows[row_idx]
|
|
189
|
-
);
|
|
139
|
+
data.table_data = await clean_virtual_fields(_ds._dataSourceTableId, _ds.data_feed.rows[row_idx]);
|
|
190
140
|
} catch (err) {
|
|
191
141
|
console.error(err);
|
|
192
142
|
}
|
|
193
143
|
|
|
194
144
|
data.table_id = _ds._dataSourceTableId;
|
|
195
145
|
data.row_id = row_id;
|
|
196
|
-
save_ret = await _this.func.common.db(
|
|
197
|
-
SESSION_ID,
|
|
198
|
-
"dbs_update",
|
|
199
|
-
data,
|
|
200
|
-
{},
|
|
201
|
-
dsSessionP
|
|
202
|
-
);
|
|
146
|
+
save_ret = await _this.func.common.db(SESSION_ID, 'dbs_update', data, {}, dsSessionP);
|
|
203
147
|
refresh_document_changes_for_realtime_update(SESSION_ID, {
|
|
204
148
|
row_id: save_ret.data?.id?.[0],
|
|
205
149
|
table_id: dataSourceTableId,
|
|
206
150
|
});
|
|
207
|
-
|
|
208
151
|
}
|
|
209
152
|
return save_ret;
|
|
210
153
|
}
|
|
211
154
|
return;
|
|
212
155
|
}
|
|
213
156
|
// alert Program Read Only
|
|
214
|
-
if (_view_obj.properties.menuType !==
|
|
215
|
-
return _this.func.utils.alerts.invoke(
|
|
216
|
-
SESSION_ID,
|
|
217
|
-
"system_msg",
|
|
218
|
-
"SYS_MSG_0126"
|
|
219
|
-
); //Program Read Only
|
|
157
|
+
if (_view_obj.properties.menuType !== 'set_data') {
|
|
158
|
+
return _this.func.utils.alerts.invoke(SESSION_ID, 'system_msg', 'SYS_MSG_0126'); //Program Read Only
|
|
220
159
|
}
|
|
221
160
|
|
|
222
161
|
// set_data
|
|
223
162
|
var mode = _ds.set_mode; //screenInfo.crudMode;
|
|
224
163
|
|
|
225
|
-
if (!mode || mode ===
|
|
164
|
+
if (!mode || mode === 'U') {
|
|
226
165
|
let data = { prog_id: _ds.prog_id };
|
|
227
166
|
data.table_id = _ds._dataSourceTableId;
|
|
228
167
|
data.row_id = _ds.currentRecordId;
|
|
@@ -231,55 +170,32 @@ _db.save_data = async function (SESSION_ID, dsSessionP, keyP) {
|
|
|
231
170
|
try {
|
|
232
171
|
const row_idx = func.common.find_ROWID_idx(_ds, _ds.currentRecordId);
|
|
233
172
|
|
|
234
|
-
data.table_data = await clean_virtual_fields(
|
|
235
|
-
_ds._dataSourceTableId,
|
|
236
|
-
_ds.data_feed.rows[row_idx]
|
|
237
|
-
);
|
|
173
|
+
data.table_data = await clean_virtual_fields(_ds._dataSourceTableId, _ds.data_feed.rows[row_idx]);
|
|
238
174
|
} catch (err) {
|
|
239
175
|
console.error(err);
|
|
240
176
|
}
|
|
241
177
|
|
|
242
|
-
save_ret = await _this.func.common.db(
|
|
243
|
-
SESSION_ID,
|
|
244
|
-
"dbs_update",
|
|
245
|
-
data,
|
|
246
|
-
{},
|
|
247
|
-
dsSessionP
|
|
248
|
-
);
|
|
178
|
+
save_ret = await _this.func.common.db(SESSION_ID, 'dbs_update', data, {}, dsSessionP);
|
|
249
179
|
refresh_document_changes_for_realtime_update(SESSION_ID, {
|
|
250
180
|
row_id: save_ret.data?.id?.[0],
|
|
251
181
|
table_id: dataSourceTableId,
|
|
252
182
|
});
|
|
253
183
|
}
|
|
254
|
-
if (mode ===
|
|
184
|
+
if (mode === 'D') {
|
|
255
185
|
// _id = _ds.key._id;
|
|
256
186
|
let data = { prog_id: _ds.prog_id };
|
|
257
187
|
data.table_id = _ds._dataSourceTableId;
|
|
258
188
|
data.ids = [_ds.currentRecordId];
|
|
259
|
-
save_ret = await _this.func.common.db(
|
|
260
|
-
SESSION_ID,
|
|
261
|
-
"dbs_delete",
|
|
262
|
-
data,
|
|
263
|
-
{},
|
|
264
|
-
dsSessionP
|
|
265
|
-
);
|
|
189
|
+
save_ret = await _this.func.common.db(SESSION_ID, 'dbs_delete', data, {}, dsSessionP);
|
|
266
190
|
refresh_document_changes_for_realtime_update(SESSION_ID, {
|
|
267
191
|
row_id: save_ret.data?.id?.[0],
|
|
268
192
|
table_id: dataSourceTableId,
|
|
269
193
|
});
|
|
270
194
|
return save_ret;
|
|
271
195
|
}
|
|
272
|
-
if (mode ===
|
|
273
|
-
if (
|
|
274
|
-
|
|
275
|
-
_view_obj.properties.crudMode === "U" &&
|
|
276
|
-
!_view_obj.properties.allowCreate
|
|
277
|
-
) {
|
|
278
|
-
return _this.func.utils.alerts.invoke(
|
|
279
|
-
SESSION_ID,
|
|
280
|
-
"system_msg",
|
|
281
|
-
"SYS_MSG_0120"
|
|
282
|
-
); //Create Mode Denied
|
|
196
|
+
if (mode === 'C') {
|
|
197
|
+
if (_view_obj.properties.crudMode !== 'C' && _view_obj.properties.crudMode === 'U' && !_view_obj.properties.allowCreate) {
|
|
198
|
+
return _this.func.utils.alerts.invoke(SESSION_ID, 'system_msg', 'SYS_MSG_0120'); //Create Mode Denied
|
|
283
199
|
}
|
|
284
200
|
|
|
285
201
|
let data = { prog_id: _ds.prog_id };
|
|
@@ -289,13 +205,7 @@ _db.save_data = async function (SESSION_ID, dsSessionP, keyP) {
|
|
|
289
205
|
const row_idx = func.common.find_ROWID_idx(_ds, _ds.currentRecordId);
|
|
290
206
|
|
|
291
207
|
data.table_data = _ds.data_feed.rows[row_idx];
|
|
292
|
-
save_ret = await _this.func.common.db(
|
|
293
|
-
SESSION_ID,
|
|
294
|
-
"dbs_create",
|
|
295
|
-
data,
|
|
296
|
-
{},
|
|
297
|
-
dsSessionP
|
|
298
|
-
);
|
|
208
|
+
save_ret = await _this.func.common.db(SESSION_ID, 'dbs_create', data, {}, dsSessionP);
|
|
299
209
|
refresh_document_changes_for_realtime_update(SESSION_ID, {
|
|
300
210
|
row_id: save_ret.data.id,
|
|
301
211
|
table_id: dataSourceTableId,
|
|
@@ -312,29 +222,19 @@ _db.get_db_driver = async function (SESSION_ID, dsSessionP) {
|
|
|
312
222
|
|
|
313
223
|
if (dsSessionP) {
|
|
314
224
|
var _ds = _this.SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP];
|
|
315
|
-
let _view_obj = await _this.func.utils.VIEWS_OBJ.get(
|
|
316
|
-
SESSION_ID,
|
|
317
|
-
_ds.prog_id
|
|
318
|
-
);
|
|
225
|
+
let _view_obj = await _this.func.utils.VIEWS_OBJ.get(SESSION_ID, _ds.prog_id);
|
|
319
226
|
var dataSourceTableId = _view_obj?.progDataSource?.dataSourceTableId;
|
|
320
227
|
|
|
321
228
|
if (!dataSourceTableId) {
|
|
322
|
-
_this.func.utils.alerts.invoke(SESSION_ID,
|
|
229
|
+
_this.func.utils.alerts.invoke(SESSION_ID, 'system_msg', 'SYS_MSG_0105'); //Table repository missing
|
|
323
230
|
return;
|
|
324
231
|
}
|
|
325
|
-
let file_ret = await _this.func.utils.FILES_OBJ.get(
|
|
326
|
-
|
|
327
|
-
dataSourceTableId
|
|
328
|
-
);
|
|
329
|
-
db_driver = file_ret.properties.db_driver || "xuda";
|
|
232
|
+
let file_ret = await _this.func.utils.FILES_OBJ.get(SESSION_ID, dataSourceTableId);
|
|
233
|
+
db_driver = file_ret.properties.db_driver || 'xuda';
|
|
330
234
|
}
|
|
331
235
|
|
|
332
|
-
if (
|
|
333
|
-
|
|
334
|
-
!db_driver &&
|
|
335
|
-
_this.SESSION_OBJ[SESSION_ID].app_id === "temp"
|
|
336
|
-
) {
|
|
337
|
-
db_driver = "pouchdb";
|
|
236
|
+
if (_this.SESSION_OBJ[SESSION_ID].engine_mode === 'live_preview' && !db_driver && _this.SESSION_OBJ[SESSION_ID].app_id === 'temp') {
|
|
237
|
+
db_driver = 'pouchdb';
|
|
338
238
|
}
|
|
339
239
|
|
|
340
240
|
return db_driver;
|
|
@@ -360,18 +260,15 @@ _db.get_query = async function (
|
|
|
360
260
|
filterModelUserMongo,
|
|
361
261
|
filterModelUserSql,
|
|
362
262
|
},
|
|
363
|
-
dataSourceFilterModelType =
|
|
364
|
-
total_fields_info
|
|
263
|
+
dataSourceFilterModelType = 'index',
|
|
264
|
+
total_fields_info,
|
|
365
265
|
) {
|
|
366
266
|
const get_fields = async function (_ds) {
|
|
367
267
|
var fields = [];
|
|
368
|
-
const _view_obj = await _this.func.utils.VIEWS_OBJ.get(
|
|
369
|
-
SESSION_ID,
|
|
370
|
-
_ds.prog_id
|
|
371
|
-
);
|
|
268
|
+
const _view_obj = await _this.func.utils.VIEWS_OBJ.get(SESSION_ID, _ds.prog_id);
|
|
372
269
|
if (_view_obj.progFields) {
|
|
373
270
|
for (let val of _view_obj.progFields) {
|
|
374
|
-
if (val.data.type ===
|
|
271
|
+
if (val.data.type === 'table') {
|
|
375
272
|
fields.push(val.data.field_id);
|
|
376
273
|
}
|
|
377
274
|
}
|
|
@@ -388,26 +285,19 @@ _db.get_query = async function (
|
|
|
388
285
|
var query_string;
|
|
389
286
|
if (queryP.indexId) {
|
|
390
287
|
if (countP && queryP.desc) {
|
|
391
|
-
query_string = `startkey=${JSON.stringify(
|
|
392
|
-
queryP.endkey
|
|
393
|
-
)}&endkey=${JSON.stringify(queryP.startkey)}`;
|
|
288
|
+
query_string = `startkey=${JSON.stringify(queryP.endkey)}&endkey=${JSON.stringify(queryP.startkey)}`;
|
|
394
289
|
} else {
|
|
395
|
-
query_string = `startkey=${JSON.stringify(
|
|
396
|
-
queryP.startkey
|
|
397
|
-
)}&endkey=${JSON.stringify(queryP.endkey)}&desc=${queryP.desc}`;
|
|
290
|
+
query_string = `startkey=${JSON.stringify(queryP.startkey)}&endkey=${JSON.stringify(queryP.endkey)}&desc=${queryP.desc}`;
|
|
398
291
|
}
|
|
399
292
|
} else {
|
|
400
|
-
query_string =
|
|
293
|
+
query_string = 'key=' + queryP.table_id;
|
|
401
294
|
}
|
|
402
295
|
var db_driver = await _db.get_db_driver(SESSION_ID, dsSessionP);
|
|
403
296
|
var fields_arr = await get_fields(ds);
|
|
404
297
|
|
|
405
298
|
const response = {
|
|
406
299
|
success: async function (json) {
|
|
407
|
-
if (
|
|
408
|
-
dsSessionP &&
|
|
409
|
-
!_this.SESSION_OBJ[SESSION_ID]?.DS_GLB?.[dsSessionP]
|
|
410
|
-
) {
|
|
300
|
+
if (dsSessionP && !_this.SESSION_OBJ[SESSION_ID]?.DS_GLB?.[dsSessionP]) {
|
|
411
301
|
return;
|
|
412
302
|
}
|
|
413
303
|
|
|
@@ -444,7 +334,7 @@ _db.get_query = async function (
|
|
|
444
334
|
if (dsSessionP)
|
|
445
335
|
_this.func.utils.debug.log(SESSION_ID, ds._dataSourceTableId, {
|
|
446
336
|
module: ds.viewModule,
|
|
447
|
-
action:
|
|
337
|
+
action: 'read',
|
|
448
338
|
prop: sourceP,
|
|
449
339
|
details: query_string,
|
|
450
340
|
result: data.rows ? data.rows.length : 0,
|
|
@@ -452,7 +342,7 @@ _db.get_query = async function (
|
|
|
452
342
|
source: viewSourceDescP,
|
|
453
343
|
json: data,
|
|
454
344
|
fields: _.assignIn(ds.locate_from, ds.locate_to),
|
|
455
|
-
type:
|
|
345
|
+
type: 'file',
|
|
456
346
|
dsSession: dsSessionP,
|
|
457
347
|
});
|
|
458
348
|
|
|
@@ -462,30 +352,21 @@ _db.get_query = async function (
|
|
|
462
352
|
if (dsSessionP && !ds) return;
|
|
463
353
|
if (dsSessionP) {
|
|
464
354
|
var err_msg = err && err.data ? err.data : err;
|
|
465
|
-
_this.func.utils.debug.log(
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
type: "file",
|
|
479
|
-
dsSession: dsSessionP,
|
|
480
|
-
}
|
|
481
|
-
);
|
|
355
|
+
_this.func.utils.debug.log(SESSION_ID, _this.SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP]._dataSourceTableId, {
|
|
356
|
+
module: ds.viewModule,
|
|
357
|
+
action: 'read',
|
|
358
|
+
prop: sourceP,
|
|
359
|
+
details: query_string,
|
|
360
|
+
result: null,
|
|
361
|
+
error: err_msg,
|
|
362
|
+
source: viewSourceDescP,
|
|
363
|
+
json: null,
|
|
364
|
+
fields: _.assignIn(ds.locate_from, ds.locate_to),
|
|
365
|
+
type: 'file',
|
|
366
|
+
dsSession: dsSessionP,
|
|
367
|
+
});
|
|
482
368
|
}
|
|
483
|
-
_this.func.utils.debug_report(
|
|
484
|
-
SESSION_ID,
|
|
485
|
-
"datasource couchDB query " + sourceP,
|
|
486
|
-
err_msg,
|
|
487
|
-
"E"
|
|
488
|
-
);
|
|
369
|
+
_this.func.utils.debug_report(SESSION_ID, 'datasource couchDB query ' + sourceP, err_msg, 'E');
|
|
489
370
|
|
|
490
371
|
return {
|
|
491
372
|
rows: [],
|
|
@@ -517,7 +398,7 @@ _db.get_query = async function (
|
|
|
517
398
|
data.endkey = JSON.stringify(queryP.endkey);
|
|
518
399
|
|
|
519
400
|
if (countP && queryP.desc) {
|
|
520
|
-
data.sortOrder =
|
|
401
|
+
data.sortOrder = 'asc';
|
|
521
402
|
data.startkey = JSON.stringify(queryP.endkey);
|
|
522
403
|
data.endkey = JSON.stringify(queryP.startkey);
|
|
523
404
|
}
|
|
@@ -540,9 +421,7 @@ _db.get_query = async function (
|
|
|
540
421
|
data.filterModelSql = JSON.stringify(filterModel.filterModelSql);
|
|
541
422
|
}
|
|
542
423
|
if (!_.isEmpty(filterModel?.filterModelUserMongo)) {
|
|
543
|
-
data.filterModelUserMongo = JSON.stringify(
|
|
544
|
-
filterModel.filterModelUserMongo
|
|
545
|
-
);
|
|
424
|
+
data.filterModelUserMongo = JSON.stringify(filterModel.filterModelUserMongo);
|
|
546
425
|
}
|
|
547
426
|
if (filterModel?.filterModelUserSql) {
|
|
548
427
|
data.filterModelUserSql = JSON.stringify(filterModel.filterModelUserSql);
|
|
@@ -558,13 +437,7 @@ _db.get_query = async function (
|
|
|
558
437
|
}
|
|
559
438
|
|
|
560
439
|
try {
|
|
561
|
-
const json = await _this.func.common.db(
|
|
562
|
-
SESSION_ID,
|
|
563
|
-
"dbs_read",
|
|
564
|
-
data,
|
|
565
|
-
{ node: true },
|
|
566
|
-
dsSessionP
|
|
567
|
-
);
|
|
440
|
+
const json = await _this.func.common.db(SESSION_ID, 'dbs_read', data, { node: true }, dsSessionP);
|
|
568
441
|
return await response.success(json);
|
|
569
442
|
} catch (e) {
|
|
570
443
|
return await response.error(e?.message || e?.data || e);
|
|
@@ -572,39 +445,24 @@ _db.get_query = async function (
|
|
|
572
445
|
};
|
|
573
446
|
|
|
574
447
|
var db_driver = await this.get_db_driver(SESSION_ID, dsSessionP);
|
|
575
|
-
if (
|
|
576
|
-
|
|
577
|
-
_this.
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
ds_obj: obj,
|
|
594
|
-
dsSessionP,
|
|
595
|
-
table_id,
|
|
596
|
-
queryP,
|
|
597
|
-
dsSessionP,
|
|
598
|
-
viewSourceDescP,
|
|
599
|
-
sourceP,
|
|
600
|
-
reduceP,
|
|
601
|
-
skipP,
|
|
602
|
-
limitP,
|
|
603
|
-
countP,
|
|
604
|
-
idsP,
|
|
605
|
-
callback_id,
|
|
606
|
-
}
|
|
607
|
-
);
|
|
448
|
+
if (db_driver === 'pouchdb' && _this.glb.IS_WORKER && !_this.SESSION_OBJ[SESSION_ID].engine_mode === 'live_preview') {
|
|
449
|
+
var callback_id = _this.func.utils.set_callback_queue(SESSION_ID, callbackP);
|
|
450
|
+
var obj = _this.func.utils.clean_returned_datasource(SESSION_ID, dsSessionP);
|
|
451
|
+
return _this.func.utils.post_back_to_client(SESSION_ID, 'execute_local_db_query', _this.SESSION_OBJ[SESSION_ID].worker_id, {
|
|
452
|
+
ds_obj: obj,
|
|
453
|
+
dsSessionP,
|
|
454
|
+
table_id,
|
|
455
|
+
queryP,
|
|
456
|
+
dsSessionP,
|
|
457
|
+
viewSourceDescP,
|
|
458
|
+
sourceP,
|
|
459
|
+
reduceP,
|
|
460
|
+
skipP,
|
|
461
|
+
limitP,
|
|
462
|
+
countP,
|
|
463
|
+
idsP,
|
|
464
|
+
callback_id,
|
|
465
|
+
});
|
|
608
466
|
}
|
|
609
467
|
return await run_local();
|
|
610
468
|
};
|
|
@@ -667,20 +525,19 @@ _db.save_indicator = function (SESSION_ID, stateP) {
|
|
|
667
525
|
const init_xuda_dbs_plugin = async function (SESSION_ID) {
|
|
668
526
|
var _session = _this.SESSION_OBJ[SESSION_ID];
|
|
669
527
|
|
|
670
|
-
const plugin_name =
|
|
528
|
+
const plugin_name = '@xuda.io/xuda-dbs-plugin-xuda';
|
|
671
529
|
|
|
672
530
|
const get_path = function (plugin_name, resource) {
|
|
673
|
-
var path = `https://${_session.domain}/plugins/${plugin_name}${resource ?
|
|
674
|
-
}?app_id=${_session.app_id}`;
|
|
531
|
+
var path = `https://${_session.domain}/plugins/${plugin_name}${resource ? '/' + resource : ''}?app_id=${_session.app_id}`;
|
|
675
532
|
|
|
676
533
|
return path;
|
|
677
534
|
};
|
|
678
535
|
|
|
679
536
|
try {
|
|
680
|
-
_this.xuda_dbs_plugin = await import(get_path(plugin_name,
|
|
537
|
+
_this.xuda_dbs_plugin = await import(get_path(plugin_name, 'studio.mjs'));
|
|
681
538
|
|
|
682
539
|
const db = await func.utils.connect_pouchdb(SESSION_ID);
|
|
683
|
-
await _db.call_pouch_xuda_dbs_plugin(SESSION_ID,
|
|
540
|
+
await _db.call_pouch_xuda_dbs_plugin(SESSION_ID, 'create_design', { db });
|
|
684
541
|
} catch (err) {
|
|
685
542
|
return console.error(err.message);
|
|
686
543
|
}
|
|
@@ -691,10 +548,7 @@ _db.call_pouch_xuda_dbs_plugin = async function (SESSION_ID, method, params) {
|
|
|
691
548
|
try {
|
|
692
549
|
// var table_obj = {};
|
|
693
550
|
if (params.e) {
|
|
694
|
-
params.table_obj = await func.utils.DOCS_OBJ.get(
|
|
695
|
-
SESSION_ID,
|
|
696
|
-
params.e.table_id
|
|
697
|
-
);
|
|
551
|
+
params.table_obj = await func.utils.DOCS_OBJ.get(SESSION_ID, params.e.table_id);
|
|
698
552
|
}
|
|
699
553
|
|
|
700
554
|
await _this.xuda_dbs_plugin[method](params, resolve, reject);
|
|
@@ -706,29 +560,26 @@ _db.call_pouch_xuda_dbs_plugin = async function (SESSION_ID, method, params) {
|
|
|
706
560
|
_db.pouch = {};
|
|
707
561
|
_db.pouch.dbs_read = async function (SESSION_ID, e) {
|
|
708
562
|
const db = await func.utils.connect_pouchdb(SESSION_ID);
|
|
709
|
-
return await _db.call_pouch_xuda_dbs_plugin(SESSION_ID,
|
|
563
|
+
return await _db.call_pouch_xuda_dbs_plugin(SESSION_ID, 'read', { db, e });
|
|
710
564
|
};
|
|
711
565
|
_db.pouch.dbs_create = async function (SESSION_ID, e) {
|
|
712
566
|
const db = await func.utils.connect_pouchdb(SESSION_ID);
|
|
713
|
-
return await _db.call_pouch_xuda_dbs_plugin(SESSION_ID,
|
|
567
|
+
return await _db.call_pouch_xuda_dbs_plugin(SESSION_ID, 'create', { db, e });
|
|
714
568
|
};
|
|
715
569
|
_db.pouch.dbs_delete = async function (SESSION_ID, e) {
|
|
716
570
|
const db = await func.utils.connect_pouchdb(SESSION_ID);
|
|
717
|
-
return await _db.call_pouch_xuda_dbs_plugin(SESSION_ID,
|
|
571
|
+
return await _db.call_pouch_xuda_dbs_plugin(SESSION_ID, 'del', { db, e });
|
|
718
572
|
};
|
|
719
573
|
_db.pouch.dbs_update = async function (SESSION_ID, e) {
|
|
720
574
|
const db = await func.utils.connect_pouchdb(SESSION_ID);
|
|
721
|
-
return await _db.call_pouch_xuda_dbs_plugin(SESSION_ID,
|
|
575
|
+
return await _db.call_pouch_xuda_dbs_plugin(SESSION_ID, 'update', { db, e });
|
|
722
576
|
};
|
|
723
577
|
|
|
724
578
|
_db.pouch.init_db_replication = async function (SESSION_ID) {
|
|
725
579
|
const db = await func.utils.connect_pouchdb(SESSION_ID);
|
|
726
580
|
var _session = _this.SESSION_OBJ[SESSION_ID];
|
|
727
581
|
|
|
728
|
-
if (
|
|
729
|
-
_session.url_params.avoid_local ||
|
|
730
|
-
(_session.engine_mode !== "live_preview" && !_session.opt.enable_offline)
|
|
731
|
-
) {
|
|
582
|
+
if (_session.url_params.avoid_local || (_session.engine_mode !== 'live_preview' && !_session.opt.enable_offline)) {
|
|
732
583
|
return;
|
|
733
584
|
}
|
|
734
585
|
|
|
@@ -739,7 +590,7 @@ _db.pouch.init_db_replication = async function (SESSION_ID) {
|
|
|
739
590
|
live: true,
|
|
740
591
|
include_docs: true,
|
|
741
592
|
})
|
|
742
|
-
.on(
|
|
593
|
+
.on('change', function (change) {
|
|
743
594
|
// handle change
|
|
744
595
|
|
|
745
596
|
if (!change.doc.udfData) return;
|
|
@@ -749,11 +600,11 @@ _db.pouch.init_db_replication = async function (SESSION_ID) {
|
|
|
749
600
|
table_id: change.doc.udfData.udffileid,
|
|
750
601
|
});
|
|
751
602
|
})
|
|
752
|
-
.on(
|
|
603
|
+
.on('complete', function (info) {
|
|
753
604
|
// changes() was canceled
|
|
754
|
-
console.log(
|
|
605
|
+
console.log('complete', info);
|
|
755
606
|
})
|
|
756
|
-
.on(
|
|
607
|
+
.on('error', function (err) {
|
|
757
608
|
console.error(err);
|
|
758
609
|
});
|
|
759
610
|
|
|
@@ -763,42 +614,41 @@ _db.pouch.init_db_replication = async function (SESSION_ID) {
|
|
|
763
614
|
const db_name = APP_OBJ[_session.app_id].app_db_name;
|
|
764
615
|
const rep = db.replicate
|
|
765
616
|
.to(`https://${_session.domain}/db/${db_name}`, {
|
|
766
|
-
selector: { docType:
|
|
617
|
+
selector: { docType: 'database' },
|
|
767
618
|
live: true,
|
|
768
619
|
retry: true,
|
|
769
620
|
fetch: function (url, opts) {
|
|
770
621
|
if (_session.gtp_token) {
|
|
771
|
-
opts.headers.set(
|
|
622
|
+
opts.headers.set('xu-gtp-token', _session.gtp_token);
|
|
772
623
|
}
|
|
773
|
-
if (_session.app_token)
|
|
774
|
-
opts.headers.set("xu-app-token", _session.app_token);
|
|
624
|
+
if (_session.app_token) opts.headers.set('xu-app-token', _session.app_token);
|
|
775
625
|
{
|
|
776
|
-
opts.headers.set(
|
|
626
|
+
opts.headers.set('xu-db', db_name);
|
|
777
627
|
}
|
|
778
628
|
return PouchDB.fetch(url, opts);
|
|
779
629
|
},
|
|
780
630
|
})
|
|
781
|
-
.on(
|
|
631
|
+
.on('change', function (info) {
|
|
782
632
|
// handle change
|
|
783
633
|
})
|
|
784
|
-
.on(
|
|
634
|
+
.on('paused', function (err) {
|
|
785
635
|
if (err) {
|
|
786
636
|
return set_replication_stat(SESSION_ID, null, 2);
|
|
787
637
|
}
|
|
788
638
|
set_replication_stat(SESSION_ID, null, 3);
|
|
789
639
|
// replication paused (e.g. replication up to date, user went offline)
|
|
790
640
|
})
|
|
791
|
-
.on(
|
|
641
|
+
.on('active', function () {
|
|
792
642
|
// replicate resumed (e.g. new changes replicating, user went back online)
|
|
793
643
|
})
|
|
794
|
-
.on(
|
|
644
|
+
.on('denied', function (err) {
|
|
795
645
|
set_replication_stat(SESSION_ID, null, 2);
|
|
796
646
|
// a document failed to replicate (e.g. due to permissions)
|
|
797
647
|
})
|
|
798
|
-
.on(
|
|
648
|
+
.on('complete', function (info) {
|
|
799
649
|
// handle complete
|
|
800
650
|
})
|
|
801
|
-
.on(
|
|
651
|
+
.on('error', function (err) {
|
|
802
652
|
set_replication_stat(SESSION_ID, null, 2);
|
|
803
653
|
// handle error
|
|
804
654
|
});
|
|
@@ -814,12 +664,11 @@ _db.pouch.set_db_replication_from_server = async function (SESSION_ID) {
|
|
|
814
664
|
const remote_db = new PouchDB(remote_db_url, {
|
|
815
665
|
fetch: function (url, opts) {
|
|
816
666
|
if (_session.gtp_token) {
|
|
817
|
-
opts.headers.set(
|
|
667
|
+
opts.headers.set('xu-gtp-token', _session.gtp_token);
|
|
818
668
|
}
|
|
819
|
-
if (_session.app_token)
|
|
820
|
-
opts.headers.set("xu-app-token", _session.app_token);
|
|
669
|
+
if (_session.app_token) opts.headers.set('xu-app-token', _session.app_token);
|
|
821
670
|
{
|
|
822
|
-
opts.headers.set(
|
|
671
|
+
opts.headers.set('xu-db', db_name);
|
|
823
672
|
}
|
|
824
673
|
return PouchDB.fetch(url, opts);
|
|
825
674
|
},
|
|
@@ -837,23 +686,22 @@ _db.pouch.set_db_replication_from_server = async function (SESSION_ID) {
|
|
|
837
686
|
doc.stat_reason = reason;
|
|
838
687
|
try {
|
|
839
688
|
db.put(doc);
|
|
840
|
-
} catch (err) {
|
|
841
|
-
} catch (err) {
|
|
689
|
+
} catch (err) {}
|
|
690
|
+
} catch (err) {}
|
|
842
691
|
};
|
|
843
692
|
const download_documents = async function (rep_doc) {
|
|
844
693
|
await write_stat(rep_doc._id, 2);
|
|
845
694
|
|
|
846
695
|
const remote_db = new PouchDB(remote_db_url, {
|
|
847
696
|
fetch: function (url, opts) {
|
|
848
|
-
opts.headers.set(
|
|
697
|
+
opts.headers.set('xu-prog_id', rep_doc.prog_id);
|
|
849
698
|
|
|
850
699
|
if (_session.gtp_token) {
|
|
851
|
-
opts.headers.set(
|
|
700
|
+
opts.headers.set('xu-gtp-token', _session.gtp_token);
|
|
852
701
|
}
|
|
853
|
-
if (_session.app_token)
|
|
854
|
-
opts.headers.set("xu-app-token", _session.app_token);
|
|
702
|
+
if (_session.app_token) opts.headers.set('xu-app-token', _session.app_token);
|
|
855
703
|
{
|
|
856
|
-
opts.headers.set(
|
|
704
|
+
opts.headers.set('xu-db', db_name);
|
|
857
705
|
}
|
|
858
706
|
return PouchDB.fetch(url, opts);
|
|
859
707
|
},
|
|
@@ -861,18 +709,13 @@ _db.pouch.set_db_replication_from_server = async function (SESSION_ID) {
|
|
|
861
709
|
|
|
862
710
|
const ret = await remote_db.find({
|
|
863
711
|
selector: rep_doc.selector,
|
|
864
|
-
fields: [
|
|
712
|
+
fields: ['_id'],
|
|
865
713
|
limit: 9999999999,
|
|
866
714
|
// prog_id: rep_doc.prog_id,
|
|
867
715
|
});
|
|
868
716
|
|
|
869
717
|
if (ret?.code < 0) {
|
|
870
|
-
return func.utils.debug_report(
|
|
871
|
-
SESSION_ID,
|
|
872
|
-
"download_documents",
|
|
873
|
-
ret.data,
|
|
874
|
-
"E"
|
|
875
|
-
);
|
|
718
|
+
return func.utils.debug_report(SESSION_ID, 'download_documents', ret.data, 'E');
|
|
876
719
|
}
|
|
877
720
|
|
|
878
721
|
try {
|
|
@@ -884,20 +727,19 @@ _db.pouch.set_db_replication_from_server = async function (SESSION_ID) {
|
|
|
884
727
|
.from(remote_db_url, {
|
|
885
728
|
doc_ids,
|
|
886
729
|
retry: true,
|
|
887
|
-
style:
|
|
730
|
+
style: 'main_only',
|
|
888
731
|
fetch: function (url, opts) {
|
|
889
732
|
if (_session.gtp_token) {
|
|
890
|
-
opts.headers.set(
|
|
733
|
+
opts.headers.set('xu-gtp-token', _session.gtp_token);
|
|
891
734
|
}
|
|
892
|
-
if (_session.app_token)
|
|
893
|
-
opts.headers.set("xu-app-token", _session.app_token);
|
|
735
|
+
if (_session.app_token) opts.headers.set('xu-app-token', _session.app_token);
|
|
894
736
|
{
|
|
895
|
-
opts.headers.set(
|
|
737
|
+
opts.headers.set('xu-db', db_name);
|
|
896
738
|
}
|
|
897
739
|
return PouchDB.fetch(url, opts);
|
|
898
740
|
},
|
|
899
741
|
})
|
|
900
|
-
.on(
|
|
742
|
+
.on('paused', async function (err) {
|
|
901
743
|
// replication paused (e.g. replication up to date, user went offline)
|
|
902
744
|
|
|
903
745
|
if (err) {
|
|
@@ -909,7 +751,7 @@ _db.pouch.set_db_replication_from_server = async function (SESSION_ID) {
|
|
|
909
751
|
});
|
|
910
752
|
} catch (err) {
|
|
911
753
|
await write_stat(rep_doc._id, 2, err.message);
|
|
912
|
-
console.error(
|
|
754
|
+
console.error('replication from error', err);
|
|
913
755
|
}
|
|
914
756
|
// console.log(ret);
|
|
915
757
|
};
|
|
@@ -923,15 +765,15 @@ _db.pouch.set_db_replication_from_server = async function (SESSION_ID) {
|
|
|
923
765
|
try {
|
|
924
766
|
_this.db_changes_store = remote_db
|
|
925
767
|
.changes({
|
|
926
|
-
since:
|
|
768
|
+
since: 'now',
|
|
927
769
|
live: true,
|
|
928
770
|
timeout: 300000, // 5 min
|
|
929
|
-
style:
|
|
771
|
+
style: 'main_only',
|
|
930
772
|
include_docs: false,
|
|
931
773
|
// heartbeat: 10000
|
|
932
774
|
})
|
|
933
|
-
.on(
|
|
934
|
-
if (change.id.substr(0, 4) !==
|
|
775
|
+
.on('change', async function (change) {
|
|
776
|
+
if (change.id.substr(0, 4) !== 'dbs-') return;
|
|
935
777
|
|
|
936
778
|
if (_this.db_replication_from_stat !== 3) {
|
|
937
779
|
set_replication_stat(SESSION_ID, 3);
|
|
@@ -943,15 +785,14 @@ _db.pouch.set_db_replication_from_server = async function (SESSION_ID) {
|
|
|
943
785
|
db.replicate.from(remote_db_url, {
|
|
944
786
|
doc_ids: [change.id],
|
|
945
787
|
retry: true,
|
|
946
|
-
style:
|
|
788
|
+
style: 'main_only',
|
|
947
789
|
fetch: function (url, opts) {
|
|
948
790
|
if (_session.gtp_token) {
|
|
949
|
-
opts.headers.set(
|
|
791
|
+
opts.headers.set('xu-gtp-token', _session.gtp_token);
|
|
950
792
|
}
|
|
951
|
-
if (_session.app_token)
|
|
952
|
-
opts.headers.set("xu-app-token", _session.app_token);
|
|
793
|
+
if (_session.app_token) opts.headers.set('xu-app-token', _session.app_token);
|
|
953
794
|
{
|
|
954
|
-
opts.headers.set(
|
|
795
|
+
opts.headers.set('xu-db', db_name);
|
|
955
796
|
}
|
|
956
797
|
return PouchDB.fetch(url, opts);
|
|
957
798
|
},
|
|
@@ -959,7 +800,7 @@ _db.pouch.set_db_replication_from_server = async function (SESSION_ID) {
|
|
|
959
800
|
} catch (err) {
|
|
960
801
|
// new doc change
|
|
961
802
|
try {
|
|
962
|
-
const table_id = change.id.split(
|
|
803
|
+
const table_id = change.id.split('_')[0].substr(4);
|
|
963
804
|
|
|
964
805
|
for (let doc of rep_docs) {
|
|
965
806
|
if (doc.table_id === table_id) {
|
|
@@ -971,10 +812,10 @@ _db.pouch.set_db_replication_from_server = async function (SESSION_ID) {
|
|
|
971
812
|
}
|
|
972
813
|
}
|
|
973
814
|
})
|
|
974
|
-
.on(
|
|
815
|
+
.on('complete', function (info) {
|
|
975
816
|
// changes() was canceled
|
|
976
817
|
})
|
|
977
|
-
.on(
|
|
818
|
+
.on('error', function (err) {
|
|
978
819
|
console.error(err);
|
|
979
820
|
set_replication_stat(SESSION_ID, 2);
|
|
980
821
|
_this.db_changes_store.cancel();
|
|
@@ -985,10 +826,7 @@ _db.pouch.set_db_replication_from_server = async function (SESSION_ID) {
|
|
|
985
826
|
|
|
986
827
|
return;
|
|
987
828
|
};
|
|
988
|
-
_db.pouch.remove_db_replication_from_server = async function (
|
|
989
|
-
SESSION_ID,
|
|
990
|
-
rep_id
|
|
991
|
-
) {
|
|
829
|
+
_db.pouch.remove_db_replication_from_server = async function (SESSION_ID, rep_id) {
|
|
992
830
|
const db = await func.utils.connect_pouchdb(SESSION_ID);
|
|
993
831
|
|
|
994
832
|
try {
|
|
@@ -997,16 +835,14 @@ _db.pouch.remove_db_replication_from_server = async function (
|
|
|
997
835
|
// _this.db_replication_store[rep_id].cancel();
|
|
998
836
|
db.remove(doc);
|
|
999
837
|
// delete _this.db_replication_store[rep_id];
|
|
1000
|
-
} catch (error) {
|
|
838
|
+
} catch (error) {}
|
|
1001
839
|
};
|
|
1002
840
|
|
|
1003
|
-
_db.pouch.get_replications = async function (
|
|
1004
|
-
SESSION_ID = Object.keys(SESSION_OBJ)[0]
|
|
1005
|
-
) {
|
|
841
|
+
_db.pouch.get_replications = async function (SESSION_ID = Object.keys(SESSION_OBJ)[0]) {
|
|
1006
842
|
const db = await func.utils.connect_pouchdb(SESSION_ID);
|
|
1007
843
|
// source: "runtime"
|
|
1008
844
|
let ret = await db.find({
|
|
1009
|
-
selector: { docType:
|
|
845
|
+
selector: { docType: 'rep_request' },
|
|
1010
846
|
});
|
|
1011
847
|
|
|
1012
848
|
return ret.docs;
|
|
@@ -1029,42 +865,28 @@ const set_replication_stat = async function (SESSION_ID, from_stat, to_stat) {
|
|
|
1029
865
|
if (to_stat) _this.db_replication_to_stat = to_stat;
|
|
1030
866
|
|
|
1031
867
|
var data = {};
|
|
1032
|
-
if (
|
|
1033
|
-
_this.db_replication_from_stat === 3 &&
|
|
1034
|
-
_this.db_replication_to_stat === 3
|
|
1035
|
-
) {
|
|
868
|
+
if (_this.db_replication_from_stat === 3 && _this.db_replication_to_stat === 3) {
|
|
1036
869
|
data.SYS_GLOBAL_BOL_REPLICATION_STAT = 1;
|
|
1037
|
-
console.info(
|
|
870
|
+
console.info('Replication On');
|
|
1038
871
|
} else {
|
|
1039
872
|
data.SYS_GLOBAL_BOL_REPLICATION_STAT = 0;
|
|
1040
|
-
console.info(
|
|
873
|
+
console.info('Replication Off');
|
|
1041
874
|
}
|
|
1042
875
|
|
|
1043
876
|
var datasource_changes = {
|
|
1044
877
|
[0]: {
|
|
1045
|
-
[
|
|
878
|
+
['data_system']: data,
|
|
1046
879
|
},
|
|
1047
880
|
};
|
|
1048
881
|
await func.datasource.update(SESSION_ID, datasource_changes);
|
|
1049
882
|
};
|
|
1050
883
|
|
|
1051
|
-
const refresh_document_changes_for_realtime_update = function (
|
|
1052
|
-
SESSION_ID,
|
|
1053
|
-
doc_change
|
|
1054
|
-
) {
|
|
884
|
+
const refresh_document_changes_for_realtime_update = function (SESSION_ID, doc_change) {
|
|
1055
885
|
var _session = _this.SESSION_OBJ[SESSION_ID];
|
|
1056
886
|
|
|
1057
887
|
if (glb.IS_WORKER) {
|
|
1058
|
-
return func.utils.post_back_to_client(
|
|
1059
|
-
SESSION_ID,
|
|
1060
|
-
"refresh_document_changes_for_realtime_update",
|
|
1061
|
-
_session.worker_id,
|
|
1062
|
-
{ doc_change }
|
|
1063
|
-
);
|
|
888
|
+
return func.utils.post_back_to_client(SESSION_ID, 'refresh_document_changes_for_realtime_update', _session.worker_id, { doc_change });
|
|
1064
889
|
}
|
|
1065
890
|
|
|
1066
|
-
func.UI.screen.refresh_document_changes_for_realtime_update(
|
|
1067
|
-
SESSION_ID,
|
|
1068
|
-
doc_change
|
|
1069
|
-
);
|
|
891
|
+
func.UI.screen.refresh_document_changes_for_realtime_update(SESSION_ID, doc_change);
|
|
1070
892
|
};
|