@capacitor-community/sqlite 5.6.3 → 5.7.0
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/README.md +6 -2
- package/android/src/main/java/com/getcapacitor/community/database/sqlite/SQLite/Database.java +3 -2
- package/dist/esm/definitions.d.ts +3 -5
- package/dist/esm/definitions.js +15 -35
- package/dist/esm/definitions.js.map +1 -1
- package/dist/esm/web.js +22 -21
- package/dist/esm/web.js.map +1 -1
- package/dist/plugin.cjs.js +37 -56
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +37 -56
- package/dist/plugin.js.map +1 -1
- package/electron/dist/plugin.js +7 -7
- package/electron/dist/plugin.js.map +1 -1
- package/ios/Plugin/Utils/UtilsSQLCipher.swift +14 -4
- package/ios/Plugin/Utils/UtilsSQLStatement.swift +8 -2
- package/package.json +6 -6
- package/src/definitions.ts +19 -42
- package/src/web.ts +40 -40
|
@@ -455,6 +455,11 @@ class UtilsSQLCipher {
|
|
|
455
455
|
var names: String = ""
|
|
456
456
|
var result: [[String: Any]] = []
|
|
457
457
|
var retMode: String
|
|
458
|
+
let stmtType = sqlStmt
|
|
459
|
+
.trimmingCharacters(in: .whitespacesAndNewlines)
|
|
460
|
+
.components(separatedBy: " ")
|
|
461
|
+
.first?.capitalized ?? ""
|
|
462
|
+
|
|
458
463
|
if #available(iOS 15, *) {
|
|
459
464
|
retMode = returnMode
|
|
460
465
|
} else {
|
|
@@ -471,7 +476,7 @@ class UtilsSQLCipher {
|
|
|
471
476
|
names = stmtNames["names"] ?? ""
|
|
472
477
|
}
|
|
473
478
|
// Check for DELETE statement
|
|
474
|
-
if !fromJson &&
|
|
479
|
+
if !fromJson && stmtType == "DELETE" {
|
|
475
480
|
do {
|
|
476
481
|
sqlStmt = try deleteSQL(mDB: mDB, sql: sqlStmt,
|
|
477
482
|
values: values)
|
|
@@ -564,7 +569,12 @@ class UtilsSQLCipher {
|
|
|
564
569
|
throws -> [[String: Any]] {
|
|
565
570
|
var result: [[String: Any]] = []
|
|
566
571
|
let initLastId = Int64(sqlite3_last_insert_rowid(mDB.mDb))
|
|
567
|
-
|
|
572
|
+
let stmtType = sqlStmt
|
|
573
|
+
.trimmingCharacters(in: .whitespacesAndNewlines)
|
|
574
|
+
.components(separatedBy: " ")
|
|
575
|
+
.first?.capitalized ?? ""
|
|
576
|
+
|
|
577
|
+
if stmtType == "DELETE" &&
|
|
568
578
|
names.count > 0 {
|
|
569
579
|
do {
|
|
570
580
|
result = try UtilsDelete
|
|
@@ -587,7 +597,7 @@ class UtilsSQLCipher {
|
|
|
587
597
|
.returningWorkAround(message: message)
|
|
588
598
|
|
|
589
599
|
}
|
|
590
|
-
if
|
|
600
|
+
if stmtType == "INSERT" {
|
|
591
601
|
let lastId = Int64(sqlite3_last_insert_rowid(mDB.mDb))
|
|
592
602
|
let tableName = UtilsSQLStatement
|
|
593
603
|
.extractTableName(from: sqlStmt)
|
|
@@ -609,7 +619,7 @@ class UtilsSQLCipher {
|
|
|
609
619
|
|
|
610
620
|
}
|
|
611
621
|
|
|
612
|
-
} else if
|
|
622
|
+
} else if stmtType == "UPDATE" {
|
|
613
623
|
do {
|
|
614
624
|
result = try UtilsDelete
|
|
615
625
|
.getUpdDelReturnedValues(mDB: mDB,
|
|
@@ -326,6 +326,10 @@ class UtilsSQLStatement {
|
|
|
326
326
|
// MARK: - isReturning
|
|
327
327
|
|
|
328
328
|
class func isReturning(sqlStmt: String) -> (Bool, String, String) {
|
|
329
|
+
let stmtType = sqlStmt
|
|
330
|
+
.trimmingCharacters(in: .whitespacesAndNewlines)
|
|
331
|
+
.components(separatedBy: " ")
|
|
332
|
+
.first?.capitalized ?? ""
|
|
329
333
|
var stmt = sqlStmt.trimmingCharacters(in: .whitespacesAndNewlines)
|
|
330
334
|
if stmt.hasSuffix(";") {
|
|
331
335
|
// Remove the suffix
|
|
@@ -333,11 +337,13 @@ class UtilsSQLStatement {
|
|
|
333
337
|
.trimmingCharacters(in: .whitespacesAndNewlines)
|
|
334
338
|
}
|
|
335
339
|
|
|
336
|
-
switch
|
|
340
|
+
switch stmtType {
|
|
337
341
|
|
|
338
342
|
case "INSERT":
|
|
339
343
|
if let valuesIndex = stmt.range(of: "VALUES", options: .caseInsensitive)?.lowerBound,
|
|
340
|
-
let closingParenthesisIndex = stmt
|
|
344
|
+
let closingParenthesisIndex = stmt
|
|
345
|
+
.range(of: ")", options: .backwards, range: valuesIndex..<stmt.endIndex)?
|
|
346
|
+
.upperBound {
|
|
341
347
|
guard closingParenthesisIndex < stmt.endIndex else {
|
|
342
348
|
stmt += ";"
|
|
343
349
|
return (false, stmt, "")
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@capacitor-community/sqlite",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.7.0",
|
|
4
4
|
"description": "Community plugin for native & electron SQLite databases",
|
|
5
5
|
"main": "dist/plugin.cjs.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -59,11 +59,11 @@
|
|
|
59
59
|
"prepublishOnly": "npm run build && npm run build-electron && npm run docgen"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
|
-
"@capacitor/android": "^5.
|
|
63
|
-
"@capacitor/cli": "^5.
|
|
64
|
-
"@capacitor/core": "^5.
|
|
62
|
+
"@capacitor/android": "^5.7.0",
|
|
63
|
+
"@capacitor/cli": "^5.7.0",
|
|
64
|
+
"@capacitor/core": "^5.7.0",
|
|
65
65
|
"@capacitor/docgen": "^0.0.17",
|
|
66
|
-
"@capacitor/ios": "^5.
|
|
66
|
+
"@capacitor/ios": "^5.7.0",
|
|
67
67
|
"@ionic/eslint-config": "^0.3.0",
|
|
68
68
|
"@ionic/prettier-config": "^1.0.1",
|
|
69
69
|
"@ionic/swiftlint-config": "^1.1.2",
|
|
@@ -97,6 +97,6 @@
|
|
|
97
97
|
}
|
|
98
98
|
},
|
|
99
99
|
"dependencies": {
|
|
100
|
-
"jeep-sqlite": "^2.6.
|
|
100
|
+
"jeep-sqlite": "^2.6.2"
|
|
101
101
|
}
|
|
102
102
|
}
|
package/src/definitions.ts
CHANGED
|
@@ -1137,16 +1137,13 @@ export interface ISQLiteConnection {
|
|
|
1137
1137
|
/**
|
|
1138
1138
|
* Add the upgrade Statement for database version upgrading
|
|
1139
1139
|
* @param database
|
|
1140
|
-
* @param
|
|
1141
|
-
* @param statement
|
|
1142
|
-
* @param set
|
|
1140
|
+
* @param upgrade @since 5.6.4
|
|
1143
1141
|
* @returns Promise<void>
|
|
1144
1142
|
* @since 2.9.0 refactor
|
|
1145
1143
|
*/
|
|
1146
1144
|
addUpgradeStatement(
|
|
1147
1145
|
database: string,
|
|
1148
|
-
|
|
1149
|
-
statements: string[],
|
|
1146
|
+
upgrade: capSQLiteVersionUpgrade[]
|
|
1150
1147
|
): Promise<void>;
|
|
1151
1148
|
/**
|
|
1152
1149
|
* Create a connection to a database
|
|
@@ -1460,18 +1457,13 @@ export class SQLiteConnection implements ISQLiteConnection {
|
|
|
1460
1457
|
}
|
|
1461
1458
|
async addUpgradeStatement(
|
|
1462
1459
|
database: string,
|
|
1463
|
-
|
|
1464
|
-
statements: string[],
|
|
1460
|
+
upgrade: capSQLiteVersionUpgrade[]
|
|
1465
1461
|
): Promise<void> {
|
|
1466
|
-
const upgrade: capSQLiteVersionUpgrade = {
|
|
1467
|
-
toVersion,
|
|
1468
|
-
statements,
|
|
1469
|
-
};
|
|
1470
1462
|
try {
|
|
1471
1463
|
if (database.endsWith('.db')) database = database.slice(0, -3);
|
|
1472
1464
|
await this.sqlite.addUpgradeStatement({
|
|
1473
1465
|
database,
|
|
1474
|
-
upgrade
|
|
1466
|
+
upgrade,
|
|
1475
1467
|
});
|
|
1476
1468
|
return Promise.resolve();
|
|
1477
1469
|
} catch (err) {
|
|
@@ -2409,20 +2401,16 @@ export class SQLiteDBConnection implements ISQLiteDBConnection {
|
|
|
2409
2401
|
let changes = 0;
|
|
2410
2402
|
let isActive = false;
|
|
2411
2403
|
if (!this.readonly) {
|
|
2412
|
-
|
|
2413
|
-
|
|
2414
|
-
|
|
2415
|
-
|
|
2416
|
-
|
|
2417
|
-
|
|
2418
|
-
|
|
2419
|
-
|
|
2420
|
-
|
|
2421
|
-
|
|
2422
|
-
);
|
|
2423
|
-
}
|
|
2424
|
-
} catch (err) {
|
|
2425
|
-
return Promise.reject(err);
|
|
2404
|
+
await this.sqlite.beginTransaction({
|
|
2405
|
+
database: this.dbName,
|
|
2406
|
+
});
|
|
2407
|
+
isActive = await this.sqlite.isTransactionActive({
|
|
2408
|
+
database: this.dbName,
|
|
2409
|
+
});
|
|
2410
|
+
if (!isActive) {
|
|
2411
|
+
return Promise.reject(
|
|
2412
|
+
'After Begin Transaction, no transaction active',
|
|
2413
|
+
);
|
|
2426
2414
|
}
|
|
2427
2415
|
try {
|
|
2428
2416
|
for (const task of txn) {
|
|
@@ -2453,36 +2441,25 @@ export class SQLiteDBConnection implements ISQLiteDBConnection {
|
|
|
2453
2441
|
transaction: false,
|
|
2454
2442
|
readonly: false,
|
|
2455
2443
|
});
|
|
2456
|
-
isActive = await this.sqlite.isTransactionActive({
|
|
2457
|
-
database: this.dbName,
|
|
2458
|
-
});
|
|
2459
2444
|
if (ret.changes.changes < 0) {
|
|
2460
2445
|
throw new Error('Error in transaction method execute ');
|
|
2461
2446
|
}
|
|
2462
2447
|
changes += ret.changes.changes;
|
|
2463
2448
|
}
|
|
2464
2449
|
}
|
|
2465
|
-
|
|
2450
|
+
// commit
|
|
2451
|
+
const retC = await this.sqlite.commitTransaction({
|
|
2466
2452
|
database: this.dbName,
|
|
2467
2453
|
});
|
|
2468
|
-
|
|
2469
|
-
const retC = await this.sqlite.commitTransaction({
|
|
2470
|
-
database: this.dbName,
|
|
2471
|
-
});
|
|
2472
|
-
changes += retC.changes.changes;
|
|
2473
|
-
}
|
|
2454
|
+
changes += retC.changes.changes;
|
|
2474
2455
|
const retChanges = { changes: { changes: changes } };
|
|
2475
2456
|
return Promise.resolve(retChanges);
|
|
2476
2457
|
} catch (err: any) {
|
|
2458
|
+
// rollback
|
|
2477
2459
|
const msg = err.message ? err.message : err;
|
|
2478
|
-
|
|
2460
|
+
await this.sqlite.rollbackTransaction({
|
|
2479
2461
|
database: this.dbName,
|
|
2480
2462
|
});
|
|
2481
|
-
if (isActive) {
|
|
2482
|
-
await this.sqlite.rollbackTransaction({
|
|
2483
|
-
database: this.dbName,
|
|
2484
|
-
});
|
|
2485
|
-
}
|
|
2486
2463
|
return Promise.reject(msg);
|
|
2487
2464
|
}
|
|
2488
2465
|
} else {
|
package/src/web.ts
CHANGED
|
@@ -45,48 +45,48 @@ export class CapacitorSQLiteWeb
|
|
|
45
45
|
private isWebStoreOpen = false;
|
|
46
46
|
|
|
47
47
|
async initWebStore(): Promise<void> {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
this.jeepSqliteElement = document.querySelector('jeep-sqlite');
|
|
51
|
-
|
|
52
|
-
this.ensureJeepSqliteIsAvailable();
|
|
53
|
-
|
|
54
|
-
this.jeepSqliteElement.addEventListener(
|
|
55
|
-
'jeepSqliteImportProgress',
|
|
56
|
-
(event: CustomEvent) => {
|
|
57
|
-
this.notifyListeners('sqliteImportProgressEvent', event.detail);
|
|
58
|
-
},
|
|
59
|
-
);
|
|
60
|
-
this.jeepSqliteElement.addEventListener(
|
|
61
|
-
'jeepSqliteExportProgress',
|
|
62
|
-
(event: CustomEvent) => {
|
|
63
|
-
this.notifyListeners('sqliteExportProgressEvent', event.detail);
|
|
64
|
-
},
|
|
65
|
-
);
|
|
66
|
-
this.jeepSqliteElement.addEventListener(
|
|
67
|
-
'jeepSqliteHTTPRequestEnded',
|
|
68
|
-
(event: CustomEvent) => {
|
|
69
|
-
this.notifyListeners('sqliteHTTPRequestEndedEvent', event.detail);
|
|
70
|
-
},
|
|
71
|
-
);
|
|
72
|
-
this.jeepSqliteElement.addEventListener(
|
|
73
|
-
'jeepSqlitePickDatabaseEnded',
|
|
74
|
-
(event: CustomEvent) => {
|
|
75
|
-
this.notifyListeners('sqlitePickDatabaseEndedEvent', event.detail);
|
|
76
|
-
},
|
|
77
|
-
);
|
|
78
|
-
this.jeepSqliteElement.addEventListener(
|
|
79
|
-
'jeepSqliteSaveDatabaseToDisk',
|
|
80
|
-
(event: CustomEvent) => {
|
|
81
|
-
this.notifyListeners('sqliteSaveDatabaseToDiskEvent', event.detail);
|
|
82
|
-
},
|
|
83
|
-
);
|
|
48
|
+
customElements.whenDefined('jeep-sqlite').then(async () => {
|
|
84
49
|
|
|
85
|
-
|
|
86
|
-
this.
|
|
87
|
-
}
|
|
50
|
+
this.jeepSqliteElement = document.querySelector('jeep-sqlite');
|
|
51
|
+
this.ensureJeepSqliteIsAvailable();
|
|
88
52
|
|
|
89
|
-
|
|
53
|
+
this.jeepSqliteElement.addEventListener(
|
|
54
|
+
'jeepSqliteImportProgress',
|
|
55
|
+
(event: CustomEvent) => {
|
|
56
|
+
this.notifyListeners('sqliteImportProgressEvent', event.detail);
|
|
57
|
+
},
|
|
58
|
+
);
|
|
59
|
+
this.jeepSqliteElement.addEventListener(
|
|
60
|
+
'jeepSqliteExportProgress',
|
|
61
|
+
(event: CustomEvent) => {
|
|
62
|
+
this.notifyListeners('sqliteExportProgressEvent', event.detail);
|
|
63
|
+
},
|
|
64
|
+
);
|
|
65
|
+
this.jeepSqliteElement.addEventListener(
|
|
66
|
+
'jeepSqliteHTTPRequestEnded',
|
|
67
|
+
(event: CustomEvent) => {
|
|
68
|
+
this.notifyListeners('sqliteHTTPRequestEndedEvent', event.detail);
|
|
69
|
+
},
|
|
70
|
+
);
|
|
71
|
+
this.jeepSqliteElement.addEventListener(
|
|
72
|
+
'jeepSqlitePickDatabaseEnded',
|
|
73
|
+
(event: CustomEvent) => {
|
|
74
|
+
this.notifyListeners('sqlitePickDatabaseEndedEvent', event.detail);
|
|
75
|
+
},
|
|
76
|
+
);
|
|
77
|
+
this.jeepSqliteElement.addEventListener(
|
|
78
|
+
'jeepSqliteSaveDatabaseToDisk',
|
|
79
|
+
(event: CustomEvent) => {
|
|
80
|
+
this.notifyListeners('sqliteSaveDatabaseToDiskEvent', event.detail);
|
|
81
|
+
},
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
if (!this.isWebStoreOpen) {
|
|
85
|
+
this.isWebStoreOpen = await this.jeepSqliteElement.isStoreOpen();
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return;
|
|
89
|
+
});
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
async saveToStore(options: capSQLiteOptions): Promise<void> {
|