@capacitor-community/sqlite 3.2.4 → 3.3.1
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/CHANGELOG.md +46 -0
- package/CapacitorCommunitySqlite.podspec +1 -0
- package/README.md +26 -117
- package/android/src/main/java/com/getcapacitor/community/database/sqlite/CapacitorSQLite.java +5 -5
- package/android/src/main/java/com/getcapacitor/community/database/sqlite/CapacitorSQLitePlugin.java +3 -2
- package/android/src/main/java/com/getcapacitor/community/database/sqlite/SQLite/Database.java +0 -7
- package/android/src/main/java/com/getcapacitor/community/database/sqlite/SQLite/UtilsFile.java +71 -11
- package/android/src/main/java/com/getcapacitor/community/database/sqlite/SQLite/UtilsUpgrade.java +0 -1
- package/dist/esm/definitions.d.ts +13 -4
- package/dist/esm/definitions.js +3 -2
- package/dist/esm/definitions.js.map +1 -1
- package/dist/esm/web.d.ts +2 -2
- package/dist/esm/web.js +2 -2
- package/dist/esm/web.js.map +1 -1
- package/dist/plugin.cjs.js +5 -4
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +5 -4
- package/dist/plugin.js.map +1 -1
- package/electron/dist/plugin.js +257 -219
- package/electron/dist/plugin.js.map +1 -1
- package/electron/rollup.config.js +1 -1
- package/ios/Plugin/CapacitorSQLite.swift +20 -6
- package/ios/Plugin/CapacitorSQLitePlugin.swift +3 -1
- package/ios/Plugin/ImportExportJson/ExportToJson.swift +0 -1
- package/ios/Plugin/Utils/UtilsFile.swift +87 -30
- package/ios/Plugin/Utils/UtilsMigrate.swift +3 -3
- package/ios/Plugin/Utils/UtilsSecret.swift +2 -8
- package/package.json +6 -6
package/electron/dist/plugin.js
CHANGED
|
@@ -6,6 +6,7 @@ var require$$0 = require('sqlite3');
|
|
|
6
6
|
var require$$0$1 = require('path');
|
|
7
7
|
var require$$1 = require('fs');
|
|
8
8
|
var require$$2 = require('os');
|
|
9
|
+
var require$$3 = require('jszip');
|
|
9
10
|
|
|
10
11
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
11
12
|
|
|
@@ -13,6 +14,7 @@ var require$$0__default = /*#__PURE__*/_interopDefaultLegacy(require$$0);
|
|
|
13
14
|
var require$$0__default$1 = /*#__PURE__*/_interopDefaultLegacy(require$$0$1);
|
|
14
15
|
var require$$1__default = /*#__PURE__*/_interopDefaultLegacy(require$$1);
|
|
15
16
|
var require$$2__default = /*#__PURE__*/_interopDefaultLegacy(require$$2);
|
|
17
|
+
var require$$3__default = /*#__PURE__*/_interopDefaultLegacy(require$$3);
|
|
16
18
|
|
|
17
19
|
var src = {};
|
|
18
20
|
|
|
@@ -51,7 +53,7 @@ class UtilsSQLite {
|
|
|
51
53
|
await this.dbChanges(mDB);
|
|
52
54
|
}
|
|
53
55
|
catch (err) {
|
|
54
|
-
return Promise.reject(
|
|
56
|
+
return Promise.reject(msg + `dbChanges ${err}`);
|
|
55
57
|
}
|
|
56
58
|
try {
|
|
57
59
|
/* // set the password
|
|
@@ -68,12 +70,12 @@ class UtilsSQLite {
|
|
|
68
70
|
}
|
|
69
71
|
}
|
|
70
72
|
catch (err) {
|
|
71
|
-
return Promise.reject(
|
|
73
|
+
return Promise.reject(msg + `${err}`);
|
|
72
74
|
}
|
|
73
75
|
return Promise.resolve(mDB);
|
|
74
76
|
}
|
|
75
77
|
else {
|
|
76
|
-
return Promise.reject(
|
|
78
|
+
return Promise.reject(msg + 'open database failed');
|
|
77
79
|
}
|
|
78
80
|
}
|
|
79
81
|
/**
|
|
@@ -109,7 +111,7 @@ class UtilsSQLite {
|
|
|
109
111
|
}
|
|
110
112
|
mDB.run(`PRAGMA foreign_keys = '${key}'`, (err) => {
|
|
111
113
|
if (err) {
|
|
112
|
-
reject(
|
|
114
|
+
reject(`SetForeignKey: ${err.message}`);
|
|
113
115
|
}
|
|
114
116
|
resolve();
|
|
115
117
|
});
|
|
@@ -126,7 +128,7 @@ class UtilsSQLite {
|
|
|
126
128
|
mDB.get(SELECT_VERSION, [], (err, row) => {
|
|
127
129
|
// process the row here
|
|
128
130
|
if (err) {
|
|
129
|
-
reject(
|
|
131
|
+
reject('getVersion failed: ' + `${err.message}`);
|
|
130
132
|
}
|
|
131
133
|
else {
|
|
132
134
|
if (row == null) {
|
|
@@ -150,7 +152,7 @@ class UtilsSQLite {
|
|
|
150
152
|
return new Promise((resolve, reject) => {
|
|
151
153
|
mDB.run(`PRAGMA user_version = ${version}`, (err) => {
|
|
152
154
|
if (err) {
|
|
153
|
-
reject(
|
|
155
|
+
reject('setVersion failed: ' + `${err.message}`);
|
|
154
156
|
}
|
|
155
157
|
resolve();
|
|
156
158
|
});
|
|
@@ -215,12 +217,12 @@ class UtilsSQLite {
|
|
|
215
217
|
return new Promise((resolve, reject) => {
|
|
216
218
|
const msg = 'BeginTransaction: ';
|
|
217
219
|
if (!isOpen) {
|
|
218
|
-
return Promise.reject(
|
|
220
|
+
return Promise.reject(`${msg}database not opened`);
|
|
219
221
|
}
|
|
220
222
|
const sql = 'BEGIN TRANSACTION;';
|
|
221
223
|
db.run(sql, (err) => {
|
|
222
224
|
if (err) {
|
|
223
|
-
reject(
|
|
225
|
+
reject(`${msg}${err.message}`);
|
|
224
226
|
}
|
|
225
227
|
resolve();
|
|
226
228
|
});
|
|
@@ -235,12 +237,12 @@ class UtilsSQLite {
|
|
|
235
237
|
return new Promise((resolve, reject) => {
|
|
236
238
|
const msg = 'RollbackTransaction: ';
|
|
237
239
|
if (!isOpen) {
|
|
238
|
-
reject(
|
|
240
|
+
reject(`${msg}database not opened`);
|
|
239
241
|
}
|
|
240
242
|
const sql = 'ROLLBACK TRANSACTION;';
|
|
241
243
|
db.run(sql, (err) => {
|
|
242
244
|
if (err) {
|
|
243
|
-
reject(
|
|
245
|
+
reject(`${msg}${err.message}`);
|
|
244
246
|
}
|
|
245
247
|
resolve();
|
|
246
248
|
});
|
|
@@ -255,12 +257,12 @@ class UtilsSQLite {
|
|
|
255
257
|
return new Promise((resolve, reject) => {
|
|
256
258
|
const msg = 'CommitTransaction: ';
|
|
257
259
|
if (!isOpen) {
|
|
258
|
-
reject(
|
|
260
|
+
reject(`${msg}database not opened`);
|
|
259
261
|
}
|
|
260
262
|
const sql = 'COMMIT TRANSACTION;';
|
|
261
263
|
db.run(sql, (err) => {
|
|
262
264
|
if (err) {
|
|
263
|
-
reject(
|
|
265
|
+
reject(`${msg}${err.message}`);
|
|
264
266
|
}
|
|
265
267
|
resolve();
|
|
266
268
|
});
|
|
@@ -278,7 +280,7 @@ class UtilsSQLite {
|
|
|
278
280
|
db.get(SELECT_CHANGE, [], (err, row) => {
|
|
279
281
|
// process the row here
|
|
280
282
|
if (err) {
|
|
281
|
-
reject(
|
|
283
|
+
reject(`DbChanges failed: ${err.message}`);
|
|
282
284
|
}
|
|
283
285
|
else {
|
|
284
286
|
if (row == null) {
|
|
@@ -304,9 +306,7 @@ class UtilsSQLite {
|
|
|
304
306
|
db.get(SELECT_LAST_ID, [], (err, row) => {
|
|
305
307
|
// process the row here
|
|
306
308
|
if (err) {
|
|
307
|
-
|
|
308
|
-
msg += `${err.message}`;
|
|
309
|
-
reject(new Error(msg));
|
|
309
|
+
reject(`GetLastId failed: ${err.message}`);
|
|
310
310
|
}
|
|
311
311
|
else {
|
|
312
312
|
if (row == null)
|
|
@@ -333,7 +333,7 @@ class UtilsSQLite {
|
|
|
333
333
|
return Promise.resolve(changes);
|
|
334
334
|
}
|
|
335
335
|
catch (err) {
|
|
336
|
-
return Promise.reject(
|
|
336
|
+
return Promise.reject(`Execute: ${err.message}`);
|
|
337
337
|
}
|
|
338
338
|
}
|
|
339
339
|
/**
|
|
@@ -345,8 +345,7 @@ class UtilsSQLite {
|
|
|
345
345
|
return new Promise((resolve, reject) => {
|
|
346
346
|
mDB.exec(sql, async (err) => {
|
|
347
347
|
if (err) {
|
|
348
|
-
|
|
349
|
-
reject(new Error(`Execute: ${msg}: `));
|
|
348
|
+
reject(`Execute: ${err.message}: `);
|
|
350
349
|
}
|
|
351
350
|
resolve();
|
|
352
351
|
});
|
|
@@ -365,7 +364,7 @@ class UtilsSQLite {
|
|
|
365
364
|
if (statement == null) {
|
|
366
365
|
let msg = 'ExecuteSet: Error Nostatement';
|
|
367
366
|
msg += ` for index ${i}`;
|
|
368
|
-
return Promise.reject(
|
|
367
|
+
return Promise.reject(msg);
|
|
369
368
|
}
|
|
370
369
|
try {
|
|
371
370
|
if (Array.isArray(values[0])) {
|
|
@@ -378,7 +377,7 @@ class UtilsSQLite {
|
|
|
378
377
|
}
|
|
379
378
|
}
|
|
380
379
|
catch (err) {
|
|
381
|
-
return Promise.reject(
|
|
380
|
+
return Promise.reject(`ExecuteSet: ${err}`);
|
|
382
381
|
}
|
|
383
382
|
}
|
|
384
383
|
return Promise.resolve(lastId);
|
|
@@ -394,9 +393,7 @@ class UtilsSQLite {
|
|
|
394
393
|
let lastId = -1;
|
|
395
394
|
db.run(statement, values, async (err) => {
|
|
396
395
|
if (err) {
|
|
397
|
-
|
|
398
|
-
msg += `${err.message}`;
|
|
399
|
-
reject(new Error(msg));
|
|
396
|
+
reject(`PrepareRun: run ${err.message}`);
|
|
400
397
|
}
|
|
401
398
|
else {
|
|
402
399
|
try {
|
|
@@ -404,9 +401,7 @@ class UtilsSQLite {
|
|
|
404
401
|
resolve(lastId);
|
|
405
402
|
}
|
|
406
403
|
catch (err) {
|
|
407
|
-
|
|
408
|
-
msg += `${err.message}`;
|
|
409
|
-
reject(new Error(msg));
|
|
404
|
+
reject(`PrepareRun: lastId ${err}`);
|
|
410
405
|
}
|
|
411
406
|
}
|
|
412
407
|
});
|
|
@@ -423,7 +418,7 @@ class UtilsSQLite {
|
|
|
423
418
|
mDB.serialize(() => {
|
|
424
419
|
mDB.all(sql, values, (err, rows) => {
|
|
425
420
|
if (err) {
|
|
426
|
-
reject(
|
|
421
|
+
reject(`QueryAll: ${err.message}`);
|
|
427
422
|
}
|
|
428
423
|
else {
|
|
429
424
|
if (rows == null) {
|
|
@@ -518,7 +513,7 @@ class UtilsJson {
|
|
|
518
513
|
await this._uSQLite.beginTransaction(mDB, true);
|
|
519
514
|
}
|
|
520
515
|
catch (err) {
|
|
521
|
-
return Promise.reject(
|
|
516
|
+
return Promise.reject(`CreateDatabaseSchema: ${err}`);
|
|
522
517
|
}
|
|
523
518
|
const stmts = await this.createSchemaStatement(jsonData);
|
|
524
519
|
if (stmts.length > 0) {
|
|
@@ -530,18 +525,18 @@ class UtilsJson {
|
|
|
530
525
|
await this._uSQLite.rollbackTransaction(mDB, true);
|
|
531
526
|
}
|
|
532
527
|
catch (err) {
|
|
533
|
-
return Promise.reject(
|
|
528
|
+
return Promise.reject('CreateSchema: changes < 0 ' + `${err}`);
|
|
534
529
|
}
|
|
535
530
|
}
|
|
536
531
|
}
|
|
537
532
|
catch (err) {
|
|
538
|
-
const msg = err
|
|
533
|
+
const msg = err;
|
|
539
534
|
try {
|
|
540
535
|
await this._uSQLite.rollbackTransaction(mDB, true);
|
|
541
|
-
return Promise.reject(
|
|
536
|
+
return Promise.reject(`CreateSchema: ${msg}`);
|
|
542
537
|
}
|
|
543
538
|
catch (err) {
|
|
544
|
-
return Promise.reject(
|
|
539
|
+
return Promise.reject('CreateSchema: changes < 0 ' + `${err}: ${msg}`);
|
|
545
540
|
}
|
|
546
541
|
}
|
|
547
542
|
}
|
|
@@ -550,7 +545,7 @@ class UtilsJson {
|
|
|
550
545
|
return Promise.resolve(changes);
|
|
551
546
|
}
|
|
552
547
|
catch (err) {
|
|
553
|
-
return Promise.reject(
|
|
548
|
+
return Promise.reject('CreateSchema: commit ' + `${err}`);
|
|
554
549
|
}
|
|
555
550
|
}
|
|
556
551
|
/**
|
|
@@ -643,21 +638,21 @@ class UtilsJson {
|
|
|
643
638
|
// Check if the table exists
|
|
644
639
|
const tableExists = await this.isTableExists(mDB, true, table.name);
|
|
645
640
|
if (!tableExists) {
|
|
646
|
-
return Promise.reject(
|
|
641
|
+
return Promise.reject('CreateDataTable: Table ' + `${table.name} does not exist`);
|
|
647
642
|
}
|
|
648
643
|
// Get the column names and types
|
|
649
644
|
const tableNamesTypes = await this.getTableColumnNamesTypes(mDB, table.name);
|
|
650
645
|
const tableColumnTypes = tableNamesTypes.types;
|
|
651
646
|
const tableColumnNames = tableNamesTypes.names;
|
|
652
647
|
if (tableColumnTypes.length === 0) {
|
|
653
|
-
return Promise.reject(
|
|
648
|
+
return Promise.reject('CreateDataTable: Table ' + `${table.name} info does not exist`);
|
|
654
649
|
}
|
|
655
650
|
// Loop on Table Values
|
|
656
651
|
for (let j = 0; j < table.values.length; j++) {
|
|
657
652
|
// Check the row number of columns
|
|
658
653
|
if (table.values[j].length != tableColumnTypes.length) {
|
|
659
|
-
return Promise.reject(
|
|
660
|
-
`values row ${j} not correct length`)
|
|
654
|
+
return Promise.reject(`CreateDataTable: Table ${table.name} ` +
|
|
655
|
+
`values row ${j} not correct length`);
|
|
661
656
|
}
|
|
662
657
|
// Check the column's type before proceeding
|
|
663
658
|
// remove type checking for allowing RDBMS Types
|
|
@@ -687,8 +682,8 @@ class UtilsJson {
|
|
|
687
682
|
// Update
|
|
688
683
|
const setString = await this.setNameForUpdate(tableColumnNames);
|
|
689
684
|
if (setString.length === 0) {
|
|
690
|
-
return Promise.reject(
|
|
691
|
-
`values row ${j} not set to String`)
|
|
685
|
+
return Promise.reject(`CreateDataTable: Table ${table.name} ` +
|
|
686
|
+
`values row ${j} not set to String`);
|
|
692
687
|
}
|
|
693
688
|
stmt = `UPDATE ${table.name} SET ${setString} WHERE `;
|
|
694
689
|
if (typeof table.values[j][0] == 'string') {
|
|
@@ -700,13 +695,13 @@ class UtilsJson {
|
|
|
700
695
|
}
|
|
701
696
|
lastId = await this._uSQLite.prepareRun(mDB, stmt, table.values[j]);
|
|
702
697
|
if (lastId < 0) {
|
|
703
|
-
return Promise.reject(
|
|
698
|
+
return Promise.reject('CreateDataTable: lastId < 0');
|
|
704
699
|
}
|
|
705
700
|
}
|
|
706
701
|
return Promise.resolve(lastId);
|
|
707
702
|
}
|
|
708
703
|
catch (err) {
|
|
709
|
-
return Promise.reject(
|
|
704
|
+
return Promise.reject(`CreateDataTable: ${err}`);
|
|
710
705
|
}
|
|
711
706
|
}
|
|
712
707
|
/**
|
|
@@ -730,7 +725,7 @@ class UtilsJson {
|
|
|
730
725
|
return Promise.resolve({ names: retNames, types: retTypes });
|
|
731
726
|
}
|
|
732
727
|
catch (err) {
|
|
733
|
-
return Promise.reject(
|
|
728
|
+
return Promise.reject('GetTableColumnNamesTypes: ' + `${err}`);
|
|
734
729
|
}
|
|
735
730
|
}
|
|
736
731
|
/**
|
|
@@ -798,7 +793,7 @@ class UtilsJson {
|
|
|
798
793
|
return Promise.resolve(ret);
|
|
799
794
|
}
|
|
800
795
|
catch (err) {
|
|
801
|
-
return Promise.reject(
|
|
796
|
+
return Promise.reject(`IsIdExists: ${err}`);
|
|
802
797
|
}
|
|
803
798
|
}
|
|
804
799
|
/**
|
|
@@ -816,7 +811,7 @@ class UtilsJson {
|
|
|
816
811
|
resolve(retString);
|
|
817
812
|
}
|
|
818
813
|
else {
|
|
819
|
-
reject(
|
|
814
|
+
reject('CreateQuestionMarkString: length = 0');
|
|
820
815
|
}
|
|
821
816
|
});
|
|
822
817
|
}
|
|
@@ -834,7 +829,7 @@ class UtilsJson {
|
|
|
834
829
|
return Promise.resolve(retString);
|
|
835
830
|
}
|
|
836
831
|
else {
|
|
837
|
-
return Promise.reject(
|
|
832
|
+
return Promise.reject('SetNameForUpdate: length = 0');
|
|
838
833
|
}
|
|
839
834
|
}
|
|
840
835
|
/**
|
|
@@ -1070,7 +1065,7 @@ class UtilsJson {
|
|
|
1070
1065
|
}
|
|
1071
1066
|
const isValid = this.isSchema(sch);
|
|
1072
1067
|
if (!isValid) {
|
|
1073
|
-
return Promise.reject(
|
|
1068
|
+
return Promise.reject(`CheckSchemaValidity: schema[${i}] not valid`);
|
|
1074
1069
|
}
|
|
1075
1070
|
}
|
|
1076
1071
|
return Promise.resolve();
|
|
@@ -1094,7 +1089,7 @@ class UtilsJson {
|
|
|
1094
1089
|
}
|
|
1095
1090
|
const isValid = this.isIndexes(index);
|
|
1096
1091
|
if (!isValid) {
|
|
1097
|
-
return Promise.reject(
|
|
1092
|
+
return Promise.reject(`CheckIndexesValidity: indexes[${i}] not valid`);
|
|
1098
1093
|
}
|
|
1099
1094
|
}
|
|
1100
1095
|
return Promise.resolve();
|
|
@@ -1121,7 +1116,7 @@ class UtilsJson {
|
|
|
1121
1116
|
}
|
|
1122
1117
|
const isValid = this.isTriggers(trigger);
|
|
1123
1118
|
if (!isValid) {
|
|
1124
|
-
return Promise.reject(
|
|
1119
|
+
return Promise.reject(`CheckTriggersValidity: triggers[${i}] not valid`);
|
|
1125
1120
|
}
|
|
1126
1121
|
}
|
|
1127
1122
|
return Promise.resolve();
|
|
@@ -1142,7 +1137,7 @@ class UtilsJson {
|
|
|
1142
1137
|
}
|
|
1143
1138
|
const isValid = this.isView(view);
|
|
1144
1139
|
if (!isValid) {
|
|
1145
|
-
return Promise.reject(
|
|
1140
|
+
return Promise.reject(`CheckViewsValidity: views[${i}] not valid`);
|
|
1146
1141
|
}
|
|
1147
1142
|
}
|
|
1148
1143
|
return Promise.resolve();
|
|
@@ -1157,12 +1152,12 @@ class UtilsJson {
|
|
|
1157
1152
|
try {
|
|
1158
1153
|
const changes = await this._uSQLite.execute(mDB, stmt);
|
|
1159
1154
|
if (changes < 0) {
|
|
1160
|
-
return Promise.reject(
|
|
1155
|
+
return Promise.reject(`CreateView: ${view.name} failed`);
|
|
1161
1156
|
}
|
|
1162
1157
|
return Promise.resolve();
|
|
1163
1158
|
}
|
|
1164
1159
|
catch (err) {
|
|
1165
|
-
return Promise.reject(
|
|
1160
|
+
return Promise.reject(`CreateView: ${err}`);
|
|
1166
1161
|
}
|
|
1167
1162
|
}
|
|
1168
1163
|
}
|
|
@@ -1193,7 +1188,7 @@ class ExportToJson {
|
|
|
1193
1188
|
// get Table's name
|
|
1194
1189
|
const resTables = await this.getTablesNameSQL(mDB);
|
|
1195
1190
|
if (resTables.length === 0) {
|
|
1196
|
-
return Promise.reject(
|
|
1191
|
+
return Promise.reject("createExportObject: table's names failed");
|
|
1197
1192
|
}
|
|
1198
1193
|
else {
|
|
1199
1194
|
switch (sqlObj.mode) {
|
|
@@ -1212,7 +1207,7 @@ class ExportToJson {
|
|
|
1212
1207
|
}
|
|
1213
1208
|
}
|
|
1214
1209
|
if (errmsg.length > 0) {
|
|
1215
|
-
return Promise.reject(
|
|
1210
|
+
return Promise.reject(errmsg);
|
|
1216
1211
|
}
|
|
1217
1212
|
if (tables.length > 0) {
|
|
1218
1213
|
retObj.database = sqlObj.database;
|
|
@@ -1228,7 +1223,7 @@ class ExportToJson {
|
|
|
1228
1223
|
}
|
|
1229
1224
|
}
|
|
1230
1225
|
catch (err) {
|
|
1231
|
-
return Promise.reject(
|
|
1226
|
+
return Promise.reject('createExportObject: ' + err);
|
|
1232
1227
|
}
|
|
1233
1228
|
}
|
|
1234
1229
|
/**
|
|
@@ -1246,7 +1241,7 @@ class ExportToJson {
|
|
|
1246
1241
|
return Promise.resolve(retQuery);
|
|
1247
1242
|
}
|
|
1248
1243
|
catch (err) {
|
|
1249
|
-
return Promise.reject(
|
|
1244
|
+
return Promise.reject(`getTablesNameSQL: ${err}`);
|
|
1250
1245
|
}
|
|
1251
1246
|
}
|
|
1252
1247
|
/**
|
|
@@ -1269,7 +1264,7 @@ class ExportToJson {
|
|
|
1269
1264
|
return Promise.resolve(views);
|
|
1270
1265
|
}
|
|
1271
1266
|
catch (err) {
|
|
1272
|
-
return Promise.reject(
|
|
1267
|
+
return Promise.reject(`getViewsName: ${err}`);
|
|
1273
1268
|
}
|
|
1274
1269
|
}
|
|
1275
1270
|
/**
|
|
@@ -1284,7 +1279,7 @@ class ExportToJson {
|
|
|
1284
1279
|
mDb.get(stmt, [], (err, row) => {
|
|
1285
1280
|
// process the row here
|
|
1286
1281
|
if (err) {
|
|
1287
|
-
reject(
|
|
1282
|
+
reject(`GetSyncDate: ${err.message}`);
|
|
1288
1283
|
}
|
|
1289
1284
|
else {
|
|
1290
1285
|
if (row != null) {
|
|
@@ -1293,7 +1288,7 @@ class ExportToJson {
|
|
|
1293
1288
|
resolve(retDate);
|
|
1294
1289
|
}
|
|
1295
1290
|
else {
|
|
1296
|
-
reject(
|
|
1291
|
+
reject(`GetSyncDate: no syncDate`);
|
|
1297
1292
|
}
|
|
1298
1293
|
}
|
|
1299
1294
|
});
|
|
@@ -1374,12 +1369,12 @@ class ExportToJson {
|
|
|
1374
1369
|
tables.push(table);
|
|
1375
1370
|
}
|
|
1376
1371
|
if (errmsg.length > 0) {
|
|
1377
|
-
return Promise.reject(
|
|
1372
|
+
return Promise.reject(errmsg);
|
|
1378
1373
|
}
|
|
1379
1374
|
return Promise.resolve(tables);
|
|
1380
1375
|
}
|
|
1381
1376
|
catch (err) {
|
|
1382
|
-
return Promise.reject(
|
|
1377
|
+
return Promise.reject(`GetTablesFull: ${err}`);
|
|
1383
1378
|
}
|
|
1384
1379
|
}
|
|
1385
1380
|
/**
|
|
@@ -1431,7 +1426,7 @@ class ExportToJson {
|
|
|
1431
1426
|
return Promise.resolve(schema);
|
|
1432
1427
|
}
|
|
1433
1428
|
catch (err) {
|
|
1434
|
-
return Promise.reject(
|
|
1429
|
+
return Promise.reject(err);
|
|
1435
1430
|
}
|
|
1436
1431
|
}
|
|
1437
1432
|
/**
|
|
@@ -1475,13 +1470,13 @@ class ExportToJson {
|
|
|
1475
1470
|
}
|
|
1476
1471
|
}
|
|
1477
1472
|
if (errmsg.length > 0) {
|
|
1478
|
-
return Promise.reject(
|
|
1473
|
+
return Promise.reject(errmsg);
|
|
1479
1474
|
}
|
|
1480
1475
|
}
|
|
1481
1476
|
return Promise.resolve(indexes);
|
|
1482
1477
|
}
|
|
1483
1478
|
catch (err) {
|
|
1484
|
-
return Promise.reject(
|
|
1479
|
+
return Promise.reject(`GetIndexes: ${err}`);
|
|
1485
1480
|
}
|
|
1486
1481
|
}
|
|
1487
1482
|
/**
|
|
@@ -1506,22 +1501,22 @@ class ExportToJson {
|
|
|
1506
1501
|
const name = rTrg['name'];
|
|
1507
1502
|
let sqlArr = sql.split(name);
|
|
1508
1503
|
if (sqlArr.length != 2) {
|
|
1509
|
-
return Promise.reject(
|
|
1504
|
+
return Promise.reject(`GetTriggers: sql split name does not return 2 values`);
|
|
1510
1505
|
}
|
|
1511
1506
|
if (!sqlArr[1].includes(tableName)) {
|
|
1512
|
-
return Promise.reject(
|
|
1507
|
+
return Promise.reject(`GetTriggers: sql split does not contains ${tableName}`);
|
|
1513
1508
|
}
|
|
1514
1509
|
const timeEvent = sqlArr[1].split(tableName, 1)[0].trim();
|
|
1515
1510
|
sqlArr = sqlArr[1].split(timeEvent + ' ' + tableName);
|
|
1516
1511
|
if (sqlArr.length != 2) {
|
|
1517
|
-
return Promise.reject(
|
|
1512
|
+
return Promise.reject(`GetTriggers: sql split tableName does not return 2 values`);
|
|
1518
1513
|
}
|
|
1519
1514
|
let condition = '';
|
|
1520
1515
|
let logic = '';
|
|
1521
1516
|
if (sqlArr[1].trim().substring(0, 5).toUpperCase() !== 'BEGIN') {
|
|
1522
1517
|
sqlArr = sqlArr[1].trim().split('BEGIN');
|
|
1523
1518
|
if (sqlArr.length != 2) {
|
|
1524
|
-
return Promise.reject(
|
|
1519
|
+
return Promise.reject(`GetTriggers: sql split BEGIN does not return 2 values`);
|
|
1525
1520
|
}
|
|
1526
1521
|
condition = sqlArr[0].trim();
|
|
1527
1522
|
logic = 'BEGIN' + sqlArr[1];
|
|
@@ -1538,18 +1533,18 @@ class ExportToJson {
|
|
|
1538
1533
|
triggers.push(trigger);
|
|
1539
1534
|
}
|
|
1540
1535
|
else {
|
|
1541
|
-
return Promise.reject(
|
|
1536
|
+
return Promise.reject(`GetTriggers: Table ${tableName} doesn't match`);
|
|
1542
1537
|
}
|
|
1543
1538
|
}
|
|
1544
1539
|
else {
|
|
1545
|
-
return Promise.reject(
|
|
1540
|
+
return Promise.reject(`GetTriggers: Table ${tableName} creating indexes`);
|
|
1546
1541
|
}
|
|
1547
1542
|
}
|
|
1548
1543
|
}
|
|
1549
1544
|
return Promise.resolve(triggers);
|
|
1550
1545
|
}
|
|
1551
1546
|
catch (err) {
|
|
1552
|
-
return Promise.reject(
|
|
1547
|
+
return Promise.reject(`GetTriggers: ${err}`);
|
|
1553
1548
|
}
|
|
1554
1549
|
}
|
|
1555
1550
|
/**
|
|
@@ -1568,7 +1563,7 @@ class ExportToJson {
|
|
|
1568
1563
|
rowNames = tableNamesTypes.names;
|
|
1569
1564
|
}
|
|
1570
1565
|
else {
|
|
1571
|
-
return Promise.reject(
|
|
1566
|
+
return Promise.reject(`GetValues: Table ${tableName} no names`);
|
|
1572
1567
|
}
|
|
1573
1568
|
const retValues = await this._uSQLite.queryAll(mDb, query, []);
|
|
1574
1569
|
for (const rValue of retValues) {
|
|
@@ -1586,7 +1581,7 @@ class ExportToJson {
|
|
|
1586
1581
|
return Promise.resolve(values);
|
|
1587
1582
|
}
|
|
1588
1583
|
catch (err) {
|
|
1589
|
-
return Promise.reject(
|
|
1584
|
+
return Promise.reject(`GetValues: ${err}`);
|
|
1590
1585
|
}
|
|
1591
1586
|
}
|
|
1592
1587
|
/**
|
|
@@ -1690,12 +1685,12 @@ class ExportToJson {
|
|
|
1690
1685
|
tables.push(table);
|
|
1691
1686
|
}
|
|
1692
1687
|
if (errmsg.length > 0) {
|
|
1693
|
-
return Promise.reject(
|
|
1688
|
+
return Promise.reject(errmsg);
|
|
1694
1689
|
}
|
|
1695
1690
|
return Promise.resolve(tables);
|
|
1696
1691
|
}
|
|
1697
1692
|
catch (err) {
|
|
1698
|
-
return Promise.reject(
|
|
1693
|
+
return Promise.reject(`GetTablesPartial: ${err}`);
|
|
1699
1694
|
}
|
|
1700
1695
|
}
|
|
1701
1696
|
/**
|
|
@@ -1709,20 +1704,20 @@ class ExportToJson {
|
|
|
1709
1704
|
// get the synchronization date
|
|
1710
1705
|
const syncDate = await this.getSyncDate(mDb);
|
|
1711
1706
|
if (syncDate <= 0) {
|
|
1712
|
-
return Promise.reject(
|
|
1707
|
+
return Promise.reject(`GetPartialModeData: no syncDate`);
|
|
1713
1708
|
}
|
|
1714
1709
|
// get the tables which have been updated
|
|
1715
1710
|
// since last synchronization
|
|
1716
1711
|
const modTables = await this.getTablesModified(mDb, resTables, syncDate);
|
|
1717
1712
|
if (modTables.length <= 0) {
|
|
1718
|
-
return Promise.reject(
|
|
1713
|
+
return Promise.reject(`GetPartialModeData: no modTables`);
|
|
1719
1714
|
}
|
|
1720
1715
|
retData.syncDate = syncDate;
|
|
1721
1716
|
retData.modTables = modTables;
|
|
1722
1717
|
return Promise.resolve(retData);
|
|
1723
1718
|
}
|
|
1724
1719
|
catch (err) {
|
|
1725
|
-
return Promise.reject(
|
|
1720
|
+
return Promise.reject(`GetPartialModeData: ${err}`);
|
|
1726
1721
|
}
|
|
1727
1722
|
}
|
|
1728
1723
|
async getTablesModified(db, tables, syncDate) {
|
|
@@ -1761,12 +1756,12 @@ class ExportToJson {
|
|
|
1761
1756
|
retModified[key] = mode;
|
|
1762
1757
|
}
|
|
1763
1758
|
if (errmsg.length > 0) {
|
|
1764
|
-
return Promise.reject(
|
|
1759
|
+
return Promise.reject(errmsg);
|
|
1765
1760
|
}
|
|
1766
1761
|
return Promise.resolve(retModified);
|
|
1767
1762
|
}
|
|
1768
1763
|
catch (err) {
|
|
1769
|
-
return Promise.reject(
|
|
1764
|
+
return Promise.reject(`GetTableModified: ${err}`);
|
|
1770
1765
|
}
|
|
1771
1766
|
}
|
|
1772
1767
|
async modEmbeddedParentheses(sstr) {
|
|
@@ -1840,7 +1835,7 @@ class UtilsDrop {
|
|
|
1840
1835
|
return Promise.resolve(retArr);
|
|
1841
1836
|
}
|
|
1842
1837
|
catch (err) {
|
|
1843
|
-
return Promise.reject(
|
|
1838
|
+
return Promise.reject(`getTablesNames: ${err}`);
|
|
1844
1839
|
}
|
|
1845
1840
|
}
|
|
1846
1841
|
/**
|
|
@@ -1860,7 +1855,7 @@ class UtilsDrop {
|
|
|
1860
1855
|
return Promise.resolve(retArr);
|
|
1861
1856
|
}
|
|
1862
1857
|
catch (err) {
|
|
1863
|
-
return Promise.reject(
|
|
1858
|
+
return Promise.reject(`getViewsNames: ${err}`);
|
|
1864
1859
|
}
|
|
1865
1860
|
}
|
|
1866
1861
|
/**
|
|
@@ -1884,7 +1879,7 @@ class UtilsDrop {
|
|
|
1884
1879
|
msg = 'DropViews';
|
|
1885
1880
|
break;
|
|
1886
1881
|
default:
|
|
1887
|
-
return Promise.reject(
|
|
1882
|
+
return Promise.reject(`DropElements: ${type} ` + 'not found');
|
|
1888
1883
|
}
|
|
1889
1884
|
// get the element's names
|
|
1890
1885
|
let stmt = 'SELECT name FROM sqlite_master WHERE ';
|
|
@@ -1902,14 +1897,14 @@ class UtilsDrop {
|
|
|
1902
1897
|
for (const stmt of statements) {
|
|
1903
1898
|
const lastId = await this._uSQLite.prepareRun(db, stmt, []);
|
|
1904
1899
|
if (lastId < 0) {
|
|
1905
|
-
return Promise.reject(
|
|
1900
|
+
return Promise.reject(`${msg}: lastId < 0`);
|
|
1906
1901
|
}
|
|
1907
1902
|
}
|
|
1908
1903
|
}
|
|
1909
1904
|
return Promise.resolve();
|
|
1910
1905
|
}
|
|
1911
1906
|
catch (err) {
|
|
1912
|
-
return Promise.reject(
|
|
1907
|
+
return Promise.reject(`${msg}: ${err}`);
|
|
1913
1908
|
}
|
|
1914
1909
|
}
|
|
1915
1910
|
/**
|
|
@@ -1932,7 +1927,7 @@ class UtilsDrop {
|
|
|
1932
1927
|
return Promise.resolve();
|
|
1933
1928
|
}
|
|
1934
1929
|
catch (err) {
|
|
1935
|
-
return Promise.reject(
|
|
1930
|
+
return Promise.reject(`DropAll: ${err}`);
|
|
1936
1931
|
}
|
|
1937
1932
|
}
|
|
1938
1933
|
/**
|
|
@@ -1951,12 +1946,12 @@ class UtilsDrop {
|
|
|
1951
1946
|
try {
|
|
1952
1947
|
const changes = await this._uSQLite.execute(db, statements.join('\n'));
|
|
1953
1948
|
if (changes < 0) {
|
|
1954
|
-
return Promise.reject(
|
|
1949
|
+
return Promise.reject('DropTempTables: changes < 0');
|
|
1955
1950
|
}
|
|
1956
1951
|
return Promise.resolve();
|
|
1957
1952
|
}
|
|
1958
1953
|
catch (err) {
|
|
1959
|
-
return Promise.reject(
|
|
1954
|
+
return Promise.reject(`DropTempTables: ${err}`);
|
|
1960
1955
|
}
|
|
1961
1956
|
}
|
|
1962
1957
|
}
|
|
@@ -1995,7 +1990,7 @@ class ImportFromJson {
|
|
|
1995
1990
|
return Promise.resolve(changes);
|
|
1996
1991
|
}
|
|
1997
1992
|
catch (err) {
|
|
1998
|
-
return Promise.reject(
|
|
1993
|
+
return Promise.reject('CreateDatabaseSchema: ' + `${err}`);
|
|
1999
1994
|
}
|
|
2000
1995
|
}
|
|
2001
1996
|
async createTablesData(mDB, jsonData) {
|
|
@@ -2010,7 +2005,7 @@ class ImportFromJson {
|
|
|
2010
2005
|
await this._uSQLite.beginTransaction(mDB, true);
|
|
2011
2006
|
}
|
|
2012
2007
|
catch (err) {
|
|
2013
|
-
return Promise.reject(
|
|
2008
|
+
return Promise.reject(`createTablesData: ${err}`);
|
|
2014
2009
|
}
|
|
2015
2010
|
for (const jTable of jsonData.tables) {
|
|
2016
2011
|
if (jTable.values != null && jTable.values.length >= 1) {
|
|
@@ -2022,7 +2017,7 @@ class ImportFromJson {
|
|
|
2022
2017
|
isValue = true;
|
|
2023
2018
|
}
|
|
2024
2019
|
catch (err) {
|
|
2025
|
-
msg = err
|
|
2020
|
+
msg = err;
|
|
2026
2021
|
isValue = false;
|
|
2027
2022
|
break;
|
|
2028
2023
|
}
|
|
@@ -2035,7 +2030,7 @@ class ImportFromJson {
|
|
|
2035
2030
|
return Promise.resolve(changes);
|
|
2036
2031
|
}
|
|
2037
2032
|
catch (err) {
|
|
2038
|
-
return Promise.reject(
|
|
2033
|
+
return Promise.reject('createTablesData: ' + `${err}`);
|
|
2039
2034
|
}
|
|
2040
2035
|
}
|
|
2041
2036
|
else {
|
|
@@ -2045,7 +2040,7 @@ class ImportFromJson {
|
|
|
2045
2040
|
return Promise.reject(new Error(`createTablesData: ${msg}`));
|
|
2046
2041
|
}
|
|
2047
2042
|
catch (err) {
|
|
2048
|
-
return Promise.reject(
|
|
2043
|
+
return Promise.reject('createTablesData: ' + `${err}: ${msg}`);
|
|
2049
2044
|
}
|
|
2050
2045
|
}
|
|
2051
2046
|
else {
|
|
@@ -2070,7 +2065,7 @@ class ImportFromJson {
|
|
|
2070
2065
|
await this._uSQLite.beginTransaction(mDB, true);
|
|
2071
2066
|
}
|
|
2072
2067
|
catch (err) {
|
|
2073
|
-
return Promise.reject(
|
|
2068
|
+
return Promise.reject(`createViews: ${err}`);
|
|
2074
2069
|
}
|
|
2075
2070
|
for (const jView of jsonData.views) {
|
|
2076
2071
|
if (jView.value != null) {
|
|
@@ -2080,7 +2075,7 @@ class ImportFromJson {
|
|
|
2080
2075
|
isView = true;
|
|
2081
2076
|
}
|
|
2082
2077
|
catch (err) {
|
|
2083
|
-
msg = err
|
|
2078
|
+
msg = err;
|
|
2084
2079
|
isView = false;
|
|
2085
2080
|
break;
|
|
2086
2081
|
}
|
|
@@ -2093,7 +2088,7 @@ class ImportFromJson {
|
|
|
2093
2088
|
return Promise.resolve(changes);
|
|
2094
2089
|
}
|
|
2095
2090
|
catch (err) {
|
|
2096
|
-
return Promise.reject(
|
|
2091
|
+
return Promise.reject('createViews: ' + `${err}`);
|
|
2097
2092
|
}
|
|
2098
2093
|
}
|
|
2099
2094
|
else {
|
|
@@ -2103,7 +2098,7 @@ class ImportFromJson {
|
|
|
2103
2098
|
return Promise.reject(new Error(`createViews: ${msg}`));
|
|
2104
2099
|
}
|
|
2105
2100
|
catch (err) {
|
|
2106
|
-
return Promise.reject(
|
|
2101
|
+
return Promise.reject('createViews: ' + `${err}: ${msg}`);
|
|
2107
2102
|
}
|
|
2108
2103
|
}
|
|
2109
2104
|
else {
|
|
@@ -2124,6 +2119,7 @@ class UtilsFile {
|
|
|
2124
2119
|
this.pathDB = 'Databases';
|
|
2125
2120
|
this.Path = null;
|
|
2126
2121
|
this.NodeFs = null;
|
|
2122
|
+
this.JSZip = null;
|
|
2127
2123
|
this.Os = null;
|
|
2128
2124
|
this.AppName = '';
|
|
2129
2125
|
this.HomeDir = '';
|
|
@@ -2131,6 +2127,7 @@ class UtilsFile {
|
|
|
2131
2127
|
this.Path = require$$0__default$1['default'];
|
|
2132
2128
|
this.NodeFs = require$$1__default['default'];
|
|
2133
2129
|
this.Os = require$$2__default['default'];
|
|
2130
|
+
this.JSZip = require$$3__default['default'];
|
|
2134
2131
|
this.HomeDir = this.Os.homedir();
|
|
2135
2132
|
const dir = __dirname;
|
|
2136
2133
|
const idx = dir.indexOf('\\');
|
|
@@ -2229,15 +2226,13 @@ class UtilsFile {
|
|
|
2229
2226
|
*/
|
|
2230
2227
|
setPathSuffix(db) {
|
|
2231
2228
|
let toDb = db;
|
|
2232
|
-
|
|
2233
|
-
|
|
2234
|
-
|
|
2235
|
-
|
|
2229
|
+
const ext = '.db';
|
|
2230
|
+
const sep = this.Path.sep;
|
|
2231
|
+
if (db.substring(db.length - 3) === ext) {
|
|
2232
|
+
if (!db.includes('SQLite.db')) {
|
|
2233
|
+
toDb = db.slice(db.lastIndexOf(sep) + 1, -3) + 'SQLite.db';
|
|
2236
2234
|
}
|
|
2237
2235
|
}
|
|
2238
|
-
else {
|
|
2239
|
-
toDb = toDb + 'SQLite.db';
|
|
2240
|
-
}
|
|
2241
2236
|
return toDb;
|
|
2242
2237
|
}
|
|
2243
2238
|
/**
|
|
@@ -2249,7 +2244,7 @@ class UtilsFile {
|
|
|
2249
2244
|
const filenames = this.NodeFs.readdirSync(path);
|
|
2250
2245
|
const dbs = [];
|
|
2251
2246
|
filenames.forEach((file) => {
|
|
2252
|
-
if (this.Path.extname(file) == '.db')
|
|
2247
|
+
if (this.Path.extname(file) == '.db' || this.Path.extname(file) == '.zip')
|
|
2253
2248
|
dbs.push(file);
|
|
2254
2249
|
});
|
|
2255
2250
|
return Promise.resolve(dbs);
|
|
@@ -2257,14 +2252,51 @@ class UtilsFile {
|
|
|
2257
2252
|
/**
|
|
2258
2253
|
* CopyFromAssetToDatabase
|
|
2259
2254
|
* @param db
|
|
2260
|
-
* @param
|
|
2255
|
+
* @param overwrite
|
|
2261
2256
|
*/
|
|
2262
|
-
async copyFromAssetToDatabase(db,
|
|
2257
|
+
async copyFromAssetToDatabase(db, overwrite) {
|
|
2263
2258
|
const pAsset = this.Path.join(this.getAssetsDatabasesPath(), db);
|
|
2259
|
+
const toDb = this.setPathSuffix(db);
|
|
2264
2260
|
const pDb = this.Path.join(this.getDatabasesPath(), toDb);
|
|
2265
|
-
await this.copyFilePath(pAsset, pDb);
|
|
2261
|
+
await this.copyFilePath(pAsset, pDb, overwrite);
|
|
2266
2262
|
return Promise.resolve();
|
|
2267
2263
|
}
|
|
2264
|
+
/**
|
|
2265
|
+
* unzipDatabase
|
|
2266
|
+
* @param db
|
|
2267
|
+
* @param overwrite
|
|
2268
|
+
*/
|
|
2269
|
+
async unzipDatabase(db, overwrite) {
|
|
2270
|
+
const pZip = this.Path.join(this.getAssetsDatabasesPath(), db);
|
|
2271
|
+
// Read the Zip file
|
|
2272
|
+
this.NodeFs.readFile(pZip, (err, data) => {
|
|
2273
|
+
if (err) {
|
|
2274
|
+
console.log(err);
|
|
2275
|
+
return Promise.reject(`unzipDatabase ${JSON.stringify(err)}`);
|
|
2276
|
+
}
|
|
2277
|
+
const zip = new this.JSZip();
|
|
2278
|
+
zip.loadAsync(data).then((contents) => {
|
|
2279
|
+
Object.keys(contents.files).forEach(filename => {
|
|
2280
|
+
zip
|
|
2281
|
+
.file(filename)
|
|
2282
|
+
.async('nodebuffer')
|
|
2283
|
+
.then(async (content) => {
|
|
2284
|
+
const toDb = this.setPathSuffix(filename);
|
|
2285
|
+
const pDb = this.Path.join(this.getDatabasesPath(), toDb);
|
|
2286
|
+
// check filePath exists
|
|
2287
|
+
const isPath = this.isPathExists(pDb);
|
|
2288
|
+
if (!isPath || overwrite) {
|
|
2289
|
+
if (overwrite && isPath) {
|
|
2290
|
+
await this.deleteFilePath(pDb);
|
|
2291
|
+
}
|
|
2292
|
+
this.NodeFs.writeFileSync(pDb, content);
|
|
2293
|
+
}
|
|
2294
|
+
return Promise.resolve();
|
|
2295
|
+
});
|
|
2296
|
+
});
|
|
2297
|
+
});
|
|
2298
|
+
});
|
|
2299
|
+
}
|
|
2268
2300
|
/**
|
|
2269
2301
|
* CopyFileName
|
|
2270
2302
|
* Copy file name
|
|
@@ -2277,15 +2309,15 @@ class UtilsFile {
|
|
|
2277
2309
|
const toFilePath = this.getFilePath(toFileName);
|
|
2278
2310
|
if (filePath.length !== 0 && toFilePath.length !== 0) {
|
|
2279
2311
|
try {
|
|
2280
|
-
await this.copyFilePath(filePath, toFilePath);
|
|
2312
|
+
await this.copyFilePath(filePath, toFilePath, true);
|
|
2281
2313
|
return Promise.resolve();
|
|
2282
2314
|
}
|
|
2283
2315
|
catch (err) {
|
|
2284
|
-
return Promise.reject(
|
|
2316
|
+
return Promise.reject(`CopyFileName: ${err}`);
|
|
2285
2317
|
}
|
|
2286
2318
|
}
|
|
2287
2319
|
else {
|
|
2288
|
-
return Promise.reject(
|
|
2320
|
+
return Promise.reject('CopyFileName: cannot get the ' + 'filePath');
|
|
2289
2321
|
}
|
|
2290
2322
|
}
|
|
2291
2323
|
/**
|
|
@@ -2294,26 +2326,25 @@ class UtilsFile {
|
|
|
2294
2326
|
* @param filePath
|
|
2295
2327
|
* @param toFilePath
|
|
2296
2328
|
*/
|
|
2297
|
-
async copyFilePath(filePath, toFilePath) {
|
|
2329
|
+
async copyFilePath(filePath, toFilePath, overwrite) {
|
|
2298
2330
|
if (filePath.length !== 0 && toFilePath.length !== 0) {
|
|
2299
2331
|
// check filePath exists
|
|
2300
|
-
const isPath = this.isPathExists(
|
|
2301
|
-
if (isPath) {
|
|
2332
|
+
const isPath = this.isPathExists(toFilePath);
|
|
2333
|
+
if (!isPath || overwrite) {
|
|
2302
2334
|
try {
|
|
2303
|
-
|
|
2335
|
+
if (overwrite && isPath) {
|
|
2336
|
+
await this.deleteFilePath(toFilePath);
|
|
2337
|
+
}
|
|
2304
2338
|
this.NodeFs.copyFileSync(filePath, toFilePath);
|
|
2305
|
-
return Promise.resolve();
|
|
2306
2339
|
}
|
|
2307
2340
|
catch (err) {
|
|
2308
|
-
return Promise.reject(
|
|
2341
|
+
return Promise.reject(`CopyFilePath: ${err}`);
|
|
2309
2342
|
}
|
|
2310
2343
|
}
|
|
2311
|
-
|
|
2312
|
-
return Promise.reject(new Error('CopyFilePath: filePath does not ' + 'exist'));
|
|
2313
|
-
}
|
|
2344
|
+
return Promise.resolve();
|
|
2314
2345
|
}
|
|
2315
2346
|
else {
|
|
2316
|
-
return Promise.reject(
|
|
2347
|
+
return Promise.reject('CopyFilePath: cannot get the ' + 'filePath');
|
|
2317
2348
|
}
|
|
2318
2349
|
}
|
|
2319
2350
|
async copyFile(fromPath, fromFile, toPath, toFile) {
|
|
@@ -2324,7 +2355,7 @@ class UtilsFile {
|
|
|
2324
2355
|
return Promise.resolve();
|
|
2325
2356
|
}
|
|
2326
2357
|
catch (err) {
|
|
2327
|
-
return Promise.reject(
|
|
2358
|
+
return Promise.reject(`CopyFile: ${err}`);
|
|
2328
2359
|
}
|
|
2329
2360
|
}
|
|
2330
2361
|
/**
|
|
@@ -2341,11 +2372,11 @@ class UtilsFile {
|
|
|
2341
2372
|
return Promise.resolve();
|
|
2342
2373
|
}
|
|
2343
2374
|
catch (err) {
|
|
2344
|
-
return Promise.reject(
|
|
2375
|
+
return Promise.reject('DeleteFileName: delete filePath ' + `failed ${err}`);
|
|
2345
2376
|
}
|
|
2346
2377
|
}
|
|
2347
2378
|
else {
|
|
2348
|
-
return Promise.reject(
|
|
2379
|
+
return Promise.reject('DeleteFileName: get filePath ' + 'failed');
|
|
2349
2380
|
}
|
|
2350
2381
|
}
|
|
2351
2382
|
/**
|
|
@@ -2363,7 +2394,7 @@ class UtilsFile {
|
|
|
2363
2394
|
return Promise.resolve();
|
|
2364
2395
|
}
|
|
2365
2396
|
catch (err) {
|
|
2366
|
-
return Promise.reject(
|
|
2397
|
+
return Promise.reject('DeleteFilePath: ' + `${err}`);
|
|
2367
2398
|
}
|
|
2368
2399
|
}
|
|
2369
2400
|
else {
|
|
@@ -2371,7 +2402,7 @@ class UtilsFile {
|
|
|
2371
2402
|
}
|
|
2372
2403
|
}
|
|
2373
2404
|
else {
|
|
2374
|
-
return Promise.reject(
|
|
2405
|
+
return Promise.reject('DeleteFilePath: delete filePath' + 'failed');
|
|
2375
2406
|
}
|
|
2376
2407
|
}
|
|
2377
2408
|
/**
|
|
@@ -2389,11 +2420,11 @@ class UtilsFile {
|
|
|
2389
2420
|
return Promise.resolve();
|
|
2390
2421
|
}
|
|
2391
2422
|
catch (err) {
|
|
2392
|
-
return Promise.reject(
|
|
2423
|
+
return Promise.reject(`RenameFileName: ${err}`);
|
|
2393
2424
|
}
|
|
2394
2425
|
}
|
|
2395
2426
|
else {
|
|
2396
|
-
return Promise.reject(
|
|
2427
|
+
return Promise.reject('RenameFileName: filePaths do not ' + 'exist');
|
|
2397
2428
|
}
|
|
2398
2429
|
}
|
|
2399
2430
|
/**
|
|
@@ -2413,15 +2444,15 @@ class UtilsFile {
|
|
|
2413
2444
|
return Promise.resolve();
|
|
2414
2445
|
}
|
|
2415
2446
|
catch (err) {
|
|
2416
|
-
return Promise.reject(
|
|
2447
|
+
return Promise.reject('RenameFilePath: ' + `${err}`);
|
|
2417
2448
|
}
|
|
2418
2449
|
}
|
|
2419
2450
|
else {
|
|
2420
|
-
return Promise.reject(
|
|
2451
|
+
return Promise.reject('RenameFilePath: filePath ' + 'does not exist');
|
|
2421
2452
|
}
|
|
2422
2453
|
}
|
|
2423
2454
|
else {
|
|
2424
|
-
return Promise.reject(
|
|
2455
|
+
return Promise.reject('RenameFilePath: filePath not found');
|
|
2425
2456
|
}
|
|
2426
2457
|
}
|
|
2427
2458
|
/**
|
|
@@ -2442,15 +2473,15 @@ class UtilsFile {
|
|
|
2442
2473
|
return Promise.resolve();
|
|
2443
2474
|
}
|
|
2444
2475
|
catch (err) {
|
|
2445
|
-
return Promise.reject(
|
|
2476
|
+
return Promise.reject('RestoreFileName: ' + `${err}`);
|
|
2446
2477
|
}
|
|
2447
2478
|
}
|
|
2448
2479
|
else {
|
|
2449
|
-
return Promise.reject(
|
|
2480
|
+
return Promise.reject(`RestoreFileName: ${fileName} ` + 'does not exist');
|
|
2450
2481
|
}
|
|
2451
2482
|
}
|
|
2452
2483
|
else {
|
|
2453
|
-
return Promise.reject(
|
|
2484
|
+
return Promise.reject(`RestoreFileName: ${mFileName} ` + 'does not exist');
|
|
2454
2485
|
}
|
|
2455
2486
|
}
|
|
2456
2487
|
/**
|
|
@@ -2520,11 +2551,11 @@ class UtilsUpgrade {
|
|
|
2520
2551
|
if (upgrade != null) {
|
|
2521
2552
|
const keys = Object.keys(upgrade);
|
|
2522
2553
|
if (!keys.includes('toVersion')) {
|
|
2523
|
-
return Promise.reject(
|
|
2554
|
+
return Promise.reject('onUpgrade: toVersion not given');
|
|
2524
2555
|
}
|
|
2525
2556
|
const toVersion = upgrade.toVersion;
|
|
2526
2557
|
if (!keys.includes('statement')) {
|
|
2527
|
-
return Promise.reject(
|
|
2558
|
+
return Promise.reject('onUpgrade: statement not given');
|
|
2528
2559
|
}
|
|
2529
2560
|
const statement = upgrade.statement;
|
|
2530
2561
|
let set = [];
|
|
@@ -2537,7 +2568,7 @@ class UtilsUpgrade {
|
|
|
2537
2568
|
msg += `version ${toVersion} , but target version `;
|
|
2538
2569
|
msg += `is ${targetVersion} for database ${dbName}`;
|
|
2539
2570
|
msg += ` and version ${curVersion}`;
|
|
2540
|
-
return Promise.reject(
|
|
2571
|
+
return Promise.reject(`onUpgrade: ${msg}`);
|
|
2541
2572
|
}
|
|
2542
2573
|
try {
|
|
2543
2574
|
// set Foreign Keys Off
|
|
@@ -2563,11 +2594,11 @@ class UtilsUpgrade {
|
|
|
2563
2594
|
return Promise.resolve(changes);
|
|
2564
2595
|
}
|
|
2565
2596
|
catch (err) {
|
|
2566
|
-
return Promise.reject(
|
|
2597
|
+
return Promise.reject(`onUpgrade: ${err}`);
|
|
2567
2598
|
}
|
|
2568
2599
|
}
|
|
2569
2600
|
else {
|
|
2570
|
-
return Promise.reject(
|
|
2601
|
+
return Promise.reject('onUpgrade: upgrade not found');
|
|
2571
2602
|
}
|
|
2572
2603
|
}
|
|
2573
2604
|
/**
|
|
@@ -2587,7 +2618,7 @@ class UtilsUpgrade {
|
|
|
2587
2618
|
// -> Create new tables from upgrade.statement
|
|
2588
2619
|
const changes = await this._uSQLite.execute(mDB, statement);
|
|
2589
2620
|
if (changes < 0) {
|
|
2590
|
-
return Promise.reject(
|
|
2621
|
+
return Promise.reject('ExecuteStatementProcess: ' + 'changes < 0');
|
|
2591
2622
|
}
|
|
2592
2623
|
// -> Create the list of table's common fields
|
|
2593
2624
|
await this.findCommonColumns(mDB);
|
|
@@ -2603,7 +2634,7 @@ class UtilsUpgrade {
|
|
|
2603
2634
|
return Promise.resolve();
|
|
2604
2635
|
}
|
|
2605
2636
|
catch (err) {
|
|
2606
|
-
return Promise.reject(
|
|
2637
|
+
return Promise.reject(`ExecuteStatementProcess: ${err}`);
|
|
2607
2638
|
}
|
|
2608
2639
|
}
|
|
2609
2640
|
/**
|
|
@@ -2617,7 +2648,7 @@ class UtilsUpgrade {
|
|
|
2617
2648
|
// -> load new data
|
|
2618
2649
|
const lastId = await this._uSQLite.executeSet(mDB, set);
|
|
2619
2650
|
if (lastId < 0) {
|
|
2620
|
-
return Promise.reject(
|
|
2651
|
+
return Promise.reject('ExecuteSetProcess: lastId ' + '< 0');
|
|
2621
2652
|
}
|
|
2622
2653
|
// -> update database version
|
|
2623
2654
|
await this._uSQLite.setVersion(mDB, toVersion);
|
|
@@ -2629,13 +2660,13 @@ class UtilsUpgrade {
|
|
|
2629
2660
|
stmt += `sync_date = ${sDate} WHERE id = 1;`;
|
|
2630
2661
|
const changes = await this._uSQLite.execute(mDB, stmt);
|
|
2631
2662
|
if (changes < 0) {
|
|
2632
|
-
return Promise.reject(
|
|
2663
|
+
return Promise.reject('ExecuteSetProcess: changes ' + '< 0');
|
|
2633
2664
|
}
|
|
2634
2665
|
}
|
|
2635
2666
|
return Promise.resolve();
|
|
2636
2667
|
}
|
|
2637
2668
|
catch (err) {
|
|
2638
|
-
return Promise.reject(
|
|
2669
|
+
return Promise.reject(`ExecuteSetProcess: ${err}`);
|
|
2639
2670
|
}
|
|
2640
2671
|
}
|
|
2641
2672
|
/**
|
|
@@ -2651,13 +2682,13 @@ class UtilsUpgrade {
|
|
|
2651
2682
|
await this.backupTable(mDB, table);
|
|
2652
2683
|
}
|
|
2653
2684
|
catch (err) {
|
|
2654
|
-
return Promise.reject(
|
|
2685
|
+
return Promise.reject(`${msg}table ${table}: ` + `${err}`);
|
|
2655
2686
|
}
|
|
2656
2687
|
}
|
|
2657
2688
|
return Promise.resolve();
|
|
2658
2689
|
}
|
|
2659
2690
|
catch (err) {
|
|
2660
|
-
return Promise.reject(
|
|
2691
|
+
return Promise.reject(`BackupTables: ${err}`);
|
|
2661
2692
|
}
|
|
2662
2693
|
}
|
|
2663
2694
|
/**
|
|
@@ -2682,22 +2713,22 @@ class UtilsUpgrade {
|
|
|
2682
2713
|
await this._uSQLite.rollbackTransaction(mDB, true);
|
|
2683
2714
|
}
|
|
2684
2715
|
catch (err) {
|
|
2685
|
-
msg += `: ${err
|
|
2716
|
+
msg += `: ${err}`;
|
|
2686
2717
|
}
|
|
2687
|
-
return Promise.reject(
|
|
2718
|
+
return Promise.reject(`${msg}`);
|
|
2688
2719
|
}
|
|
2689
2720
|
else {
|
|
2690
2721
|
try {
|
|
2691
2722
|
await this._uSQLite.commitTransaction(mDB, true);
|
|
2692
2723
|
}
|
|
2693
2724
|
catch (err) {
|
|
2694
|
-
return Promise.reject(
|
|
2725
|
+
return Promise.reject('BackupTable: ' + `${err}`);
|
|
2695
2726
|
}
|
|
2696
2727
|
}
|
|
2697
2728
|
return Promise.resolve();
|
|
2698
2729
|
}
|
|
2699
2730
|
catch (err) {
|
|
2700
|
-
return Promise.reject(
|
|
2731
|
+
return Promise.reject(`BackupTable: ${err}`);
|
|
2701
2732
|
}
|
|
2702
2733
|
}
|
|
2703
2734
|
/**
|
|
@@ -2719,7 +2750,7 @@ class UtilsUpgrade {
|
|
|
2719
2750
|
return Promise.resolve(retNames);
|
|
2720
2751
|
}
|
|
2721
2752
|
catch (err) {
|
|
2722
|
-
return Promise.reject(
|
|
2753
|
+
return Promise.reject('GetTableColumnNames: ' + `${err}`);
|
|
2723
2754
|
}
|
|
2724
2755
|
}
|
|
2725
2756
|
/**
|
|
@@ -2731,7 +2762,7 @@ class UtilsUpgrade {
|
|
|
2731
2762
|
// Get new table list
|
|
2732
2763
|
const tables = await this._uDrop.getTablesNames(mDB);
|
|
2733
2764
|
if (tables.length === 0) {
|
|
2734
|
-
return Promise.reject(
|
|
2765
|
+
return Promise.reject('FindCommonColumns: get ' + "table's names failed");
|
|
2735
2766
|
}
|
|
2736
2767
|
for (const table of tables) {
|
|
2737
2768
|
// get the column's name
|
|
@@ -2745,7 +2776,7 @@ class UtilsUpgrade {
|
|
|
2745
2776
|
return Promise.resolve();
|
|
2746
2777
|
}
|
|
2747
2778
|
catch (err) {
|
|
2748
|
-
return Promise.reject(
|
|
2779
|
+
return Promise.reject(`FindCommonColumns: ${err}`);
|
|
2749
2780
|
}
|
|
2750
2781
|
}
|
|
2751
2782
|
/**
|
|
@@ -2787,9 +2818,9 @@ class UtilsUpgrade {
|
|
|
2787
2818
|
await this._uSQLite.rollbackTransaction(mDB, true);
|
|
2788
2819
|
}
|
|
2789
2820
|
catch (err) {
|
|
2790
|
-
msg += `: ${err
|
|
2821
|
+
msg += `: ${err}`;
|
|
2791
2822
|
}
|
|
2792
|
-
return Promise.reject(
|
|
2823
|
+
return Promise.reject(`${msg}`);
|
|
2793
2824
|
}
|
|
2794
2825
|
else {
|
|
2795
2826
|
try {
|
|
@@ -2797,12 +2828,12 @@ class UtilsUpgrade {
|
|
|
2797
2828
|
return Promise.resolve();
|
|
2798
2829
|
}
|
|
2799
2830
|
catch (err) {
|
|
2800
|
-
return Promise.reject(
|
|
2831
|
+
return Promise.reject('updateNewTablesData: ' + `${err}`);
|
|
2801
2832
|
}
|
|
2802
2833
|
}
|
|
2803
2834
|
}
|
|
2804
2835
|
catch (err) {
|
|
2805
|
-
return Promise.reject(
|
|
2836
|
+
return Promise.reject('updateNewTablesData: ' + `${err}`);
|
|
2806
2837
|
}
|
|
2807
2838
|
}
|
|
2808
2839
|
}
|
|
@@ -2898,7 +2929,7 @@ class Database {
|
|
|
2898
2929
|
await this._uFile.restoreFileName(this._dbName, 'backup');
|
|
2899
2930
|
}
|
|
2900
2931
|
catch (err) {
|
|
2901
|
-
return Promise.reject(
|
|
2932
|
+
return Promise.reject(`Open: ${err}`);
|
|
2902
2933
|
}
|
|
2903
2934
|
}
|
|
2904
2935
|
}
|
|
@@ -2907,7 +2938,7 @@ class Database {
|
|
|
2907
2938
|
await this._uSQLite.setVersion(this._mDB, this._version);
|
|
2908
2939
|
}
|
|
2909
2940
|
catch (err) {
|
|
2910
|
-
return Promise.reject(
|
|
2941
|
+
return Promise.reject(`SetVersion: ${this._version} ${err}`);
|
|
2911
2942
|
}
|
|
2912
2943
|
}
|
|
2913
2944
|
}
|
|
@@ -2916,7 +2947,7 @@ class Database {
|
|
|
2916
2947
|
catch (err) {
|
|
2917
2948
|
if (this._isDBOpen)
|
|
2918
2949
|
this.close();
|
|
2919
|
-
return Promise.reject(
|
|
2950
|
+
return Promise.reject(`Open: ${err}`);
|
|
2920
2951
|
}
|
|
2921
2952
|
}
|
|
2922
2953
|
/**
|
|
@@ -2929,8 +2960,8 @@ class Database {
|
|
|
2929
2960
|
this._mDB.close((err) => {
|
|
2930
2961
|
if (err) {
|
|
2931
2962
|
let msg = 'Close: Failed in closing: ';
|
|
2932
|
-
msg += `${this._dbName} ${err
|
|
2933
|
-
return Promise.reject(
|
|
2963
|
+
msg += `${this._dbName} ${err}`;
|
|
2964
|
+
return Promise.reject(msg);
|
|
2934
2965
|
}
|
|
2935
2966
|
this._isDBOpen = false;
|
|
2936
2967
|
return Promise.resolve();
|
|
@@ -2952,13 +2983,13 @@ class Database {
|
|
|
2952
2983
|
catch (err) {
|
|
2953
2984
|
if (this._isDBOpen)
|
|
2954
2985
|
this.close();
|
|
2955
|
-
return Promise.reject(
|
|
2986
|
+
return Promise.reject(`getVersion: ${err}`);
|
|
2956
2987
|
}
|
|
2957
2988
|
}
|
|
2958
2989
|
else {
|
|
2959
2990
|
let msg = `getVersion: Database ${this._dbName} `;
|
|
2960
2991
|
msg += `not opened`;
|
|
2961
|
-
return Promise.reject(
|
|
2992
|
+
return Promise.reject(msg);
|
|
2962
2993
|
}
|
|
2963
2994
|
}
|
|
2964
2995
|
/**
|
|
@@ -2976,7 +3007,7 @@ class Database {
|
|
|
2976
3007
|
await this.open();
|
|
2977
3008
|
}
|
|
2978
3009
|
catch (err) {
|
|
2979
|
-
return Promise.reject(
|
|
3010
|
+
return Promise.reject(`DeleteDB: ${err}`);
|
|
2980
3011
|
}
|
|
2981
3012
|
}
|
|
2982
3013
|
// close the database
|
|
@@ -2984,7 +3015,7 @@ class Database {
|
|
|
2984
3015
|
await this.close();
|
|
2985
3016
|
}
|
|
2986
3017
|
catch (err) {
|
|
2987
|
-
return Promise.reject(
|
|
3018
|
+
return Promise.reject('DeleteDB: Close failed');
|
|
2988
3019
|
}
|
|
2989
3020
|
// delete the database
|
|
2990
3021
|
if (isExists) {
|
|
@@ -2993,8 +3024,8 @@ class Database {
|
|
|
2993
3024
|
}
|
|
2994
3025
|
catch (err) {
|
|
2995
3026
|
let msg = `DeleteDB: deleteFile ${dbName}`;
|
|
2996
|
-
msg += ` failed ${err
|
|
2997
|
-
return Promise.reject(
|
|
3027
|
+
msg += ` failed ${err}`;
|
|
3028
|
+
return Promise.reject(msg);
|
|
2998
3029
|
}
|
|
2999
3030
|
}
|
|
3000
3031
|
return Promise.resolve();
|
|
@@ -3005,19 +3036,20 @@ class Database {
|
|
|
3005
3036
|
* @returns
|
|
3006
3037
|
*/
|
|
3007
3038
|
async isTableExists(tableName) {
|
|
3008
|
-
if (
|
|
3039
|
+
if (this._mDB != null && this._isDBOpen) {
|
|
3040
|
+
const isOpen = this._isDBOpen;
|
|
3041
|
+
try {
|
|
3042
|
+
const retB = await this._uJson.isTableExists(this._mDB, isOpen, tableName);
|
|
3043
|
+
return Promise.resolve(retB);
|
|
3044
|
+
}
|
|
3045
|
+
catch (err) {
|
|
3046
|
+
return Promise.reject(`IsTableExists: ${err}`);
|
|
3047
|
+
}
|
|
3048
|
+
}
|
|
3049
|
+
else {
|
|
3009
3050
|
let msg = `isTableExists: Database ${this._dbName} `;
|
|
3010
3051
|
msg += `not opened`;
|
|
3011
|
-
return Promise.reject(
|
|
3012
|
-
}
|
|
3013
|
-
const isOpen = this._isDBOpen;
|
|
3014
|
-
try {
|
|
3015
|
-
const retB = await this._uJson.isTableExists(this._mDB, isOpen, tableName);
|
|
3016
|
-
return Promise.resolve(retB);
|
|
3017
|
-
}
|
|
3018
|
-
catch (err) {
|
|
3019
|
-
const msg = `IsTableExists: ${err.message}`;
|
|
3020
|
-
return Promise.reject(new Error(msg));
|
|
3052
|
+
return Promise.reject(msg);
|
|
3021
3053
|
}
|
|
3022
3054
|
}
|
|
3023
3055
|
/**
|
|
@@ -3029,7 +3061,7 @@ class Database {
|
|
|
3029
3061
|
if (!this._isDBOpen) {
|
|
3030
3062
|
let msg = `CreateSyncTable: Database ${this._dbName} `;
|
|
3031
3063
|
msg += `not opened`;
|
|
3032
|
-
return Promise.reject(
|
|
3064
|
+
return Promise.reject(msg);
|
|
3033
3065
|
}
|
|
3034
3066
|
let changes = -1;
|
|
3035
3067
|
const isOpen = this._isDBOpen;
|
|
@@ -3047,13 +3079,13 @@ class Database {
|
|
|
3047
3079
|
"${date}");`;
|
|
3048
3080
|
changes = await this._uSQLite.execute(this._mDB, stmts);
|
|
3049
3081
|
if (changes < 0) {
|
|
3050
|
-
return Promise.reject(
|
|
3082
|
+
return Promise.reject(`CreateSyncTable: failed changes < 0`);
|
|
3051
3083
|
}
|
|
3052
3084
|
}
|
|
3053
3085
|
return Promise.resolve(changes);
|
|
3054
3086
|
}
|
|
3055
3087
|
catch (err) {
|
|
3056
|
-
return Promise.reject(
|
|
3088
|
+
return Promise.reject(`CreateSyncTable: ${err}`);
|
|
3057
3089
|
}
|
|
3058
3090
|
}
|
|
3059
3091
|
/**
|
|
@@ -3081,7 +3113,7 @@ class Database {
|
|
|
3081
3113
|
}
|
|
3082
3114
|
}
|
|
3083
3115
|
catch (err) {
|
|
3084
|
-
return { result: false, message: `setSyncDate failed: ${err
|
|
3116
|
+
return { result: false, message: `setSyncDate failed: ${err}` };
|
|
3085
3117
|
}
|
|
3086
3118
|
}
|
|
3087
3119
|
/**
|
|
@@ -3105,7 +3137,7 @@ class Database {
|
|
|
3105
3137
|
}
|
|
3106
3138
|
}
|
|
3107
3139
|
catch (err) {
|
|
3108
|
-
return { syncDate: 0, message: `setSyncDate failed: ${err
|
|
3140
|
+
return { syncDate: 0, message: `setSyncDate failed: ${err}` };
|
|
3109
3141
|
}
|
|
3110
3142
|
}
|
|
3111
3143
|
/**
|
|
@@ -3118,29 +3150,29 @@ class Database {
|
|
|
3118
3150
|
if (!this._isDBOpen) {
|
|
3119
3151
|
let msg = `ExecuteSQL: Database ${this._dbName} `;
|
|
3120
3152
|
msg += `not opened`;
|
|
3121
|
-
return Promise.reject(
|
|
3153
|
+
return Promise.reject(msg);
|
|
3122
3154
|
}
|
|
3123
3155
|
try {
|
|
3124
3156
|
if (transaction)
|
|
3125
3157
|
await this._uSQLite.beginTransaction(this._mDB, this._isDBOpen);
|
|
3126
3158
|
const changes = await this._uSQLite.execute(this._mDB, sql);
|
|
3127
3159
|
if (changes < 0) {
|
|
3128
|
-
return Promise.reject(
|
|
3160
|
+
return Promise.reject('ExecuteSQL: changes < 0');
|
|
3129
3161
|
}
|
|
3130
3162
|
if (transaction)
|
|
3131
3163
|
await this._uSQLite.commitTransaction(this._mDB, this._isDBOpen);
|
|
3132
3164
|
return Promise.resolve(changes);
|
|
3133
3165
|
}
|
|
3134
3166
|
catch (err) {
|
|
3135
|
-
let msg = `ExecuteSQL: ${err
|
|
3167
|
+
let msg = `ExecuteSQL: ${err}`;
|
|
3136
3168
|
try {
|
|
3137
3169
|
if (transaction)
|
|
3138
3170
|
await this._uSQLite.rollbackTransaction(this._mDB, this._isDBOpen);
|
|
3139
3171
|
}
|
|
3140
3172
|
catch (err) {
|
|
3141
|
-
msg += ` : ${err
|
|
3173
|
+
msg += ` : ${err}`;
|
|
3142
3174
|
}
|
|
3143
|
-
return Promise.reject(
|
|
3175
|
+
return Promise.reject(`ExecuteSQL: ${msg}`);
|
|
3144
3176
|
}
|
|
3145
3177
|
}
|
|
3146
3178
|
/**
|
|
@@ -3154,14 +3186,14 @@ class Database {
|
|
|
3154
3186
|
if (!this._isDBOpen) {
|
|
3155
3187
|
let msg = `SelectSQL: Database ${this._dbName} `;
|
|
3156
3188
|
msg += `not opened`;
|
|
3157
|
-
return Promise.reject(
|
|
3189
|
+
return Promise.reject(msg);
|
|
3158
3190
|
}
|
|
3159
3191
|
try {
|
|
3160
3192
|
const retArr = await this._uSQLite.queryAll(this._mDB, sql, values);
|
|
3161
3193
|
return Promise.resolve(retArr);
|
|
3162
3194
|
}
|
|
3163
3195
|
catch (err) {
|
|
3164
|
-
return Promise.reject(
|
|
3196
|
+
return Promise.reject(`SelectSQL: ${err}`);
|
|
3165
3197
|
}
|
|
3166
3198
|
}
|
|
3167
3199
|
/**
|
|
@@ -3175,7 +3207,7 @@ class Database {
|
|
|
3175
3207
|
if (!this._isDBOpen) {
|
|
3176
3208
|
let msg = `RunSQL: Database ${this._dbName} `;
|
|
3177
3209
|
msg += `not opened`;
|
|
3178
|
-
return Promise.reject(
|
|
3210
|
+
return Promise.reject(msg);
|
|
3179
3211
|
}
|
|
3180
3212
|
const retRes = { changes: -1, lastId: -1 };
|
|
3181
3213
|
let initChanges = -1;
|
|
@@ -3186,14 +3218,14 @@ class Database {
|
|
|
3186
3218
|
await this._uSQLite.beginTransaction(this._mDB, this._isDBOpen);
|
|
3187
3219
|
}
|
|
3188
3220
|
catch (err) {
|
|
3189
|
-
return Promise.reject(
|
|
3221
|
+
return Promise.reject(`ExecSet: ${err}`);
|
|
3190
3222
|
}
|
|
3191
3223
|
try {
|
|
3192
3224
|
const lastId = await this._uSQLite.prepareRun(this._mDB, statement, values);
|
|
3193
3225
|
if (lastId < 0) {
|
|
3194
3226
|
if (transaction)
|
|
3195
3227
|
await this._uSQLite.rollbackTransaction(this._mDB, this._isDBOpen);
|
|
3196
|
-
return Promise.reject(
|
|
3228
|
+
return Promise.reject(`RunSQL: return LastId < 0`);
|
|
3197
3229
|
}
|
|
3198
3230
|
if (transaction)
|
|
3199
3231
|
await this._uSQLite.commitTransaction(this._mDB, this._isDBOpen);
|
|
@@ -3204,7 +3236,7 @@ class Database {
|
|
|
3204
3236
|
catch (err) {
|
|
3205
3237
|
if (transaction)
|
|
3206
3238
|
await this._uSQLite.rollbackTransaction(this._mDB, this._isDBOpen);
|
|
3207
|
-
return Promise.reject(
|
|
3239
|
+
return Promise.reject(`RunSQL: ${err}`);
|
|
3208
3240
|
}
|
|
3209
3241
|
}
|
|
3210
3242
|
/**
|
|
@@ -3217,7 +3249,7 @@ class Database {
|
|
|
3217
3249
|
if (!this._isDBOpen) {
|
|
3218
3250
|
let msg = `ExecSet: Database ${this._dbName} `;
|
|
3219
3251
|
msg += `not opened`;
|
|
3220
|
-
return Promise.reject(
|
|
3252
|
+
return Promise.reject(msg);
|
|
3221
3253
|
}
|
|
3222
3254
|
const retRes = { changes: -1, lastId: -1 };
|
|
3223
3255
|
let initChanges = -1;
|
|
@@ -3228,7 +3260,7 @@ class Database {
|
|
|
3228
3260
|
await this._uSQLite.beginTransaction(this._mDB, this._isDBOpen);
|
|
3229
3261
|
}
|
|
3230
3262
|
catch (err) {
|
|
3231
|
-
return Promise.reject(
|
|
3263
|
+
return Promise.reject(`ExecSet: ${err}`);
|
|
3232
3264
|
}
|
|
3233
3265
|
try {
|
|
3234
3266
|
retRes.lastId = await this._uSQLite.executeSet(this._mDB, set);
|
|
@@ -3244,7 +3276,7 @@ class Database {
|
|
|
3244
3276
|
await this._uSQLite.rollbackTransaction(this._mDB, this._isDBOpen);
|
|
3245
3277
|
}
|
|
3246
3278
|
catch (err) {
|
|
3247
|
-
return Promise.reject(
|
|
3279
|
+
return Promise.reject(`ExecSet: ${msg}: ` + `${err}`);
|
|
3248
3280
|
}
|
|
3249
3281
|
}
|
|
3250
3282
|
}
|
|
@@ -3267,11 +3299,11 @@ class Database {
|
|
|
3267
3299
|
return Promise.resolve(changes);
|
|
3268
3300
|
}
|
|
3269
3301
|
catch (err) {
|
|
3270
|
-
return Promise.reject(
|
|
3302
|
+
return Promise.reject(`ImportJson: ${err}`);
|
|
3271
3303
|
}
|
|
3272
3304
|
}
|
|
3273
3305
|
else {
|
|
3274
|
-
return Promise.reject(
|
|
3306
|
+
return Promise.reject(`ImportJson: database is closed`);
|
|
3275
3307
|
}
|
|
3276
3308
|
}
|
|
3277
3309
|
async exportJson(mode) {
|
|
@@ -3288,15 +3320,15 @@ class Database {
|
|
|
3288
3320
|
return Promise.resolve(retJson);
|
|
3289
3321
|
}
|
|
3290
3322
|
else {
|
|
3291
|
-
return Promise.reject(
|
|
3323
|
+
return Promise.reject(`ExportJson: retJson not valid`);
|
|
3292
3324
|
}
|
|
3293
3325
|
}
|
|
3294
3326
|
catch (err) {
|
|
3295
|
-
return Promise.reject(
|
|
3327
|
+
return Promise.reject(`ExportJson: ${err}`);
|
|
3296
3328
|
}
|
|
3297
3329
|
}
|
|
3298
3330
|
else {
|
|
3299
|
-
return Promise.reject(
|
|
3331
|
+
return Promise.reject(`ExportJson: database is closed`);
|
|
3300
3332
|
}
|
|
3301
3333
|
}
|
|
3302
3334
|
}
|
|
@@ -3392,7 +3424,7 @@ class CapacitorSQLite {
|
|
|
3392
3424
|
'close ' +
|
|
3393
3425
|
dbName +
|
|
3394
3426
|
' failed ' +
|
|
3395
|
-
err
|
|
3427
|
+
err);
|
|
3396
3428
|
}
|
|
3397
3429
|
}
|
|
3398
3430
|
// remove the connection from dictionary
|
|
@@ -3663,10 +3695,10 @@ class CapacitorSQLite {
|
|
|
3663
3695
|
const mDB = this._dbDict[dbName];
|
|
3664
3696
|
try {
|
|
3665
3697
|
const res = await mDB.isTableExists(tableName);
|
|
3666
|
-
return Promise.resolve({ result: res
|
|
3698
|
+
return Promise.resolve({ result: res });
|
|
3667
3699
|
}
|
|
3668
3700
|
catch (err) {
|
|
3669
|
-
return Promise.reject(`isTableExists: ${err
|
|
3701
|
+
return Promise.reject(`isTableExists: ${err}`);
|
|
3670
3702
|
}
|
|
3671
3703
|
}
|
|
3672
3704
|
async deleteDatabase(options) {
|
|
@@ -3685,7 +3717,7 @@ class CapacitorSQLite {
|
|
|
3685
3717
|
return Promise.resolve();
|
|
3686
3718
|
}
|
|
3687
3719
|
catch (err) {
|
|
3688
|
-
return Promise.reject(`Delete: ${err
|
|
3720
|
+
return Promise.reject(`Delete: ${err}`);
|
|
3689
3721
|
}
|
|
3690
3722
|
}
|
|
3691
3723
|
async isJsonValid(options) {
|
|
@@ -3733,7 +3765,7 @@ class CapacitorSQLite {
|
|
|
3733
3765
|
return Promise.resolve({ changes: { changes: changes } });
|
|
3734
3766
|
}
|
|
3735
3767
|
catch (err) {
|
|
3736
|
-
return Promise.reject(`ImportFromJson: ${err
|
|
3768
|
+
return Promise.reject(`ImportFromJson: ${err}`);
|
|
3737
3769
|
}
|
|
3738
3770
|
}
|
|
3739
3771
|
async exportToJson(options) {
|
|
@@ -3762,7 +3794,7 @@ class CapacitorSQLite {
|
|
|
3762
3794
|
}
|
|
3763
3795
|
}
|
|
3764
3796
|
catch (err) {
|
|
3765
|
-
return Promise.reject(`exportToJson: ${err
|
|
3797
|
+
return Promise.reject(`exportToJson: ${err}`);
|
|
3766
3798
|
}
|
|
3767
3799
|
}
|
|
3768
3800
|
async createSyncTable(options) {
|
|
@@ -3781,7 +3813,7 @@ class CapacitorSQLite {
|
|
|
3781
3813
|
return Promise.resolve({ changes: { changes: ret } });
|
|
3782
3814
|
}
|
|
3783
3815
|
catch (err) {
|
|
3784
|
-
return Promise.reject(`createSyncTable: ${err
|
|
3816
|
+
return Promise.reject(`createSyncTable: ${err}`);
|
|
3785
3817
|
}
|
|
3786
3818
|
}
|
|
3787
3819
|
async setSyncDate(options) {
|
|
@@ -3804,7 +3836,7 @@ class CapacitorSQLite {
|
|
|
3804
3836
|
return Promise.resolve();
|
|
3805
3837
|
}
|
|
3806
3838
|
catch (err) {
|
|
3807
|
-
return Promise.reject(`SetSyncDate: ${err
|
|
3839
|
+
return Promise.reject(`SetSyncDate: ${err}`);
|
|
3808
3840
|
}
|
|
3809
3841
|
}
|
|
3810
3842
|
async getSyncDate(options) {
|
|
@@ -3823,7 +3855,7 @@ class CapacitorSQLite {
|
|
|
3823
3855
|
return Promise.resolve(ret);
|
|
3824
3856
|
}
|
|
3825
3857
|
catch (err) {
|
|
3826
|
-
return Promise.reject(`GetSyncDate: ${err
|
|
3858
|
+
return Promise.reject(`GetSyncDate: ${err}`);
|
|
3827
3859
|
}
|
|
3828
3860
|
}
|
|
3829
3861
|
async addUpgradeStatement(options) {
|
|
@@ -3850,18 +3882,24 @@ class CapacitorSQLite {
|
|
|
3850
3882
|
this._versionUpgrades[dbName] = upgVDict;
|
|
3851
3883
|
return Promise.resolve();
|
|
3852
3884
|
}
|
|
3853
|
-
async copyFromAssets() {
|
|
3885
|
+
async copyFromAssets(options) {
|
|
3886
|
+
const keys = Object.keys(options);
|
|
3887
|
+
const mOverwrite = keys.includes('overwrite') ? options.overwrite : true;
|
|
3854
3888
|
// check if the assets/database folder exists
|
|
3855
3889
|
const assetsDbPath = this._uFile.getAssetsDatabasesPath();
|
|
3856
3890
|
const res = this._uFile.isPathExists(assetsDbPath);
|
|
3857
3891
|
if (res) {
|
|
3858
3892
|
// get the database files
|
|
3859
3893
|
const dbList = await this._uFile.getFileList(assetsDbPath);
|
|
3894
|
+
// loop through the database files
|
|
3860
3895
|
dbList.forEach(async (db) => {
|
|
3861
|
-
|
|
3862
|
-
|
|
3863
|
-
|
|
3864
|
-
|
|
3896
|
+
if (db.substring(db.length - 3) === '.db') {
|
|
3897
|
+
// for each copy the file to the Application database folder
|
|
3898
|
+
await this._uFile.copyFromAssetToDatabase(db, mOverwrite);
|
|
3899
|
+
}
|
|
3900
|
+
if (db.substring(db.length - 4) === '.zip') {
|
|
3901
|
+
await this._uFile.unzipDatabase(db, mOverwrite);
|
|
3902
|
+
}
|
|
3865
3903
|
});
|
|
3866
3904
|
return Promise.resolve();
|
|
3867
3905
|
}
|
|
@@ -3939,7 +3977,7 @@ class CapacitorSQLite {
|
|
|
3939
3977
|
}
|
|
3940
3978
|
}
|
|
3941
3979
|
catch (err) {
|
|
3942
|
-
return Promise.reject(`CheckConnectionsConsistency: ${err
|
|
3980
|
+
return Promise.reject(`CheckConnectionsConsistency: ${err}`);
|
|
3943
3981
|
}
|
|
3944
3982
|
}
|
|
3945
3983
|
async resetDbDict(keys) {
|
|
@@ -3951,7 +3989,7 @@ class CapacitorSQLite {
|
|
|
3951
3989
|
}
|
|
3952
3990
|
}
|
|
3953
3991
|
catch (err) {
|
|
3954
|
-
return Promise.reject(`ResetDbDict: ${err
|
|
3992
|
+
return Promise.reject(`ResetDbDict: ${err}`);
|
|
3955
3993
|
}
|
|
3956
3994
|
}
|
|
3957
3995
|
async symmetricDifference(setA, setB) {
|