@aws-amplify/datastore-storage-adapter 1.2.3 → 1.2.4-custom-pk.79
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 +149 -0
- package/ExpoSQLiteAdapter/index.d.ts +1 -0
- package/ExpoSQLiteAdapter/index.js +7 -0
- package/SQLiteAdapter/index.d.ts +1 -0
- package/SQLiteAdapter/index.js +7 -0
- package/dist/aws-amplify-datastore-sqlite-adapter-expo.js +2509 -0
- package/dist/aws-amplify-datastore-sqlite-adapter-expo.js.map +1 -0
- package/dist/aws-amplify-datastore-sqlite-adapter-expo.min.js +2 -0
- package/dist/aws-amplify-datastore-sqlite-adapter-expo.min.js.map +1 -0
- package/dist/aws-amplify-datastore-storage-adapter.js +1227 -1158
- package/dist/aws-amplify-datastore-storage-adapter.js.map +1 -1
- package/dist/aws-amplify-datastore-storage-adapter.min.js +1 -1
- package/dist/aws-amplify-datastore-storage-adapter.min.js.map +1 -1
- package/lib/ExpoSQLiteAdapter/ExpoSQLiteAdapter.d.ts +3 -0
- package/lib/ExpoSQLiteAdapter/ExpoSQLiteAdapter.js +10 -0
- package/lib/ExpoSQLiteAdapter/ExpoSQLiteAdapter.js.map +1 -0
- package/lib/ExpoSQLiteAdapter/ExpoSQLiteDatabase.d.ts +17 -0
- package/lib/ExpoSQLiteAdapter/ExpoSQLiteDatabase.js +362 -0
- package/lib/ExpoSQLiteAdapter/ExpoSQLiteDatabase.js.map +1 -0
- package/lib/SQLiteAdapter/SQLiteAdapter.d.ts +3 -23
- package/lib/SQLiteAdapter/SQLiteAdapter.js +3 -580
- package/lib/SQLiteAdapter/SQLiteAdapter.js.map +1 -1
- package/lib/SQLiteAdapter/SQLiteDatabase.d.ts +8 -8
- package/lib/SQLiteAdapter/SQLiteDatabase.js +46 -42
- package/lib/SQLiteAdapter/SQLiteDatabase.js.map +1 -1
- package/lib/common/CommonSQLiteAdapter.d.ts +23 -0
- package/lib/common/CommonSQLiteAdapter.js +582 -0
- package/lib/common/CommonSQLiteAdapter.js.map +1 -0
- package/lib/{SQLiteAdapter → common}/SQLiteUtils.d.ts +3 -2
- package/lib/{SQLiteAdapter → common}/SQLiteUtils.js +54 -3
- package/lib/common/SQLiteUtils.js.map +1 -0
- package/lib/common/constants.d.ts +1 -0
- package/lib/common/constants.js +4 -0
- package/lib/common/constants.js.map +1 -0
- package/lib/common/types.d.ts +13 -0
- package/lib/common/types.js +3 -0
- package/lib/common/types.js.map +1 -0
- package/lib-esm/ExpoSQLiteAdapter/ExpoSQLiteAdapter.d.ts +3 -0
- package/lib-esm/ExpoSQLiteAdapter/ExpoSQLiteAdapter.js +5 -0
- package/lib-esm/ExpoSQLiteAdapter/ExpoSQLiteAdapter.js.map +1 -0
- package/lib-esm/ExpoSQLiteAdapter/ExpoSQLiteDatabase.d.ts +17 -0
- package/lib-esm/ExpoSQLiteAdapter/ExpoSQLiteDatabase.js +360 -0
- package/lib-esm/ExpoSQLiteAdapter/ExpoSQLiteDatabase.js.map +1 -0
- package/lib-esm/SQLiteAdapter/SQLiteAdapter.d.ts +3 -23
- package/lib-esm/SQLiteAdapter/SQLiteAdapter.js +3 -580
- package/lib-esm/SQLiteAdapter/SQLiteAdapter.js.map +1 -1
- package/lib-esm/SQLiteAdapter/SQLiteDatabase.d.ts +8 -8
- package/lib-esm/SQLiteAdapter/SQLiteDatabase.js +46 -42
- package/lib-esm/SQLiteAdapter/SQLiteDatabase.js.map +1 -1
- package/lib-esm/common/CommonSQLiteAdapter.d.ts +23 -0
- package/lib-esm/common/CommonSQLiteAdapter.js +580 -0
- package/lib-esm/common/CommonSQLiteAdapter.js.map +1 -0
- package/lib-esm/{SQLiteAdapter → common}/SQLiteUtils.d.ts +3 -2
- package/lib-esm/{SQLiteAdapter → common}/SQLiteUtils.js +52 -2
- package/lib-esm/common/SQLiteUtils.js.map +1 -0
- package/lib-esm/common/constants.d.ts +1 -0
- package/lib-esm/common/constants.js +2 -0
- package/lib-esm/common/constants.js.map +1 -0
- package/lib-esm/common/types.d.ts +13 -0
- package/lib-esm/common/types.js +1 -0
- package/lib-esm/common/types.js.map +1 -0
- package/package.json +13 -7
- package/src/ExpoSQLiteAdapter/ExpoSQLiteAdapter.ts +8 -0
- package/src/ExpoSQLiteAdapter/ExpoSQLiteDatabase.ts +282 -0
- package/src/SQLiteAdapter/SQLiteAdapter.ts +5 -475
- package/src/SQLiteAdapter/SQLiteDatabase.ts +49 -53
- package/src/common/CommonSQLiteAdapter.ts +479 -0
- package/src/{SQLiteAdapter → common}/SQLiteUtils.ts +66 -5
- package/src/common/constants.ts +1 -0
- package/src/common/types.ts +29 -0
- package/webpack.config.dev.js +2 -0
- package/lib/SQLiteAdapter/SQLiteUtils.js.map +0 -1
- package/lib/SQLiteAdapter/types.d.ts +0 -2
- package/lib/SQLiteAdapter/types.js +0 -28
- package/lib/SQLiteAdapter/types.js.map +0 -1
- package/lib-esm/SQLiteAdapter/SQLiteUtils.js.map +0 -1
- package/lib-esm/SQLiteAdapter/types.d.ts +0 -2
- package/lib-esm/SQLiteAdapter/types.js +0 -25
- package/lib-esm/SQLiteAdapter/types.js.map +0 -1
- package/src/SQLiteAdapter/types.ts +0 -31
|
@@ -30,7 +30,6 @@ var __values = (this && this.__values) || function(o) {
|
|
|
30
30
|
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
31
31
|
};
|
|
32
32
|
import { isGraphQLScalarType, QueryOne, isPredicateObj, isPredicateGroup, isModelFieldType, isTargetNameAssociation, isModelAttributeAuth, utils, } from '@aws-amplify/datastore';
|
|
33
|
-
import { getSQLiteType } from './types';
|
|
34
33
|
var USER = utils.USER, isNonModelConstructor = utils.isNonModelConstructor, isModelConstructor = utils.isModelConstructor;
|
|
35
34
|
var keysFromModel = function (model) {
|
|
36
35
|
return Object.keys(model)
|
|
@@ -72,6 +71,30 @@ function prepareValueForDML(value) {
|
|
|
72
71
|
}
|
|
73
72
|
return "" + value;
|
|
74
73
|
}
|
|
74
|
+
export function getSQLiteType(scalar) {
|
|
75
|
+
switch (scalar) {
|
|
76
|
+
case 'Boolean':
|
|
77
|
+
case 'Int':
|
|
78
|
+
case 'AWSTimestamp':
|
|
79
|
+
return 'INTEGER';
|
|
80
|
+
case 'ID':
|
|
81
|
+
case 'String':
|
|
82
|
+
case 'AWSDate':
|
|
83
|
+
case 'AWSTime':
|
|
84
|
+
case 'AWSDateTime':
|
|
85
|
+
case 'AWSEmail':
|
|
86
|
+
case 'AWSJSON':
|
|
87
|
+
case 'AWSURL':
|
|
88
|
+
case 'AWSPhone':
|
|
89
|
+
case 'AWSIPAddress':
|
|
90
|
+
return 'TEXT';
|
|
91
|
+
case 'Float':
|
|
92
|
+
return 'REAL';
|
|
93
|
+
default:
|
|
94
|
+
var _ = scalar;
|
|
95
|
+
throw new Error("unknown type " + scalar);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
75
98
|
export function generateSchemaStatements(schema) {
|
|
76
99
|
return Object.keys(schema.namespaces).flatMap(function (namespaceName) {
|
|
77
100
|
var namespace = schema.namespaces[namespaceName];
|
|
@@ -117,7 +140,7 @@ export function modelCreateTableStatement(model, userModel) {
|
|
|
117
140
|
// add targetName as well as field name for BELONGS_TO relations
|
|
118
141
|
if (isTargetNameAssociation(field.association)) {
|
|
119
142
|
// check if this field has been explicitly defined in the model
|
|
120
|
-
var fkDefinedInModel = Object.values(model.fields).find(function (f) { return f.name === field.association.targetName; });
|
|
143
|
+
var fkDefinedInModel = Object.values(model.fields).find(function (f) { var _a; return f.name === ((_a = field === null || field === void 0 ? void 0 : field.association) === null || _a === void 0 ? void 0 : _a.targetName); });
|
|
121
144
|
// if the FK is not explicitly defined in the model, we have to add it here
|
|
122
145
|
if (!fkDefinedInModel) {
|
|
123
146
|
var required = field.isRequired ? ' NOT NULL' : '';
|
|
@@ -180,8 +203,35 @@ var logicalOperatorMap = {
|
|
|
180
203
|
notContains: 'NOT LIKE',
|
|
181
204
|
between: 'BETWEEN',
|
|
182
205
|
};
|
|
206
|
+
/**
|
|
207
|
+
* If the given (operator, operand) indicate the need for a special `NULL` comparison,
|
|
208
|
+
* that `WHERE` clause condition will be returned. If not special `NULL` handling is
|
|
209
|
+
* needed, `null` will be returned, and the caller should construct the `WHERE`
|
|
210
|
+
* clause component using the normal operator map(s) and parameterization.
|
|
211
|
+
*
|
|
212
|
+
* @param operator "beginsWith" | "contains" | "notContains" | "between"
|
|
213
|
+
* | "eq" | "ne" | "le" | "lt" | "ge" | "gt"
|
|
214
|
+
* @param operand any
|
|
215
|
+
* @returns (string | null) The `WHERE` clause component or `null` if N/A.
|
|
216
|
+
*/
|
|
217
|
+
function buildSpecialNullComparison(field, operator, operand) {
|
|
218
|
+
if (operand === null || operand === undefined) {
|
|
219
|
+
if (operator === 'eq') {
|
|
220
|
+
return "\"" + field + "\" IS NULL";
|
|
221
|
+
}
|
|
222
|
+
else if (operator === 'ne') {
|
|
223
|
+
return "\"" + field + "\" IS NOT NULL";
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
// no special null handling required
|
|
227
|
+
return null;
|
|
228
|
+
}
|
|
183
229
|
var whereConditionFromPredicateObject = function (_a) {
|
|
184
230
|
var field = _a.field, operator = _a.operator, operand = _a.operand;
|
|
231
|
+
var specialNullClause = buildSpecialNullComparison(field, operator, operand);
|
|
232
|
+
if (specialNullClause) {
|
|
233
|
+
return [specialNullClause, []];
|
|
234
|
+
}
|
|
185
235
|
var comparisonOperator = comparisonOperatorMap[operator];
|
|
186
236
|
if (comparisonOperator) {
|
|
187
237
|
return ["\"" + field + "\" " + comparisonOperator + " ?", [operand]];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SQLiteUtils.js","sourceRoot":"","sources":["../../src/common/SQLiteUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const DB_NAME = "AmplifyDatastore";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/common/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,OAAO,GAAG,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { PersistentModel } from '@aws-amplify/datastore';
|
|
2
|
+
export interface CommonSQLiteDatabase {
|
|
3
|
+
init(): Promise<void>;
|
|
4
|
+
createSchema(statements: string[]): Promise<void>;
|
|
5
|
+
clear(): Promise<void>;
|
|
6
|
+
get<T extends PersistentModel>(statement: string, params: (string | number)[]): Promise<T>;
|
|
7
|
+
getAll<T extends PersistentModel>(statement: string, params: (string | number)[]): Promise<T[]>;
|
|
8
|
+
save(statement: string, params: (string | number)[]): Promise<void>;
|
|
9
|
+
batchQuery<T = any>(queryParameterizedStatement: Set<ParameterizedStatement>): Promise<T[]>;
|
|
10
|
+
batchSave(saveParameterizedStatements: Set<ParameterizedStatement>, deleteParameterizedStatements?: Set<ParameterizedStatement>): Promise<void>;
|
|
11
|
+
selectAndDelete<T = any>(queryParameterizedStatement: ParameterizedStatement, deleteParameterizedStatement: ParameterizedStatement): Promise<T[]>;
|
|
12
|
+
}
|
|
13
|
+
export declare type ParameterizedStatement = [string, any[]];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/common/types.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-amplify/datastore-storage-adapter",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.4-custom-pk.79+0b6fc9dc5",
|
|
4
4
|
"description": "SQLite storage adapter for Amplify DataStore ",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"module": "./lib-esm/index.js",
|
|
@@ -34,9 +34,13 @@
|
|
|
34
34
|
},
|
|
35
35
|
"homepage": "https://aws-amplify.github.io/",
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@aws-amplify/core": "4.3.
|
|
38
|
-
"@aws-amplify/datastore": "3.7.
|
|
39
|
-
"react-native-sqlite-storage": "5.0.
|
|
37
|
+
"@aws-amplify/core": "4.3.12-custom-pk.79+0b6fc9dc5",
|
|
38
|
+
"@aws-amplify/datastore": "3.7.4-custom-pk.79+0b6fc9dc5",
|
|
39
|
+
"@types/react-native-sqlite-storage": "5.0.1",
|
|
40
|
+
"expo-file-system": "13.1.4",
|
|
41
|
+
"expo-sqlite": "10.1.0",
|
|
42
|
+
"react-native-sqlite-storage": "5.0.0",
|
|
43
|
+
"sqlite3": "^5.0.2"
|
|
40
44
|
},
|
|
41
45
|
"jest": {
|
|
42
46
|
"globals": {
|
|
@@ -62,7 +66,8 @@
|
|
|
62
66
|
"testPathIgnorePatterns": [
|
|
63
67
|
"__tests__/model.ts",
|
|
64
68
|
"__tests__/schema.ts",
|
|
65
|
-
"__tests__/helpers.ts"
|
|
69
|
+
"__tests__/helpers.ts",
|
|
70
|
+
"__tests__/SQLiteAdapter.test.ts"
|
|
66
71
|
],
|
|
67
72
|
"moduleFileExtensions": [
|
|
68
73
|
"ts",
|
|
@@ -85,8 +90,9 @@
|
|
|
85
90
|
"/node_modules/",
|
|
86
91
|
"dist",
|
|
87
92
|
"lib",
|
|
88
|
-
"lib-esm"
|
|
93
|
+
"lib-esm",
|
|
94
|
+
"../datastore"
|
|
89
95
|
]
|
|
90
96
|
},
|
|
91
|
-
"gitHead": "
|
|
97
|
+
"gitHead": "0b6fc9dc572459650749e5beb992c5060eadb920"
|
|
92
98
|
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { CommonSQLiteAdapter } from '../common/CommonSQLiteAdapter';
|
|
2
|
+
import ExpoSQLiteDatabase from './ExpoSQLiteDatabase';
|
|
3
|
+
|
|
4
|
+
const ExpoSQLiteAdapter: CommonSQLiteAdapter = new CommonSQLiteAdapter(
|
|
5
|
+
new ExpoSQLiteDatabase()
|
|
6
|
+
);
|
|
7
|
+
|
|
8
|
+
export default ExpoSQLiteAdapter;
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
import { ConsoleLogger as Logger } from '@aws-amplify/core';
|
|
2
|
+
import { PersistentModel } from '@aws-amplify/datastore';
|
|
3
|
+
import { deleteAsync, documentDirectory } from 'expo-file-system';
|
|
4
|
+
import { openDatabase, WebSQLDatabase } from 'expo-sqlite';
|
|
5
|
+
import { DB_NAME } from '../common/constants';
|
|
6
|
+
import { CommonSQLiteDatabase, ParameterizedStatement } from '../common/types';
|
|
7
|
+
|
|
8
|
+
const logger = new Logger('ExpoSQLiteDatabase');
|
|
9
|
+
|
|
10
|
+
/*
|
|
11
|
+
|
|
12
|
+
Note:
|
|
13
|
+
ExpoSQLite transaction error callbacks require returning a boolean value to indicate whether the
|
|
14
|
+
error was handled or not. Returning a true value indicates the error was handled and does not
|
|
15
|
+
rollback the whole transaction.
|
|
16
|
+
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
class ExpoSQLiteDatabase implements CommonSQLiteDatabase {
|
|
20
|
+
private db: WebSQLDatabase;
|
|
21
|
+
|
|
22
|
+
public async init(): Promise<void> {
|
|
23
|
+
// only open database once.
|
|
24
|
+
|
|
25
|
+
if (!this.db) {
|
|
26
|
+
// As per expo docs version, description and size arguments are ignored,
|
|
27
|
+
// but are accepted by the function for compatibility with the WebSQL specification.
|
|
28
|
+
// Hence, we do not need those arguments.
|
|
29
|
+
this.db = openDatabase(DB_NAME);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
public createSchema(statements: string[]): Promise<void> {
|
|
34
|
+
return this.executeStatements(statements);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
public async clear(): Promise<void> {
|
|
38
|
+
try {
|
|
39
|
+
logger.debug('Clearing database');
|
|
40
|
+
await this.closeDB();
|
|
41
|
+
// delete database is not supported by expo-sqlite.
|
|
42
|
+
// Database file needs to be deleted using deleteAsync from expo-file-system
|
|
43
|
+
await deleteAsync(`${documentDirectory}SQLite/${DB_NAME}`);
|
|
44
|
+
logger.debug('Database cleared');
|
|
45
|
+
} catch (error) {
|
|
46
|
+
logger.warn('Error clearing the database.', error);
|
|
47
|
+
// open database if it was closed earlier and this.db was set to undefined.
|
|
48
|
+
this.init();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
public async get<T extends PersistentModel>(
|
|
53
|
+
statement: string,
|
|
54
|
+
params: (string | number)[]
|
|
55
|
+
): Promise<T> {
|
|
56
|
+
const results: T[] = await this.getAll(statement, params);
|
|
57
|
+
return results[0];
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
public getAll<T extends PersistentModel>(
|
|
61
|
+
statement: string,
|
|
62
|
+
params: (string | number)[]
|
|
63
|
+
): Promise<T[]> {
|
|
64
|
+
return new Promise((resolve, reject) => {
|
|
65
|
+
this.db.readTransaction(transaction => {
|
|
66
|
+
transaction.executeSql(
|
|
67
|
+
statement,
|
|
68
|
+
params,
|
|
69
|
+
(_, result) => {
|
|
70
|
+
resolve(result.rows._array || []);
|
|
71
|
+
},
|
|
72
|
+
(_, error) => {
|
|
73
|
+
reject(error);
|
|
74
|
+
logger.warn(error);
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
);
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
public save(statement: string, params: (string | number)[]): Promise<void> {
|
|
83
|
+
return new Promise((resolve, reject) => {
|
|
84
|
+
this.db.transaction(transaction => {
|
|
85
|
+
transaction.executeSql(
|
|
86
|
+
statement,
|
|
87
|
+
params,
|
|
88
|
+
() => {
|
|
89
|
+
resolve(null);
|
|
90
|
+
},
|
|
91
|
+
(_, error) => {
|
|
92
|
+
reject(error);
|
|
93
|
+
logger.warn(error);
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
);
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
public batchQuery<T = any>(
|
|
102
|
+
queryParameterizedStatements: Set<ParameterizedStatement> = new Set()
|
|
103
|
+
): Promise<T[]> {
|
|
104
|
+
return new Promise((resolveTransaction, rejectTransaction) => {
|
|
105
|
+
this.db.transaction(async transaction => {
|
|
106
|
+
try {
|
|
107
|
+
const results: any[] = await Promise.all(
|
|
108
|
+
[...queryParameterizedStatements].map(
|
|
109
|
+
([statement, params]) =>
|
|
110
|
+
new Promise((resolve, reject) => {
|
|
111
|
+
transaction.executeSql(
|
|
112
|
+
statement,
|
|
113
|
+
params,
|
|
114
|
+
(_, result) => {
|
|
115
|
+
resolve(result.rows._array[0]);
|
|
116
|
+
},
|
|
117
|
+
(_, error) => {
|
|
118
|
+
reject(error);
|
|
119
|
+
logger.warn(error);
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
);
|
|
123
|
+
})
|
|
124
|
+
)
|
|
125
|
+
);
|
|
126
|
+
resolveTransaction(results);
|
|
127
|
+
} catch (error) {
|
|
128
|
+
rejectTransaction(error);
|
|
129
|
+
logger.warn(error);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
public batchSave(
|
|
136
|
+
saveParameterizedStatements: Set<ParameterizedStatement> = new Set(),
|
|
137
|
+
deleteParameterizedStatements?: Set<ParameterizedStatement>
|
|
138
|
+
): Promise<void> {
|
|
139
|
+
return new Promise((resolveTransaction, rejectTransaction) => {
|
|
140
|
+
this.db.transaction(async transaction => {
|
|
141
|
+
try {
|
|
142
|
+
// await for all sql statements promises to resolve
|
|
143
|
+
await Promise.all(
|
|
144
|
+
[...saveParameterizedStatements].map(
|
|
145
|
+
([statement, params]) =>
|
|
146
|
+
new Promise((resolve, reject) => {
|
|
147
|
+
transaction.executeSql(
|
|
148
|
+
statement,
|
|
149
|
+
params,
|
|
150
|
+
() => {
|
|
151
|
+
resolve(null);
|
|
152
|
+
},
|
|
153
|
+
(_, error) => {
|
|
154
|
+
reject(error);
|
|
155
|
+
logger.warn(error);
|
|
156
|
+
return true;
|
|
157
|
+
}
|
|
158
|
+
);
|
|
159
|
+
})
|
|
160
|
+
)
|
|
161
|
+
);
|
|
162
|
+
if (deleteParameterizedStatements) {
|
|
163
|
+
await Promise.all(
|
|
164
|
+
[...deleteParameterizedStatements].map(
|
|
165
|
+
([statement, params]) =>
|
|
166
|
+
new Promise((resolve, reject) =>
|
|
167
|
+
transaction.executeSql(
|
|
168
|
+
statement,
|
|
169
|
+
params,
|
|
170
|
+
() => {
|
|
171
|
+
resolve(null);
|
|
172
|
+
},
|
|
173
|
+
(_, error) => {
|
|
174
|
+
reject(error);
|
|
175
|
+
logger.warn(error);
|
|
176
|
+
return true;
|
|
177
|
+
}
|
|
178
|
+
)
|
|
179
|
+
)
|
|
180
|
+
)
|
|
181
|
+
);
|
|
182
|
+
}
|
|
183
|
+
resolveTransaction(null);
|
|
184
|
+
} catch (error) {
|
|
185
|
+
rejectTransaction(error);
|
|
186
|
+
logger.warn(error);
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
public selectAndDelete<T = any>(
|
|
193
|
+
queryParameterizedStatement: ParameterizedStatement,
|
|
194
|
+
deleteParameterizedStatement: ParameterizedStatement
|
|
195
|
+
): Promise<T[]> {
|
|
196
|
+
const [queryStatement, queryParams] = queryParameterizedStatement;
|
|
197
|
+
const [deleteStatement, deleteParams] = deleteParameterizedStatement;
|
|
198
|
+
|
|
199
|
+
return new Promise((resolveTransaction, rejectTransaction) => {
|
|
200
|
+
this.db.transaction(async transaction => {
|
|
201
|
+
try {
|
|
202
|
+
const result: T[] = await new Promise((resolve, reject) => {
|
|
203
|
+
transaction.executeSql(
|
|
204
|
+
queryStatement,
|
|
205
|
+
queryParams,
|
|
206
|
+
(_, result) => {
|
|
207
|
+
resolve(result.rows._array || []);
|
|
208
|
+
},
|
|
209
|
+
(_, error) => {
|
|
210
|
+
reject(error);
|
|
211
|
+
logger.warn(error);
|
|
212
|
+
return true;
|
|
213
|
+
}
|
|
214
|
+
);
|
|
215
|
+
});
|
|
216
|
+
await new Promise((resolve, reject) => {
|
|
217
|
+
transaction.executeSql(
|
|
218
|
+
deleteStatement,
|
|
219
|
+
deleteParams,
|
|
220
|
+
() => {
|
|
221
|
+
resolve(null);
|
|
222
|
+
},
|
|
223
|
+
(_, error) => {
|
|
224
|
+
reject(error);
|
|
225
|
+
logger.warn(error);
|
|
226
|
+
return true;
|
|
227
|
+
}
|
|
228
|
+
);
|
|
229
|
+
});
|
|
230
|
+
resolveTransaction(result);
|
|
231
|
+
} catch (error) {
|
|
232
|
+
rejectTransaction(error);
|
|
233
|
+
logger.warn(error);
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
private executeStatements(statements: string[]): Promise<void> {
|
|
240
|
+
return new Promise((resolveTransaction, rejectTransaction) => {
|
|
241
|
+
this.db.transaction(async transaction => {
|
|
242
|
+
try {
|
|
243
|
+
await Promise.all(
|
|
244
|
+
statements.map(
|
|
245
|
+
statement =>
|
|
246
|
+
new Promise((resolve, reject) => {
|
|
247
|
+
transaction.executeSql(
|
|
248
|
+
statement,
|
|
249
|
+
[],
|
|
250
|
+
() => {
|
|
251
|
+
resolve(null);
|
|
252
|
+
},
|
|
253
|
+
(_, error) => {
|
|
254
|
+
reject(error);
|
|
255
|
+
return true;
|
|
256
|
+
}
|
|
257
|
+
);
|
|
258
|
+
})
|
|
259
|
+
)
|
|
260
|
+
);
|
|
261
|
+
resolveTransaction(null);
|
|
262
|
+
} catch (error) {
|
|
263
|
+
rejectTransaction(error);
|
|
264
|
+
logger.warn(error);
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
private async closeDB() {
|
|
271
|
+
if (this.db) {
|
|
272
|
+
logger.debug('Closing Database');
|
|
273
|
+
// closing database is not supported by expo-sqlite.
|
|
274
|
+
// Workaround is to access the private db variable and call the close() method.
|
|
275
|
+
await (this.db as any)._db.close();
|
|
276
|
+
logger.debug('Database closed');
|
|
277
|
+
this.db = undefined;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
export default ExpoSQLiteDatabase;
|