typeorm 0.3.22-dev.72145b8 → 0.3.22-dev.72c6991
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/browser/cache/DbQueryResultCache.js +1 -1
- package/browser/cache/DbQueryResultCache.js.map +1 -1
- package/browser/connection/ConnectionOptionsReader.js +5 -9
- package/browser/connection/ConnectionOptionsReader.js.map +1 -1
- package/browser/data-source/DataSource.js +2 -2
- package/browser/data-source/DataSource.js.map +1 -1
- package/browser/decorator/relations/RelationCount.d.ts +2 -1
- package/browser/decorator/relations/RelationCount.js +2 -1
- package/browser/decorator/relations/RelationCount.js.map +1 -1
- package/browser/driver/DriverFactory.js +2 -2
- package/browser/driver/DriverFactory.js.map +1 -1
- package/browser/driver/DriverUtils.js +4 -5
- package/browser/driver/DriverUtils.js.map +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlDriver.js +3 -3
- package/browser/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachDriver.js +6 -8
- package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +1 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.js +7 -4
- package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/browser/driver/cordova/CordovaQueryRunner.js +1 -1
- package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
- package/browser/driver/expo/ExpoDriver.d.ts +2 -12
- package/browser/driver/expo/ExpoDriver.js +8 -54
- package/browser/driver/expo/ExpoDriver.js.map +1 -1
- package/browser/driver/expo/ExpoDriverFactory.d.ts +9 -0
- package/browser/driver/expo/ExpoDriverFactory.js +18 -0
- package/browser/driver/expo/ExpoDriverFactory.js.map +1 -0
- package/browser/driver/expo/ExpoQueryRunner.d.ts +0 -48
- package/browser/driver/expo/ExpoQueryRunner.js +36 -141
- package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
- package/browser/driver/expo/legacy/ExpoLegacyDriver.d.ts +21 -0
- package/browser/driver/expo/legacy/ExpoLegacyDriver.js +71 -0
- package/browser/driver/expo/legacy/ExpoLegacyDriver.js.map +1 -0
- package/browser/driver/expo/legacy/ExpoLegacyQueryRunner.d.ts +57 -0
- package/browser/driver/expo/legacy/ExpoLegacyQueryRunner.js +165 -0
- package/browser/driver/expo/legacy/ExpoLegacyQueryRunner.js.map +1 -0
- package/browser/driver/mongodb/MongoConnectionOptions.d.ts +111 -142
- package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
- package/browser/driver/mongodb/MongoDriver.d.ts +2 -3
- package/browser/driver/mongodb/MongoDriver.js +57 -65
- package/browser/driver/mongodb/MongoDriver.js.map +1 -1
- package/browser/driver/mysql/MysqlDriver.js +10 -12
- package/browser/driver/mysql/MysqlDriver.js.map +1 -1
- package/browser/driver/mysql/MysqlQueryRunner.d.ts +1 -1
- package/browser/driver/mysql/MysqlQueryRunner.js +9 -3
- package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/browser/driver/oracle/OracleDriver.js +3 -3
- package/browser/driver/oracle/OracleDriver.js.map +1 -1
- package/browser/driver/oracle/OracleQueryRunner.js +2 -2
- package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/browser/driver/postgres/PostgresDriver.d.ts +2 -1
- package/browser/driver/postgres/PostgresDriver.js +15 -20
- package/browser/driver/postgres/PostgresDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.d.ts +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.js +18 -8
- package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/browser/driver/react-native/ReactNativeDriver.js +1 -1
- package/browser/driver/react-native/ReactNativeDriver.js.map +1 -1
- package/browser/driver/react-native/ReactNativeQueryRunner.js +1 -1
- package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
- package/browser/driver/sap/SapDriver.d.ts +4 -0
- package/browser/driver/sap/SapDriver.js +50 -43
- package/browser/driver/sap/SapDriver.js.map +1 -1
- package/browser/driver/sap/SapQueryRunner.d.ts +7 -0
- package/browser/driver/sap/SapQueryRunner.js +19 -22
- package/browser/driver/sap/SapQueryRunner.js.map +1 -1
- package/browser/driver/spanner/SpannerDriver.js +3 -3
- package/browser/driver/spanner/SpannerDriver.js.map +1 -1
- package/browser/driver/spanner/SpannerQueryRunner.js +7 -7
- package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +7 -7
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/browser/driver/sqljs/SqljsDriver.js +1 -1
- package/browser/driver/sqljs/SqljsDriver.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerDriver.js +3 -3
- package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerQueryRunner.js +4 -4
- package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/browser/driver/types/ColumnTypes.d.ts +1 -1
- package/browser/driver/types/ColumnTypes.js.map +1 -1
- package/browser/entity-manager/EntityManager.js.map +1 -1
- package/browser/entity-manager/MongoEntityManager.js +1 -1
- package/browser/entity-manager/MongoEntityManager.js.map +1 -1
- package/browser/find-options/FindOptionsSelect.d.ts +1 -1
- package/browser/find-options/FindOptionsSelect.js.map +1 -1
- package/browser/find-options/FindOptionsUtils.js +1 -1
- package/browser/find-options/FindOptionsUtils.js.map +1 -1
- package/browser/index.d.ts +1 -0
- package/browser/index.js +1 -0
- package/browser/index.js.map +1 -1
- package/browser/logger/AdvancedConsoleLogger.js +1 -1
- package/browser/logger/AdvancedConsoleLogger.js.map +1 -1
- package/browser/logger/DebugLogger.js +1 -1
- package/browser/logger/DebugLogger.js.map +1 -1
- package/browser/logger/FileLogger.js +1 -1
- package/browser/logger/FileLogger.js.map +1 -1
- package/browser/logger/SimpleConsoleLogger.js +1 -1
- package/browser/logger/SimpleConsoleLogger.js.map +1 -1
- package/browser/metadata/ColumnMetadata.js +1 -1
- package/browser/metadata/ColumnMetadata.js.map +1 -1
- package/browser/metadata/EmbeddedMetadata.js +1 -1
- package/browser/metadata/EmbeddedMetadata.js.map +1 -1
- package/browser/migration/MigrationExecutor.js +4 -4
- package/browser/migration/MigrationExecutor.js.map +1 -1
- package/browser/persistence/EntityPersistExecutor.js +2 -2
- package/browser/persistence/EntityPersistExecutor.js.map +1 -1
- package/browser/persistence/SubjectDatabaseEntityLoader.js +1 -1
- package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
- package/browser/persistence/SubjectExecutor.js +1 -1
- package/browser/persistence/SubjectExecutor.js.map +1 -1
- package/browser/persistence/SubjectTopologicalSorter.js +5 -5
- package/browser/persistence/SubjectTopologicalSorter.js.map +1 -1
- package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +1 -1
- package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
- package/browser/persistence/tree/NestedSetSubjectExecutor.js +2 -2
- package/browser/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
- package/browser/query-builder/InsertQueryBuilder.js +3 -3
- package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
- package/browser/query-builder/JoinAttribute.js +2 -2
- package/browser/query-builder/JoinAttribute.js.map +1 -1
- package/browser/query-builder/QueryBuilder.js +2 -2
- package/browser/query-builder/QueryBuilder.js.map +1 -1
- package/browser/query-builder/RelationIdLoader.js +2 -2
- package/browser/query-builder/RelationIdLoader.js.map +1 -1
- package/browser/query-builder/SelectQueryBuilder.js +27 -14
- package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
- package/browser/query-builder/SoftDeleteQueryBuilder.js +1 -1
- package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
- package/browser/query-builder/UpdateQueryBuilder.js +3 -3
- package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +2 -2
- package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
- package/browser/repository/Repository.js.map +1 -1
- package/browser/subscriber/event/QueryEvent.d.ts +1 -1
- package/browser/subscriber/event/QueryEvent.js.map +1 -1
- package/browser/util/DepGraph.js +13 -13
- package/browser/util/DepGraph.js.map +1 -1
- package/browser/util/DirectoryExportedClassesLoader.js +2 -2
- package/browser/util/DirectoryExportedClassesLoader.js.map +1 -1
- package/browser/util/InstanceChecker.js.map +1 -1
- package/browser/util/ObjectUtils.d.ts +2 -2
- package/browser/util/ObjectUtils.js.map +1 -1
- package/browser/util/OrmUtils.js +4 -4
- package/browser/util/OrmUtils.js.map +1 -1
- package/browser/util/RandomGenerator.js +6 -6
- package/browser/util/RandomGenerator.js.map +1 -1
- package/browser/util/VersionUtils.d.ts +1 -2
- package/browser/util/VersionUtils.js +14 -7
- package/browser/util/VersionUtils.js.map +1 -1
- package/browser/util/escapeRegExp.d.ts +1 -1
- package/browser/util/escapeRegExp.js.map +1 -1
- package/cache/DbQueryResultCache.js +1 -1
- package/cache/DbQueryResultCache.js.map +1 -1
- package/commands/CommandUtils.js +1 -0
- package/commands/CommandUtils.js.map +1 -1
- package/commands/InitCommand.js +29 -27
- package/commands/InitCommand.js.map +1 -1
- package/commands/MigrationGenerateCommand.js +2 -2
- package/commands/MigrationGenerateCommand.js.map +1 -1
- package/connection/ConnectionOptionsReader.js +5 -9
- package/connection/ConnectionOptionsReader.js.map +1 -1
- package/data-source/DataSource.js +2 -2
- package/data-source/DataSource.js.map +1 -1
- package/decorator/relations/RelationCount.d.ts +2 -1
- package/decorator/relations/RelationCount.js +2 -1
- package/decorator/relations/RelationCount.js.map +1 -1
- package/driver/DriverFactory.js +2 -2
- package/driver/DriverFactory.js.map +1 -1
- package/driver/DriverUtils.js +4 -5
- package/driver/DriverUtils.js.map +1 -1
- package/driver/aurora-mysql/AuroraMysqlDriver.js +3 -3
- package/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
- package/driver/aurora-mysql/AuroraMysqlQueryRunner.js +1 -1
- package/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
- package/driver/cockroachdb/CockroachDriver.js +6 -8
- package/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/driver/cockroachdb/CockroachQueryRunner.d.ts +1 -1
- package/driver/cockroachdb/CockroachQueryRunner.js +7 -4
- package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/driver/cordova/CordovaQueryRunner.js +1 -1
- package/driver/cordova/CordovaQueryRunner.js.map +1 -1
- package/driver/expo/ExpoDriver.d.ts +2 -12
- package/driver/expo/ExpoDriver.js +8 -54
- package/driver/expo/ExpoDriver.js.map +1 -1
- package/driver/expo/ExpoDriverFactory.d.ts +9 -0
- package/driver/expo/ExpoDriverFactory.js +22 -0
- package/driver/expo/ExpoDriverFactory.js.map +1 -0
- package/driver/expo/ExpoQueryRunner.d.ts +0 -48
- package/driver/expo/ExpoQueryRunner.js +36 -141
- package/driver/expo/ExpoQueryRunner.js.map +1 -1
- package/driver/expo/legacy/ExpoLegacyDriver.d.ts +21 -0
- package/driver/expo/legacy/ExpoLegacyDriver.js +75 -0
- package/driver/expo/legacy/ExpoLegacyDriver.js.map +1 -0
- package/driver/expo/legacy/ExpoLegacyQueryRunner.d.ts +57 -0
- package/driver/expo/legacy/ExpoLegacyQueryRunner.js +169 -0
- package/driver/expo/legacy/ExpoLegacyQueryRunner.js.map +1 -0
- package/driver/mongodb/MongoConnectionOptions.d.ts +111 -142
- package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
- package/driver/mongodb/MongoDriver.d.ts +2 -3
- package/driver/mongodb/MongoDriver.js +57 -65
- package/driver/mongodb/MongoDriver.js.map +1 -1
- package/driver/mysql/MysqlDriver.js +10 -12
- package/driver/mysql/MysqlDriver.js.map +1 -1
- package/driver/mysql/MysqlQueryRunner.d.ts +1 -1
- package/driver/mysql/MysqlQueryRunner.js +9 -3
- package/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/driver/oracle/OracleDriver.js +3 -3
- package/driver/oracle/OracleDriver.js.map +1 -1
- package/driver/oracle/OracleQueryRunner.js +2 -2
- package/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/driver/postgres/PostgresDriver.d.ts +2 -1
- package/driver/postgres/PostgresDriver.js +15 -20
- package/driver/postgres/PostgresDriver.js.map +1 -1
- package/driver/postgres/PostgresQueryRunner.d.ts +1 -1
- package/driver/postgres/PostgresQueryRunner.js +18 -8
- package/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/driver/react-native/ReactNativeDriver.js +1 -1
- package/driver/react-native/ReactNativeDriver.js.map +1 -1
- package/driver/react-native/ReactNativeQueryRunner.js +1 -1
- package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
- package/driver/sap/SapDriver.d.ts +4 -0
- package/driver/sap/SapDriver.js +50 -43
- package/driver/sap/SapDriver.js.map +1 -1
- package/driver/sap/SapQueryRunner.d.ts +7 -0
- package/driver/sap/SapQueryRunner.js +19 -22
- package/driver/sap/SapQueryRunner.js.map +1 -1
- package/driver/spanner/SpannerDriver.js +3 -3
- package/driver/spanner/SpannerDriver.js.map +1 -1
- package/driver/spanner/SpannerQueryRunner.js +7 -7
- package/driver/spanner/SpannerQueryRunner.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteDriver.js +1 -1
- package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +7 -7
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/driver/sqljs/SqljsDriver.js +1 -1
- package/driver/sqljs/SqljsDriver.js.map +1 -1
- package/driver/sqlserver/SqlServerDriver.js +3 -3
- package/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/driver/sqlserver/SqlServerQueryRunner.js +4 -4
- package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/driver/types/ColumnTypes.d.ts +1 -1
- package/driver/types/ColumnTypes.js.map +1 -1
- package/entity-manager/EntityManager.js.map +1 -1
- package/entity-manager/MongoEntityManager.js +1 -1
- package/entity-manager/MongoEntityManager.js.map +1 -1
- package/find-options/FindOptionsSelect.d.ts +1 -1
- package/find-options/FindOptionsSelect.js.map +1 -1
- package/find-options/FindOptionsUtils.js +1 -1
- package/find-options/FindOptionsUtils.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/logger/AdvancedConsoleLogger.js +1 -1
- package/logger/AdvancedConsoleLogger.js.map +1 -1
- package/logger/DebugLogger.js +1 -1
- package/logger/DebugLogger.js.map +1 -1
- package/logger/FileLogger.js +1 -1
- package/logger/FileLogger.js.map +1 -1
- package/logger/SimpleConsoleLogger.js +1 -1
- package/logger/SimpleConsoleLogger.js.map +1 -1
- package/metadata/ColumnMetadata.js +1 -1
- package/metadata/ColumnMetadata.js.map +1 -1
- package/metadata/EmbeddedMetadata.js +1 -1
- package/metadata/EmbeddedMetadata.js.map +1 -1
- package/migration/MigrationExecutor.js +4 -4
- package/migration/MigrationExecutor.js.map +1 -1
- package/package.json +1 -1
- package/persistence/EntityPersistExecutor.js +2 -2
- package/persistence/EntityPersistExecutor.js.map +1 -1
- package/persistence/SubjectDatabaseEntityLoader.js +1 -1
- package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
- package/persistence/SubjectExecutor.js +1 -1
- package/persistence/SubjectExecutor.js.map +1 -1
- package/persistence/SubjectTopologicalSorter.js +5 -5
- package/persistence/SubjectTopologicalSorter.js.map +1 -1
- package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +1 -1
- package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
- package/persistence/tree/NestedSetSubjectExecutor.js +2 -2
- package/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
- package/query-builder/InsertQueryBuilder.js +3 -3
- package/query-builder/InsertQueryBuilder.js.map +1 -1
- package/query-builder/JoinAttribute.js +2 -2
- package/query-builder/JoinAttribute.js.map +1 -1
- package/query-builder/QueryBuilder.js +2 -2
- package/query-builder/QueryBuilder.js.map +1 -1
- package/query-builder/RelationIdLoader.js +2 -2
- package/query-builder/RelationIdLoader.js.map +1 -1
- package/query-builder/SelectQueryBuilder.js +27 -14
- package/query-builder/SelectQueryBuilder.js.map +1 -1
- package/query-builder/SoftDeleteQueryBuilder.js +1 -1
- package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
- package/query-builder/UpdateQueryBuilder.js +3 -3
- package/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +2 -2
- package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
- package/repository/Repository.js.map +1 -1
- package/subscriber/event/QueryEvent.d.ts +1 -1
- package/subscriber/event/QueryEvent.js.map +1 -1
- package/util/DepGraph.js +13 -13
- package/util/DepGraph.js.map +1 -1
- package/util/DirectoryExportedClassesLoader.js +2 -2
- package/util/DirectoryExportedClassesLoader.js.map +1 -1
- package/util/InstanceChecker.js.map +1 -1
- package/util/ObjectUtils.d.ts +2 -2
- package/util/ObjectUtils.js.map +1 -1
- package/util/OrmUtils.js +4 -4
- package/util/OrmUtils.js.map +1 -1
- package/util/RandomGenerator.js +6 -6
- package/util/RandomGenerator.js.map +1 -1
- package/util/VersionUtils.d.ts +1 -2
- package/util/VersionUtils.js +14 -7
- package/util/VersionUtils.js.map +1 -1
- package/util/escapeRegExp.d.ts +1 -1
- package/util/escapeRegExp.js.map +1 -1
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { AbstractSqliteDriver } from "../../sqlite-abstract/AbstractSqliteDriver";
|
|
2
|
+
import { ExpoLegacyQueryRunner } from "./ExpoLegacyQueryRunner";
|
|
3
|
+
export class ExpoLegacyDriver extends AbstractSqliteDriver {
|
|
4
|
+
// -------------------------------------------------------------------------
|
|
5
|
+
// Constructor
|
|
6
|
+
// -------------------------------------------------------------------------
|
|
7
|
+
constructor(connection) {
|
|
8
|
+
super(connection);
|
|
9
|
+
this.database = this.options.database;
|
|
10
|
+
// load sqlite package
|
|
11
|
+
this.sqlite = this.options.driver;
|
|
12
|
+
}
|
|
13
|
+
// -------------------------------------------------------------------------
|
|
14
|
+
// Public Methods
|
|
15
|
+
// -------------------------------------------------------------------------
|
|
16
|
+
/**
|
|
17
|
+
* Closes connection with database.
|
|
18
|
+
*/
|
|
19
|
+
async disconnect() {
|
|
20
|
+
return new Promise((ok, fail) => {
|
|
21
|
+
try {
|
|
22
|
+
this.queryRunner = undefined;
|
|
23
|
+
this.databaseConnection._db.close();
|
|
24
|
+
this.databaseConnection = undefined;
|
|
25
|
+
ok();
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
fail(error);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Creates a query runner used to execute database queries.
|
|
34
|
+
*/
|
|
35
|
+
createQueryRunner(mode) {
|
|
36
|
+
if (!this.queryRunner)
|
|
37
|
+
this.queryRunner = new ExpoLegacyQueryRunner(this);
|
|
38
|
+
return this.queryRunner;
|
|
39
|
+
}
|
|
40
|
+
// -------------------------------------------------------------------------
|
|
41
|
+
// Protected Methods
|
|
42
|
+
// -------------------------------------------------------------------------
|
|
43
|
+
/**
|
|
44
|
+
* Creates connection with the database.
|
|
45
|
+
*/
|
|
46
|
+
createDatabaseConnection() {
|
|
47
|
+
return new Promise((ok, fail) => {
|
|
48
|
+
try {
|
|
49
|
+
const databaseConnection = this.sqlite.openDatabase(this.options.database);
|
|
50
|
+
/*
|
|
51
|
+
// we need to enable foreign keys in sqlite to make sure all foreign key related features
|
|
52
|
+
// working properly. this also makes onDelete work with sqlite.
|
|
53
|
+
*/
|
|
54
|
+
databaseConnection.transaction((tsx) => {
|
|
55
|
+
tsx.executeSql(`PRAGMA foreign_keys = ON`, [], (t, result) => {
|
|
56
|
+
ok(databaseConnection);
|
|
57
|
+
}, (t, err) => {
|
|
58
|
+
fail({ transaction: t, error: err });
|
|
59
|
+
});
|
|
60
|
+
}, (err) => {
|
|
61
|
+
fail(err);
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
fail(error);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
//# sourceMappingURL=ExpoLegacyDriver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../browser/src/driver/expo/legacy/ExpoLegacyDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAA;AAEjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAK/D,MAAM,OAAO,gBAAiB,SAAQ,oBAAoB;IAGtD,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,YAAY,UAAsB;QAC9B,KAAK,CAAC,UAAU,CAAC,CAAA;QAEjB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAA;QAErC,sBAAsB;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA;IACrC,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;OAEG;IACH,KAAK,CAAC,UAAU;QACZ,OAAO,IAAI,OAAO,CAAO,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE;YAClC,IAAI,CAAC;gBACD,IAAI,CAAC,WAAW,GAAG,SAAS,CAAA;gBAC5B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;gBACnC,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAA;gBACnC,EAAE,EAAE,CAAA;YACR,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,KAAK,CAAC,CAAA;YACf,CAAC;QACL,CAAC,CAAC,CAAA;IACN,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,IAAqB;QACnC,IAAI,CAAC,IAAI,CAAC,WAAW;YACjB,IAAI,CAAC,WAAW,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAA;QAEtD,OAAO,IAAI,CAAC,WAAW,CAAA;IAC3B,CAAC;IAED,4EAA4E;IAC5E,oBAAoB;IACpB,4EAA4E;IAE5E;;OAEG;IACO,wBAAwB;QAC9B,OAAO,IAAI,OAAO,CAAO,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE;YAClC,IAAI,CAAC;gBACD,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAC/C,IAAI,CAAC,OAAO,CAAC,QAAQ,CACxB,CAAA;gBACD;;;kBAGE;gBACF,kBAAkB,CAAC,WAAW,CAC1B,CAAC,GAAQ,EAAE,EAAE;oBACT,GAAG,CAAC,UAAU,CACV,0BAA0B,EAC1B,EAAE,EACF,CAAC,CAAM,EAAE,MAAW,EAAE,EAAE;wBACpB,EAAE,CAAC,kBAAkB,CAAC,CAAA;oBAC1B,CAAC,EACD,CAAC,CAAM,EAAE,GAAQ,EAAE,EAAE;wBACjB,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;oBACxC,CAAC,CACJ,CAAA;gBACL,CAAC,EACD,CAAC,GAAQ,EAAE,EAAE;oBACT,IAAI,CAAC,GAAG,CAAC,CAAA;gBACb,CAAC,CACJ,CAAA;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,KAAK,CAAC,CAAA;YACf,CAAC;QACL,CAAC,CAAC,CAAA;IACN,CAAC;CACJ","file":"ExpoLegacyDriver.js","sourcesContent":["import { AbstractSqliteDriver } from \"../../sqlite-abstract/AbstractSqliteDriver\"\nimport { ExpoConnectionOptions } from \"../ExpoConnectionOptions\"\nimport { ExpoLegacyQueryRunner } from \"./ExpoLegacyQueryRunner\"\nimport { QueryRunner } from \"../../../query-runner/QueryRunner\"\nimport { DataSource } from \"../../../data-source/DataSource\"\nimport { ReplicationMode } from \"../../types/ReplicationMode\"\n\nexport class ExpoLegacyDriver extends AbstractSqliteDriver {\n options: ExpoConnectionOptions\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(connection: DataSource) {\n super(connection)\n\n this.database = this.options.database\n\n // load sqlite package\n this.sqlite = this.options.driver\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Closes connection with database.\n */\n async disconnect(): Promise<void> {\n return new Promise<void>((ok, fail) => {\n try {\n this.queryRunner = undefined\n this.databaseConnection._db.close()\n this.databaseConnection = undefined\n ok()\n } catch (error) {\n fail(error)\n }\n })\n }\n\n /**\n * Creates a query runner used to execute database queries.\n */\n createQueryRunner(mode: ReplicationMode): QueryRunner {\n if (!this.queryRunner)\n this.queryRunner = new ExpoLegacyQueryRunner(this)\n\n return this.queryRunner\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates connection with the database.\n */\n protected createDatabaseConnection() {\n return new Promise<void>((ok, fail) => {\n try {\n const databaseConnection = this.sqlite.openDatabase(\n this.options.database,\n )\n /*\n // we need to enable foreign keys in sqlite to make sure all foreign key related features\n // working properly. this also makes onDelete work with sqlite.\n */\n databaseConnection.transaction(\n (tsx: any) => {\n tsx.executeSql(\n `PRAGMA foreign_keys = ON`,\n [],\n (t: any, result: any) => {\n ok(databaseConnection)\n },\n (t: any, err: any) => {\n fail({ transaction: t, error: err })\n },\n )\n },\n (err: any) => {\n fail(err)\n },\n )\n } catch (error) {\n fail(error)\n }\n })\n }\n}\n"],"sourceRoot":"../../.."}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { AbstractSqliteQueryRunner } from "../../sqlite-abstract/AbstractSqliteQueryRunner";
|
|
2
|
+
import { ExpoLegacyDriver } from "./ExpoLegacyDriver";
|
|
3
|
+
/**
|
|
4
|
+
* Runs queries on a single sqlite database connection.
|
|
5
|
+
*/
|
|
6
|
+
export declare class ExpoLegacyQueryRunner extends AbstractSqliteQueryRunner {
|
|
7
|
+
/**
|
|
8
|
+
* Database driver used by connection.
|
|
9
|
+
*/
|
|
10
|
+
driver: ExpoLegacyDriver;
|
|
11
|
+
/**
|
|
12
|
+
* Database transaction object
|
|
13
|
+
*/
|
|
14
|
+
private transaction?;
|
|
15
|
+
constructor(driver: ExpoLegacyDriver);
|
|
16
|
+
/**
|
|
17
|
+
* Starts transaction. Within Expo, all database operations happen in a
|
|
18
|
+
* transaction context, so issuing a `BEGIN TRANSACTION` command is
|
|
19
|
+
* redundant and will result in the following error:
|
|
20
|
+
*
|
|
21
|
+
* `Error: Error code 1: cannot start a transaction within a transaction`
|
|
22
|
+
*
|
|
23
|
+
* Instead, we keep track of a `Transaction` object in `this.transaction`
|
|
24
|
+
* and continue using the same object until we wish to commit the
|
|
25
|
+
* transaction.
|
|
26
|
+
*/
|
|
27
|
+
startTransaction(): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Commits transaction.
|
|
30
|
+
* Error will be thrown if transaction was not started.
|
|
31
|
+
* Since Expo will automatically commit the transaction once all the
|
|
32
|
+
* callbacks of the transaction object have been completed, "committing" a
|
|
33
|
+
* transaction in this driver's context means that we delete the transaction
|
|
34
|
+
* object and set the stage for the next transaction.
|
|
35
|
+
*/
|
|
36
|
+
commitTransaction(): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Rollbacks transaction.
|
|
39
|
+
* Error will be thrown if transaction was not started.
|
|
40
|
+
* This method's functionality is identical to `commitTransaction()` because
|
|
41
|
+
* the transaction lifecycle is handled within the Expo transaction object.
|
|
42
|
+
* Issuing separate statements for `COMMIT` or `ROLLBACK` aren't necessary.
|
|
43
|
+
*/
|
|
44
|
+
rollbackTransaction(): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Called before migrations are run.
|
|
47
|
+
*/
|
|
48
|
+
beforeMigration(): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* Called after migrations are run.
|
|
51
|
+
*/
|
|
52
|
+
afterMigration(): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Executes a given SQL query.
|
|
55
|
+
*/
|
|
56
|
+
query(query: string, parameters?: any[], useStructuredResult?: boolean): Promise<any>;
|
|
57
|
+
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { QueryRunnerAlreadyReleasedError } from "../../../error/QueryRunnerAlreadyReleasedError";
|
|
2
|
+
import { QueryFailedError } from "../../../error/QueryFailedError";
|
|
3
|
+
import { AbstractSqliteQueryRunner } from "../../sqlite-abstract/AbstractSqliteQueryRunner";
|
|
4
|
+
import { TransactionNotStartedError } from "../../../error/TransactionNotStartedError";
|
|
5
|
+
import { Broadcaster } from "../../../subscriber/Broadcaster";
|
|
6
|
+
import { QueryResult } from "../../../query-runner/QueryResult";
|
|
7
|
+
import { BroadcasterResult } from "../../../subscriber/BroadcasterResult";
|
|
8
|
+
/**
|
|
9
|
+
* Runs queries on a single sqlite database connection.
|
|
10
|
+
*/
|
|
11
|
+
export class ExpoLegacyQueryRunner extends AbstractSqliteQueryRunner {
|
|
12
|
+
// -------------------------------------------------------------------------
|
|
13
|
+
// Constructor
|
|
14
|
+
// -------------------------------------------------------------------------
|
|
15
|
+
constructor(driver) {
|
|
16
|
+
super();
|
|
17
|
+
this.driver = driver;
|
|
18
|
+
this.connection = driver.connection;
|
|
19
|
+
this.broadcaster = new Broadcaster(this);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Starts transaction. Within Expo, all database operations happen in a
|
|
23
|
+
* transaction context, so issuing a `BEGIN TRANSACTION` command is
|
|
24
|
+
* redundant and will result in the following error:
|
|
25
|
+
*
|
|
26
|
+
* `Error: Error code 1: cannot start a transaction within a transaction`
|
|
27
|
+
*
|
|
28
|
+
* Instead, we keep track of a `Transaction` object in `this.transaction`
|
|
29
|
+
* and continue using the same object until we wish to commit the
|
|
30
|
+
* transaction.
|
|
31
|
+
*/
|
|
32
|
+
async startTransaction() {
|
|
33
|
+
this.isTransactionActive = true;
|
|
34
|
+
try {
|
|
35
|
+
await this.broadcaster.broadcast("BeforeTransactionStart");
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
this.isTransactionActive = false;
|
|
39
|
+
throw err;
|
|
40
|
+
}
|
|
41
|
+
this.transactionDepth += 1;
|
|
42
|
+
await this.broadcaster.broadcast("AfterTransactionStart");
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Commits transaction.
|
|
46
|
+
* Error will be thrown if transaction was not started.
|
|
47
|
+
* Since Expo will automatically commit the transaction once all the
|
|
48
|
+
* callbacks of the transaction object have been completed, "committing" a
|
|
49
|
+
* transaction in this driver's context means that we delete the transaction
|
|
50
|
+
* object and set the stage for the next transaction.
|
|
51
|
+
*/
|
|
52
|
+
async commitTransaction() {
|
|
53
|
+
if (!this.isTransactionActive &&
|
|
54
|
+
typeof this.transaction === "undefined")
|
|
55
|
+
throw new TransactionNotStartedError();
|
|
56
|
+
await this.broadcaster.broadcast("BeforeTransactionCommit");
|
|
57
|
+
this.transaction = undefined;
|
|
58
|
+
this.isTransactionActive = false;
|
|
59
|
+
this.transactionDepth -= 1;
|
|
60
|
+
await this.broadcaster.broadcast("AfterTransactionCommit");
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Rollbacks transaction.
|
|
64
|
+
* Error will be thrown if transaction was not started.
|
|
65
|
+
* This method's functionality is identical to `commitTransaction()` because
|
|
66
|
+
* the transaction lifecycle is handled within the Expo transaction object.
|
|
67
|
+
* Issuing separate statements for `COMMIT` or `ROLLBACK` aren't necessary.
|
|
68
|
+
*/
|
|
69
|
+
async rollbackTransaction() {
|
|
70
|
+
if (!this.isTransactionActive &&
|
|
71
|
+
typeof this.transaction === "undefined")
|
|
72
|
+
throw new TransactionNotStartedError();
|
|
73
|
+
await this.broadcaster.broadcast("BeforeTransactionRollback");
|
|
74
|
+
this.transaction = undefined;
|
|
75
|
+
this.isTransactionActive = false;
|
|
76
|
+
this.transactionDepth -= 1;
|
|
77
|
+
await this.broadcaster.broadcast("AfterTransactionRollback");
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Called before migrations are run.
|
|
81
|
+
*/
|
|
82
|
+
async beforeMigration() {
|
|
83
|
+
const databaseConnection = await this.connect();
|
|
84
|
+
return new Promise((ok, fail) => {
|
|
85
|
+
databaseConnection.exec([{ sql: "PRAGMA foreign_keys = OFF", args: [] }], false, (err) => (err ? fail(err) : ok()));
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Called after migrations are run.
|
|
90
|
+
*/
|
|
91
|
+
async afterMigration() {
|
|
92
|
+
const databaseConnection = await this.connect();
|
|
93
|
+
return new Promise((ok, fail) => {
|
|
94
|
+
databaseConnection.exec([{ sql: "PRAGMA foreign_keys = ON", args: [] }], false, (err) => (err ? fail(err) : ok()));
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Executes a given SQL query.
|
|
99
|
+
*/
|
|
100
|
+
async query(query, parameters, useStructuredResult = false) {
|
|
101
|
+
if (this.isReleased)
|
|
102
|
+
throw new QueryRunnerAlreadyReleasedError();
|
|
103
|
+
return new Promise(async (ok, fail) => {
|
|
104
|
+
const databaseConnection = await this.connect();
|
|
105
|
+
const broadcasterResult = new BroadcasterResult();
|
|
106
|
+
this.driver.connection.logger.logQuery(query, parameters, this);
|
|
107
|
+
this.broadcaster.broadcastBeforeQueryEvent(broadcasterResult, query, parameters);
|
|
108
|
+
const queryStartTime = +new Date();
|
|
109
|
+
// All Expo SQL queries are executed in a transaction context
|
|
110
|
+
databaseConnection.transaction(async (transaction) => {
|
|
111
|
+
if (typeof this.transaction === "undefined") {
|
|
112
|
+
await this.startTransaction();
|
|
113
|
+
this.transaction = transaction;
|
|
114
|
+
}
|
|
115
|
+
this.transaction.executeSql(query, parameters, async (t, raw) => {
|
|
116
|
+
// log slow queries if maxQueryExecution time is set
|
|
117
|
+
const maxQueryExecutionTime = this.driver.options.maxQueryExecutionTime;
|
|
118
|
+
const queryEndTime = +new Date();
|
|
119
|
+
const queryExecutionTime = queryEndTime - queryStartTime;
|
|
120
|
+
this.broadcaster.broadcastAfterQueryEvent(broadcasterResult, query, parameters, true, queryExecutionTime, raw, undefined);
|
|
121
|
+
await broadcasterResult.wait();
|
|
122
|
+
if (maxQueryExecutionTime &&
|
|
123
|
+
queryExecutionTime > maxQueryExecutionTime) {
|
|
124
|
+
this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, this);
|
|
125
|
+
}
|
|
126
|
+
const result = new QueryResult();
|
|
127
|
+
if (raw?.hasOwnProperty("rowsAffected")) {
|
|
128
|
+
result.affected = raw.rowsAffected;
|
|
129
|
+
}
|
|
130
|
+
if (raw?.hasOwnProperty("rows")) {
|
|
131
|
+
let resultSet = [];
|
|
132
|
+
for (let i = 0; i < raw.rows.length; i++) {
|
|
133
|
+
resultSet.push(raw.rows.item(i));
|
|
134
|
+
}
|
|
135
|
+
result.raw = resultSet;
|
|
136
|
+
result.records = resultSet;
|
|
137
|
+
}
|
|
138
|
+
// return id of inserted row, if query was insert statement.
|
|
139
|
+
if (query.startsWith("INSERT INTO")) {
|
|
140
|
+
result.raw = raw.insertId;
|
|
141
|
+
}
|
|
142
|
+
if (useStructuredResult) {
|
|
143
|
+
ok(result);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
ok(result.raw);
|
|
147
|
+
}
|
|
148
|
+
}, async (t, err) => {
|
|
149
|
+
this.driver.connection.logger.logQueryError(err, query, parameters, this);
|
|
150
|
+
this.broadcaster.broadcastAfterQueryEvent(broadcasterResult, query, parameters, false, undefined, undefined, err);
|
|
151
|
+
await broadcasterResult.wait();
|
|
152
|
+
fail(new QueryFailedError(query, parameters, err));
|
|
153
|
+
});
|
|
154
|
+
}, async (err) => {
|
|
155
|
+
await this.rollbackTransaction();
|
|
156
|
+
fail(err);
|
|
157
|
+
}, () => {
|
|
158
|
+
this.isTransactionActive = false;
|
|
159
|
+
this.transaction = undefined;
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
//# sourceMappingURL=ExpoLegacyQueryRunner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../browser/src/driver/expo/legacy/ExpoLegacyQueryRunner.ts"],"names":[],"mappings":"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","file":"ExpoLegacyQueryRunner.js","sourcesContent":["import { QueryRunnerAlreadyReleasedError } from \"../../../error/QueryRunnerAlreadyReleasedError\"\nimport { QueryFailedError } from \"../../../error/QueryFailedError\"\nimport { AbstractSqliteQueryRunner } from \"../../sqlite-abstract/AbstractSqliteQueryRunner\"\nimport { TransactionNotStartedError } from \"../../../error/TransactionNotStartedError\"\nimport { ExpoLegacyDriver } from \"./ExpoLegacyDriver\"\nimport { Broadcaster } from \"../../../subscriber/Broadcaster\"\nimport { QueryResult } from \"../../../query-runner/QueryResult\"\nimport { BroadcasterResult } from \"../../../subscriber/BroadcasterResult\"\n\n// Needed to satisfy the Typescript compiler\ninterface IResultSet {\n insertId: number | undefined\n rowsAffected: number\n rows: {\n length: number\n item: (idx: number) => any\n _array: any[]\n }\n}\ninterface ITransaction {\n executeSql: (\n sql: string,\n args: any[] | undefined,\n ok: (tsx: ITransaction, resultSet: IResultSet) => void,\n fail: (tsx: ITransaction, err: any) => void,\n ) => void\n}\n\n/**\n * Runs queries on a single sqlite database connection.\n */\nexport class ExpoLegacyQueryRunner extends AbstractSqliteQueryRunner {\n /**\n * Database driver used by connection.\n */\n driver: ExpoLegacyDriver\n\n /**\n * Database transaction object\n */\n private transaction?: ITransaction\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(driver: ExpoLegacyDriver) {\n super()\n this.driver = driver\n this.connection = driver.connection\n this.broadcaster = new Broadcaster(this)\n }\n\n /**\n * Starts transaction. Within Expo, all database operations happen in a\n * transaction context, so issuing a `BEGIN TRANSACTION` command is\n * redundant and will result in the following error:\n *\n * `Error: Error code 1: cannot start a transaction within a transaction`\n *\n * Instead, we keep track of a `Transaction` object in `this.transaction`\n * and continue using the same object until we wish to commit the\n * transaction.\n */\n async startTransaction(): Promise<void> {\n this.isTransactionActive = true\n try {\n await this.broadcaster.broadcast(\"BeforeTransactionStart\")\n } catch (err) {\n this.isTransactionActive = false\n throw err\n }\n\n this.transactionDepth += 1\n\n await this.broadcaster.broadcast(\"AfterTransactionStart\")\n }\n\n /**\n * Commits transaction.\n * Error will be thrown if transaction was not started.\n * Since Expo will automatically commit the transaction once all the\n * callbacks of the transaction object have been completed, \"committing\" a\n * transaction in this driver's context means that we delete the transaction\n * object and set the stage for the next transaction.\n */\n async commitTransaction(): Promise<void> {\n if (\n !this.isTransactionActive &&\n typeof this.transaction === \"undefined\"\n )\n throw new TransactionNotStartedError()\n\n await this.broadcaster.broadcast(\"BeforeTransactionCommit\")\n\n this.transaction = undefined\n this.isTransactionActive = false\n\n this.transactionDepth -= 1\n\n await this.broadcaster.broadcast(\"AfterTransactionCommit\")\n }\n\n /**\n * Rollbacks transaction.\n * Error will be thrown if transaction was not started.\n * This method's functionality is identical to `commitTransaction()` because\n * the transaction lifecycle is handled within the Expo transaction object.\n * Issuing separate statements for `COMMIT` or `ROLLBACK` aren't necessary.\n */\n async rollbackTransaction(): Promise<void> {\n if (\n !this.isTransactionActive &&\n typeof this.transaction === \"undefined\"\n )\n throw new TransactionNotStartedError()\n\n await this.broadcaster.broadcast(\"BeforeTransactionRollback\")\n\n this.transaction = undefined\n this.isTransactionActive = false\n\n this.transactionDepth -= 1\n\n await this.broadcaster.broadcast(\"AfterTransactionRollback\")\n }\n\n /**\n * Called before migrations are run.\n */\n async beforeMigration(): Promise<void> {\n const databaseConnection = await this.connect()\n return new Promise((ok, fail) => {\n databaseConnection.exec(\n [{ sql: \"PRAGMA foreign_keys = OFF\", args: [] }],\n false,\n (err: any) => (err ? fail(err) : ok()),\n )\n })\n }\n\n /**\n * Called after migrations are run.\n */\n async afterMigration(): Promise<void> {\n const databaseConnection = await this.connect()\n return new Promise((ok, fail) => {\n databaseConnection.exec(\n [{ sql: \"PRAGMA foreign_keys = ON\", args: [] }],\n false,\n (err: any) => (err ? fail(err) : ok()),\n )\n })\n }\n\n /**\n * Executes a given SQL query.\n */\n async query(\n query: string,\n parameters?: any[],\n useStructuredResult = false,\n ): Promise<any> {\n if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()\n\n return new Promise<any>(async (ok, fail) => {\n const databaseConnection = await this.connect()\n const broadcasterResult = new BroadcasterResult()\n\n this.driver.connection.logger.logQuery(query, parameters, this)\n this.broadcaster.broadcastBeforeQueryEvent(\n broadcasterResult,\n query,\n parameters,\n )\n\n const queryStartTime = +new Date()\n // All Expo SQL queries are executed in a transaction context\n databaseConnection.transaction(\n async (transaction: ITransaction) => {\n if (typeof this.transaction === \"undefined\") {\n await this.startTransaction()\n this.transaction = transaction\n }\n this.transaction.executeSql(\n query,\n parameters,\n async (t: ITransaction, raw: IResultSet) => {\n // log slow queries if maxQueryExecution time is set\n const maxQueryExecutionTime =\n this.driver.options.maxQueryExecutionTime\n const queryEndTime = +new Date()\n const queryExecutionTime =\n queryEndTime - queryStartTime\n\n this.broadcaster.broadcastAfterQueryEvent(\n broadcasterResult,\n query,\n parameters,\n true,\n queryExecutionTime,\n raw,\n undefined,\n )\n await broadcasterResult.wait()\n\n if (\n maxQueryExecutionTime &&\n queryExecutionTime > maxQueryExecutionTime\n ) {\n this.driver.connection.logger.logQuerySlow(\n queryExecutionTime,\n query,\n parameters,\n this,\n )\n }\n\n const result = new QueryResult()\n\n if (raw?.hasOwnProperty(\"rowsAffected\")) {\n result.affected = raw.rowsAffected\n }\n\n if (raw?.hasOwnProperty(\"rows\")) {\n let resultSet = []\n for (let i = 0; i < raw.rows.length; i++) {\n resultSet.push(raw.rows.item(i))\n }\n\n result.raw = resultSet\n result.records = resultSet\n }\n\n // return id of inserted row, if query was insert statement.\n if (query.startsWith(\"INSERT INTO\")) {\n result.raw = raw.insertId\n }\n\n if (useStructuredResult) {\n ok(result)\n } else {\n ok(result.raw)\n }\n },\n async (t: ITransaction, err: any) => {\n this.driver.connection.logger.logQueryError(\n err,\n query,\n parameters,\n this,\n )\n this.broadcaster.broadcastAfterQueryEvent(\n broadcasterResult,\n query,\n parameters,\n false,\n undefined,\n undefined,\n err,\n )\n await broadcasterResult.wait()\n\n fail(new QueryFailedError(query, parameters, err))\n },\n )\n },\n async (err: any) => {\n await this.rollbackTransaction()\n fail(err)\n },\n () => {\n this.isTransactionActive = false\n this.transaction = undefined\n },\n )\n })\n }\n}\n"],"sourceRoot":"../../.."}
|