@capacitor-community/sqlite 5.5.1 → 5.6.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 +2 -0
- package/android/src/main/java/com/getcapacitor/community/database/sqlite/CapacitorSQLite.java +1 -1
- package/android/src/main/java/com/getcapacitor/community/database/sqlite/SQLite/Database.java +217 -218
- package/android/src/main/java/com/getcapacitor/community/database/sqlite/SQLite/ImportExportJson/ExportToJson.java +1 -1
- package/android/src/main/java/com/getcapacitor/community/database/sqlite/SQLite/ImportExportJson/ImportFromJson.java +103 -102
- package/android/src/main/java/com/getcapacitor/community/database/sqlite/SQLite/UtilsFile.java +1 -1
- package/android/src/main/java/com/getcapacitor/community/database/sqlite/SQLite/UtilsMigrate.java +1 -1
- package/android/src/main/java/com/getcapacitor/community/database/sqlite/SQLite/UtilsSQLStatement.java +1 -1
- package/dist/esm/definitions.js.map +1 -1
- package/dist/esm/web-typeorm-utils/database.d.ts +21 -0
- package/dist/esm/web-typeorm-utils/database.js +91 -0
- package/dist/esm/web-typeorm-utils/database.js.map +1 -0
- package/dist/esm/web-typeorm-utils/utilsSQLite.d.ts +28 -0
- package/dist/esm/web-typeorm-utils/utilsSQLite.js +233 -0
- package/dist/esm/web-typeorm-utils/utilsSQLite.js.map +1 -0
- package/dist/esm/web.d.ts +4 -2
- package/dist/esm/web.js +210 -56
- package/dist/esm/web.js.map +1 -1
- package/dist/plugin.cjs.js +519 -49
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +519 -49
- package/dist/plugin.js.map +1 -1
- package/electron/dist/plugin.js +14 -6
- package/electron/dist/plugin.js.map +1 -1
- package/ios/Plugin/CapacitorSQLite.swift +3 -4
- package/ios/Plugin/Database.swift +3 -1
- package/ios/Plugin/Utils/UtilsDelete.swift +1 -1
- package/ios/Plugin/Utils/UtilsSQLCipher.swift +1 -2
- package/ios/Plugin/Utils/UtilsSQLStatement.swift +35 -37
- package/package.json +6 -6
- package/src/definitions.ts +0 -1
- package/src/web-typeorm-utils/database.ts +111 -0
- package/src/web-typeorm-utils/utilsSQLite.ts +249 -0
- package/src/web.ts +212 -62
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/************************************************
|
|
2
|
+
* Only to be used to run TypeOrm Cli
|
|
3
|
+
* migration:generate
|
|
4
|
+
* A in-memory database is used
|
|
5
|
+
************************************************
|
|
6
|
+
*/
|
|
7
|
+
export class UtilsSQLite {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.isExists = false;
|
|
10
|
+
this.retExists = { isExists: false, pathWasm: '' };
|
|
11
|
+
this.initSqlJs = require('sql.js');
|
|
12
|
+
this.OS = require('os');
|
|
13
|
+
this.FS = require('fs');
|
|
14
|
+
this.Path = require('path');
|
|
15
|
+
}
|
|
16
|
+
getTypeOrmDBFolder() {
|
|
17
|
+
// Find the index of the "node_modules" string in the path
|
|
18
|
+
const nodeModulesIndex = __dirname.indexOf('node_modules');
|
|
19
|
+
// Extract the part of the path before "node_modules"
|
|
20
|
+
const outputPath = __dirname.slice(0, nodeModulesIndex);
|
|
21
|
+
// Extract the App name
|
|
22
|
+
const appName = this.Path.basename(outputPath);
|
|
23
|
+
// Get the Documents path
|
|
24
|
+
const documentsDirectory = this.Path.join(this.OS.homedir(), 'Documents');
|
|
25
|
+
// Add "CapacitorSQLite" and appName
|
|
26
|
+
const outputFolderPath = this.Path.join(documentsDirectory, 'CapacitorSQLite', appName);
|
|
27
|
+
// Ensure the output folder exists
|
|
28
|
+
this.FS.mkdirSync(outputFolderPath, { recursive: true });
|
|
29
|
+
return outputFolderPath;
|
|
30
|
+
}
|
|
31
|
+
getTypeOrmDBPath(outputFolderPath, dbName) {
|
|
32
|
+
return this.Path.resolve(outputFolderPath, dbName);
|
|
33
|
+
}
|
|
34
|
+
async checkFileExistence(wasmPath) {
|
|
35
|
+
// check if a public folder exists
|
|
36
|
+
const folder = (await this.checkFolderExistence('public'))
|
|
37
|
+
? 'public'
|
|
38
|
+
: 'src';
|
|
39
|
+
const pathWasm = this.Path.join(folder, wasmPath);
|
|
40
|
+
const retObj = {};
|
|
41
|
+
retObj.pathWasm = pathWasm;
|
|
42
|
+
try {
|
|
43
|
+
if (this.FS.existsSync(pathWasm)) {
|
|
44
|
+
retObj.isExists = true;
|
|
45
|
+
return Promise.resolve(retObj);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
retObj.isExists = false;
|
|
49
|
+
return Promise.resolve(retObj);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
retObj.isExists = false;
|
|
54
|
+
return Promise.resolve(retObj);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
async checkFolderExistence(folder) {
|
|
58
|
+
try {
|
|
59
|
+
if (this.FS.existsSync(folder)) {
|
|
60
|
+
return Promise.resolve(true);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
return Promise.resolve(false);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
return Promise.resolve(false);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
async openOrCreateDatabase(wasmPath, databasePath) {
|
|
71
|
+
let mDB;
|
|
72
|
+
const msg = 'OpenOrCreateDatabase';
|
|
73
|
+
try {
|
|
74
|
+
this.retExists = await this.checkFileExistence(wasmPath);
|
|
75
|
+
this.isExists = this.retExists.isExists;
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
this.isExists = false;
|
|
79
|
+
}
|
|
80
|
+
if (!this.isExists) {
|
|
81
|
+
return Promise.reject(msg + ' No sql-wasm.wasm found in ' + wasmPath);
|
|
82
|
+
}
|
|
83
|
+
try {
|
|
84
|
+
const config = {
|
|
85
|
+
locateFile: (file) => `${this.retExists.pathWasm}/${file}`,
|
|
86
|
+
};
|
|
87
|
+
const SQL = await this.initSqlJs(config);
|
|
88
|
+
// Check if the database exists
|
|
89
|
+
if (!this.FS.existsSync(databasePath)) {
|
|
90
|
+
mDB = new SQL.Database();
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
// Read the database file from the local disk
|
|
94
|
+
const fileBuffer = this.FS.readFileSync(databasePath);
|
|
95
|
+
// Create a new database instance
|
|
96
|
+
mDB = new SQL.Database(fileBuffer);
|
|
97
|
+
}
|
|
98
|
+
return Promise.resolve(mDB);
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
return Promise.reject(msg + ' open database failed');
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
async saveDatabase(mDb, outputPath) {
|
|
105
|
+
try {
|
|
106
|
+
// Export the modified database to a Uint8Array
|
|
107
|
+
const data = mDb.export();
|
|
108
|
+
// Write the Uint8Array to a file on the local disk
|
|
109
|
+
this.FS.writeFileSync(outputPath, Buffer.from(data));
|
|
110
|
+
return Promise.resolve();
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
return Promise.reject(error);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
closeDB(mDB) {
|
|
117
|
+
const msg = 'closeDB';
|
|
118
|
+
try {
|
|
119
|
+
mDB.close();
|
|
120
|
+
return Promise.resolve();
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
const errmsg = err.message ? err.message : err;
|
|
124
|
+
return Promise.reject(`${msg} ${errmsg}`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
async dbChanges(mDB) {
|
|
128
|
+
const SELECT_CHANGE = 'SELECT total_changes()';
|
|
129
|
+
let changes = 0;
|
|
130
|
+
try {
|
|
131
|
+
const res = mDB.exec(SELECT_CHANGE);
|
|
132
|
+
// process the row here
|
|
133
|
+
changes = res[0].values[0][0];
|
|
134
|
+
return Promise.resolve(changes);
|
|
135
|
+
}
|
|
136
|
+
catch (err) {
|
|
137
|
+
const errmsg = err.message ? err.message : err;
|
|
138
|
+
return Promise.reject(`DbChanges failed: ${errmsg}`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
async getLastId(mDB) {
|
|
142
|
+
const SELECT_LAST_ID = 'SELECT last_insert_rowid()';
|
|
143
|
+
let lastId = -1;
|
|
144
|
+
try {
|
|
145
|
+
const res = mDB.exec(SELECT_LAST_ID);
|
|
146
|
+
// process the row here
|
|
147
|
+
lastId = res[0].values[0][0];
|
|
148
|
+
return Promise.resolve(lastId);
|
|
149
|
+
}
|
|
150
|
+
catch (err) {
|
|
151
|
+
const errmsg = err.message ? err.message : err;
|
|
152
|
+
return Promise.reject(new Error(`GetLastId failed: ${errmsg}`));
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
async execute(mDB, sql) {
|
|
156
|
+
try {
|
|
157
|
+
mDB.exec(sql);
|
|
158
|
+
const changes = await this.dbChanges(mDB);
|
|
159
|
+
return Promise.resolve(changes);
|
|
160
|
+
}
|
|
161
|
+
catch (err) {
|
|
162
|
+
const errmsg = err.message ? err.message : err;
|
|
163
|
+
return Promise.reject(new Error(`Execute failed: ${errmsg}`));
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
async run(mDB, statement, values, returnMode) {
|
|
167
|
+
let res;
|
|
168
|
+
let retValues = [];
|
|
169
|
+
const retObj = {};
|
|
170
|
+
try {
|
|
171
|
+
if (values.length > 0) {
|
|
172
|
+
res = mDB.exec(statement, values);
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
res = mDB.exec(statement);
|
|
176
|
+
}
|
|
177
|
+
if (returnMode === 'all' || returnMode === 'one') {
|
|
178
|
+
if (res && res.length > 0) {
|
|
179
|
+
retValues = this.getReturnedValues(res[0], returnMode);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
const lastId = await this.getLastId(mDB);
|
|
183
|
+
retObj['lastId'] = lastId;
|
|
184
|
+
if (retValues != null && retValues.length > 0)
|
|
185
|
+
retObj['values'] = retValues;
|
|
186
|
+
return Promise.resolve(retObj);
|
|
187
|
+
}
|
|
188
|
+
catch (err) {
|
|
189
|
+
const errmsg = err.message ? err.message : err;
|
|
190
|
+
return Promise.reject(new Error(`Run failed: ${errmsg}`));
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
getReturnedValues(result, returnMode) {
|
|
194
|
+
const retValues = [];
|
|
195
|
+
for (const values of result.values) {
|
|
196
|
+
const row = {};
|
|
197
|
+
for (let j = 0; j < result.columns.length; j++) {
|
|
198
|
+
row[result.columns[j]] = values[j];
|
|
199
|
+
}
|
|
200
|
+
retValues.push(row);
|
|
201
|
+
if (returnMode === 'one') {
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return retValues;
|
|
206
|
+
}
|
|
207
|
+
async queryAll(mDB, sql, values) {
|
|
208
|
+
try {
|
|
209
|
+
let retArr = [];
|
|
210
|
+
if (values != null && values.length > 0) {
|
|
211
|
+
retArr = mDB.exec(sql, values);
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
retArr = mDB.exec(sql);
|
|
215
|
+
}
|
|
216
|
+
if (retArr.length == 0)
|
|
217
|
+
return Promise.resolve([]);
|
|
218
|
+
const result = retArr[0].values.map((entry) => {
|
|
219
|
+
const obj = {};
|
|
220
|
+
retArr[0].columns.forEach((column, index) => {
|
|
221
|
+
obj[`${column}`] = entry[index];
|
|
222
|
+
});
|
|
223
|
+
return obj;
|
|
224
|
+
});
|
|
225
|
+
return Promise.resolve(result);
|
|
226
|
+
}
|
|
227
|
+
catch (err) {
|
|
228
|
+
const errmsg = err.message ? err.message : err;
|
|
229
|
+
return Promise.reject(new Error(`queryAll: ${errmsg}`));
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=utilsSQLite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utilsSQLite.js","sourceRoot":"","sources":["../../../src/web-typeorm-utils/utilsSQLite.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/web.d.ts
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { WebPlugin } from '@capacitor/core';
|
|
2
|
-
import type { CapacitorSQLitePlugin, capAllConnectionsOptions, capChangeSecretOptions, capEchoOptions, capEchoResult, capNCConnectionOptions, capNCDatabasePathOptions, capNCDatabasePathResult, capNCOptions, capSetSecretOptions, capSQLiteChanges, capSQLiteExecuteOptions, capSQLiteExportOptions, capSQLiteFromAssetsOptions, capSQLiteHTTPOptions, capSQLiteLocalDiskOptions, capSQLiteImportOptions, capSQLiteJson, capSQLiteOptions, capSQLitePathOptions, capSQLiteQueryOptions, capSQLiteResult, capSQLiteRunOptions, capSQLiteSetOptions, capSQLiteSyncDate, capSQLiteSyncDateOptions, capSQLiteTableOptions, capSQLiteUpgradeOptions, capSQLiteUrl, capSQLiteValues, capVersionResult, capSQLiteExtensionPath, capSQLiteExtensionEnable } from './definitions';
|
|
2
|
+
import type { CapacitorSQLitePlugin, capConnectionOptions, capAllConnectionsOptions, capChangeSecretOptions, capEchoOptions, capEchoResult, capNCConnectionOptions, capNCDatabasePathOptions, capNCDatabasePathResult, capNCOptions, capSetSecretOptions, capSQLiteChanges, capSQLiteExecuteOptions, capSQLiteExportOptions, capSQLiteFromAssetsOptions, capSQLiteHTTPOptions, capSQLiteLocalDiskOptions, capSQLiteImportOptions, capSQLiteJson, capSQLiteOptions, capSQLitePathOptions, capSQLiteQueryOptions, capSQLiteResult, capSQLiteRunOptions, capSQLiteSetOptions, capSQLiteSyncDate, capSQLiteSyncDateOptions, capSQLiteTableOptions, capSQLiteUpgradeOptions, capSQLiteUrl, capSQLiteValues, capVersionResult, capSQLiteExtensionPath, capSQLiteExtensionEnable } from './definitions';
|
|
3
3
|
export declare class CapacitorSQLiteWeb extends WebPlugin implements CapacitorSQLitePlugin {
|
|
4
4
|
private jeepSqliteElement;
|
|
5
5
|
private isWebStoreOpen;
|
|
6
|
+
private databases;
|
|
6
7
|
initWebStore(): Promise<void>;
|
|
7
8
|
saveToStore(options: capSQLiteOptions): Promise<void>;
|
|
8
9
|
getFromLocalDiskToStore(options: capSQLiteLocalDiskOptions): Promise<void>;
|
|
9
10
|
saveToLocalDisk(options: capSQLiteOptions): Promise<void>;
|
|
10
11
|
echo(options: capEchoOptions): Promise<capEchoResult>;
|
|
11
|
-
createConnection(options:
|
|
12
|
+
createConnection(options: capConnectionOptions): Promise<void>;
|
|
12
13
|
open(options: capSQLiteOptions): Promise<void>;
|
|
13
14
|
closeConnection(options: capSQLiteOptions): Promise<void>;
|
|
14
15
|
getVersion(options: capSQLiteOptions): Promise<capVersionResult>;
|
|
@@ -47,6 +48,7 @@ export declare class CapacitorSQLiteWeb extends WebPlugin implements CapacitorSQ
|
|
|
47
48
|
*/
|
|
48
49
|
private ensureJeepSqliteIsAvailable;
|
|
49
50
|
private ensureWebstoreIsOpen;
|
|
51
|
+
private getDatabaseConnectionOrThrowError;
|
|
50
52
|
getUrl(): Promise<capSQLiteUrl>;
|
|
51
53
|
getMigratableDbList(options: capSQLitePathOptions): Promise<capSQLiteValues>;
|
|
52
54
|
addSQLiteSuffix(options: capSQLitePathOptions): Promise<void>;
|
package/dist/esm/web.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { WebPlugin } from '@capacitor/core';
|
|
2
|
+
import { Database } from './web-typeorm-utils/database';
|
|
2
3
|
export class CapacitorSQLiteWeb extends WebPlugin {
|
|
3
4
|
constructor() {
|
|
4
5
|
super(...arguments);
|
|
5
6
|
this.jeepSqliteElement = null;
|
|
6
7
|
this.isWebStoreOpen = false;
|
|
8
|
+
this.databases = {};
|
|
7
9
|
}
|
|
8
10
|
async initWebStore() {
|
|
9
11
|
await customElements.whenDefined('jeep-sqlite');
|
|
@@ -68,36 +70,90 @@ export class CapacitorSQLiteWeb extends WebPlugin {
|
|
|
68
70
|
return echoResult;
|
|
69
71
|
}
|
|
70
72
|
async createConnection(options) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
73
|
+
if (typeof window !== 'undefined' && window.document) {
|
|
74
|
+
this.ensureJeepSqliteIsAvailable();
|
|
75
|
+
this.ensureWebstoreIsOpen();
|
|
76
|
+
try {
|
|
77
|
+
await this.jeepSqliteElement.createConnection(options);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
throw new Error(`${err}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
// Only for typeOrm to run migration:generate
|
|
86
|
+
const optionKeys = Object.keys(options);
|
|
87
|
+
let dbName;
|
|
88
|
+
if (!optionKeys.includes('database')) {
|
|
89
|
+
throw new Error('Must provide a database name');
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
dbName = options.database;
|
|
93
|
+
}
|
|
94
|
+
const connName = 'RW_' + dbName;
|
|
95
|
+
const databaseConnection = new Database();
|
|
96
|
+
this.databases[connName] = databaseConnection;
|
|
79
97
|
}
|
|
80
98
|
}
|
|
81
99
|
async open(options) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
100
|
+
if (typeof window !== 'undefined' && window.document) {
|
|
101
|
+
this.ensureJeepSqliteIsAvailable();
|
|
102
|
+
this.ensureWebstoreIsOpen();
|
|
103
|
+
try {
|
|
104
|
+
await this.jeepSqliteElement.open(options);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
catch (err) {
|
|
108
|
+
throw new Error(`${err}`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
// Only for typeOrm to run migration:generate
|
|
113
|
+
const dbName = options.database ? options.database : '';
|
|
114
|
+
if (dbName.length === 0) {
|
|
115
|
+
throw new Error('Must provide a database name');
|
|
116
|
+
}
|
|
117
|
+
const readonly = false;
|
|
118
|
+
const connName = readonly ? 'RO_' + dbName : 'RW_' + dbName;
|
|
119
|
+
const database = this.getDatabaseConnectionOrThrowError(connName);
|
|
120
|
+
try {
|
|
121
|
+
await database.open(dbName);
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
throw new Error(`### open ${err}`);
|
|
125
|
+
}
|
|
90
126
|
}
|
|
91
127
|
}
|
|
92
128
|
async closeConnection(options) {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
129
|
+
if (typeof window !== 'undefined' && window.document) {
|
|
130
|
+
this.ensureJeepSqliteIsAvailable();
|
|
131
|
+
this.ensureWebstoreIsOpen();
|
|
132
|
+
try {
|
|
133
|
+
await this.jeepSqliteElement.closeConnection(options);
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
catch (err) {
|
|
137
|
+
throw new Error(`${err}`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
// Only for typeOrm to run migration:generate
|
|
142
|
+
const dbName = options.database ? options.database : '';
|
|
143
|
+
if (dbName.length === 0) {
|
|
144
|
+
throw new Error('Must provide a database name');
|
|
145
|
+
}
|
|
146
|
+
const readonly = false;
|
|
147
|
+
const connName = readonly ? 'RO_' + dbName : 'RW_' + dbName;
|
|
148
|
+
const database = this.getDatabaseConnectionOrThrowError(connName);
|
|
149
|
+
try {
|
|
150
|
+
await database.close();
|
|
151
|
+
// remove the connection from dictionary
|
|
152
|
+
delete this.databases[connName];
|
|
153
|
+
}
|
|
154
|
+
catch (err) {
|
|
155
|
+
throw new Error(`### closeConnection ${err}`);
|
|
156
|
+
}
|
|
101
157
|
}
|
|
102
158
|
}
|
|
103
159
|
async getVersion(options) {
|
|
@@ -122,14 +178,32 @@ export class CapacitorSQLiteWeb extends WebPlugin {
|
|
|
122
178
|
}
|
|
123
179
|
}
|
|
124
180
|
async close(options) {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
181
|
+
if (typeof window !== 'undefined' && window.document) {
|
|
182
|
+
this.ensureJeepSqliteIsAvailable();
|
|
183
|
+
this.ensureWebstoreIsOpen();
|
|
184
|
+
try {
|
|
185
|
+
await this.jeepSqliteElement.close(options);
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
catch (err) {
|
|
189
|
+
throw new Error(`${err}`);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
// Only for typeOrm to run migration:generate
|
|
194
|
+
const dbName = options.database ? options.database : '';
|
|
195
|
+
if (dbName.length === 0) {
|
|
196
|
+
throw new Error('Must provide a database name');
|
|
197
|
+
}
|
|
198
|
+
const readonly = false;
|
|
199
|
+
const connName = readonly ? 'RO_' + dbName : 'RW_' + dbName;
|
|
200
|
+
const database = this.getDatabaseConnectionOrThrowError(connName);
|
|
201
|
+
try {
|
|
202
|
+
await database.close();
|
|
203
|
+
}
|
|
204
|
+
catch (err) {
|
|
205
|
+
throw new Error(`### close ${err}`);
|
|
206
|
+
}
|
|
133
207
|
}
|
|
134
208
|
}
|
|
135
209
|
async beginTransaction(options) {
|
|
@@ -188,14 +262,38 @@ export class CapacitorSQLiteWeb extends WebPlugin {
|
|
|
188
262
|
}
|
|
189
263
|
}
|
|
190
264
|
async execute(options) {
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
265
|
+
if (typeof window !== 'undefined' && window.document) {
|
|
266
|
+
this.ensureJeepSqliteIsAvailable();
|
|
267
|
+
this.ensureWebstoreIsOpen();
|
|
268
|
+
try {
|
|
269
|
+
const executeResult = await this.jeepSqliteElement.execute(options);
|
|
270
|
+
return executeResult;
|
|
271
|
+
}
|
|
272
|
+
catch (err) {
|
|
273
|
+
throw new Error(`${err}`);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
// Only for typeOrm to run migration:generate
|
|
278
|
+
const dbName = options.database ? options.database : '';
|
|
279
|
+
if (dbName.length === 0) {
|
|
280
|
+
throw new Error('Must provide a database name');
|
|
281
|
+
}
|
|
282
|
+
const statements = options.statements ? options.statements : '';
|
|
283
|
+
if (statements.length === 0) {
|
|
284
|
+
return Promise.reject('Must provide raw SQL statements');
|
|
285
|
+
}
|
|
286
|
+
const readonly = false;
|
|
287
|
+
const connName = readonly ? 'RO_' + dbName : 'RW_' + dbName;
|
|
288
|
+
const database = this.getDatabaseConnectionOrThrowError(connName);
|
|
289
|
+
try {
|
|
290
|
+
const ret = await database.executeSQL(statements);
|
|
291
|
+
const executeResult = { changes: { changes: ret } };
|
|
292
|
+
return executeResult;
|
|
293
|
+
}
|
|
294
|
+
catch (err) {
|
|
295
|
+
throw new Error(`${err}`);
|
|
296
|
+
}
|
|
199
297
|
}
|
|
200
298
|
}
|
|
201
299
|
async executeSet(options) {
|
|
@@ -210,25 +308,74 @@ export class CapacitorSQLiteWeb extends WebPlugin {
|
|
|
210
308
|
}
|
|
211
309
|
}
|
|
212
310
|
async run(options) {
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
311
|
+
if (typeof window !== 'undefined' && window.document) {
|
|
312
|
+
this.ensureJeepSqliteIsAvailable();
|
|
313
|
+
this.ensureWebstoreIsOpen();
|
|
314
|
+
try {
|
|
315
|
+
const runResult = await this.jeepSqliteElement.run(options);
|
|
316
|
+
return runResult;
|
|
317
|
+
}
|
|
318
|
+
catch (err) {
|
|
319
|
+
throw new Error(`${err}`);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
else {
|
|
323
|
+
// Only for typeOrm to run migration:generate
|
|
324
|
+
const dbName = options.database ? options.database : '';
|
|
325
|
+
if (dbName.length === 0) {
|
|
326
|
+
throw new Error('Must provide a database name');
|
|
327
|
+
}
|
|
328
|
+
const statement = options.statement ? options.statement : '';
|
|
329
|
+
if (statement.length === 0) {
|
|
330
|
+
return Promise.reject('Must provide raw SQL statement');
|
|
331
|
+
}
|
|
332
|
+
const values = options.values ? options.values : [];
|
|
333
|
+
const readonly = false;
|
|
334
|
+
const returnMode = options.returnMode ? options.returnMode : 'no';
|
|
335
|
+
const connName = readonly ? 'RO_' + dbName : 'RW_' + dbName;
|
|
336
|
+
const database = this.getDatabaseConnectionOrThrowError(connName);
|
|
337
|
+
try {
|
|
338
|
+
const runResult = await database.run(statement, values, returnMode);
|
|
339
|
+
return runResult;
|
|
340
|
+
}
|
|
341
|
+
catch (err) {
|
|
342
|
+
throw new Error(`${err}`);
|
|
343
|
+
}
|
|
221
344
|
}
|
|
222
345
|
}
|
|
223
346
|
async query(options) {
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
347
|
+
if (typeof window !== 'undefined' && window.document) {
|
|
348
|
+
this.ensureJeepSqliteIsAvailable();
|
|
349
|
+
this.ensureWebstoreIsOpen();
|
|
350
|
+
try {
|
|
351
|
+
const queryResult = await this.jeepSqliteElement.query(options);
|
|
352
|
+
return queryResult;
|
|
353
|
+
}
|
|
354
|
+
catch (err) {
|
|
355
|
+
throw new Error(`${err}`);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
else {
|
|
359
|
+
// Only for typeOrm to run migration:generate
|
|
360
|
+
const dbName = options.database ? options.database : '';
|
|
361
|
+
if (dbName.length === 0) {
|
|
362
|
+
throw new Error('Must provide a database name');
|
|
363
|
+
}
|
|
364
|
+
const statement = options.statement ? options.statement : '';
|
|
365
|
+
if (statement.length === 0) {
|
|
366
|
+
return Promise.reject('Must provide raw SQL statement');
|
|
367
|
+
}
|
|
368
|
+
const values = options.values ? options.values : [];
|
|
369
|
+
const readonly = false;
|
|
370
|
+
const connName = readonly ? 'RO_' + dbName : 'RW_' + dbName;
|
|
371
|
+
const database = this.getDatabaseConnectionOrThrowError(connName);
|
|
372
|
+
try {
|
|
373
|
+
const queryResult = await database.selectSQL(statement, values);
|
|
374
|
+
return queryResult;
|
|
375
|
+
}
|
|
376
|
+
catch (err) {
|
|
377
|
+
throw new Error(`${err}`);
|
|
378
|
+
}
|
|
232
379
|
}
|
|
233
380
|
}
|
|
234
381
|
async isDBExists(options) {
|
|
@@ -427,6 +574,13 @@ export class CapacitorSQLiteWeb extends WebPlugin {
|
|
|
427
574
|
throw new Error('WebStore is not open yet. You have to call "initWebStore()" first.');
|
|
428
575
|
}
|
|
429
576
|
}
|
|
577
|
+
getDatabaseConnectionOrThrowError(dbName) {
|
|
578
|
+
const databaseNames = Object.keys(this.databases);
|
|
579
|
+
if (!databaseNames.includes(dbName)) {
|
|
580
|
+
throw new Error(`No connection available for database "${dbName}"`);
|
|
581
|
+
}
|
|
582
|
+
return this.databases[dbName];
|
|
583
|
+
}
|
|
430
584
|
////////////////////////////////////
|
|
431
585
|
////// UNIMPLEMENTED METHODS
|
|
432
586
|
////////////////////////////////////
|