typeorm 0.3.26-dev.f2d2236 → 0.3.26
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 +16 -1113
- package/browser/cache/RedisQueryResultCache.d.ts +13 -0
- package/browser/cache/RedisQueryResultCache.js +105 -38
- package/browser/cache/RedisQueryResultCache.js.map +1 -1
- package/browser/connection/ConnectionOptionsReader.js +1 -1
- package/browser/connection/ConnectionOptionsReader.js.map +1 -1
- package/browser/connection/options-reader/ConnectionOptionsEnvReader.d.ts +1 -1
- package/browser/connection/options-reader/ConnectionOptionsEnvReader.js +1 -1
- package/browser/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
- package/browser/decorator/options/ColumnOptions.d.ts +6 -0
- package/browser/decorator/options/ColumnOptions.js.map +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlDriver.d.ts +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js +12 -21
- package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
- package/browser/driver/better-sqlite3/BetterSqlite3Driver.js +2 -2
- package/browser/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
- package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js +3 -3
- package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachDriver.js +2 -2
- package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.js +4 -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/legacy/ExpoLegacyQueryRunner.js +1 -1
- package/browser/driver/expo/legacy/ExpoLegacyQueryRunner.js.map +1 -1
- package/browser/driver/mongodb/MongoConnectionOptions.d.ts +9 -9
- package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
- package/browser/driver/mongodb/MongoDriver.d.ts +1 -1
- package/browser/driver/mongodb/bson.typings.d.ts +0 -4
- package/browser/driver/mongodb/bson.typings.js +1 -1
- package/browser/driver/mongodb/bson.typings.js.map +1 -1
- package/browser/driver/mongodb/typings.d.ts +7 -10
- package/browser/driver/mongodb/typings.js +2 -2
- package/browser/driver/mongodb/typings.js.map +1 -1
- package/browser/driver/mysql/MysqlDriver.d.ts +1 -1
- package/browser/driver/mysql/MysqlDriver.js +3 -1
- package/browser/driver/mysql/MysqlDriver.js.map +1 -1
- package/browser/driver/mysql/MysqlQueryRunner.js +4 -4
- package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/browser/driver/nativescript/NativescriptQueryRunner.js +1 -1
- package/browser/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
- package/browser/driver/oracle/OracleQueryRunner.js +1 -1
- package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/browser/driver/postgres/PostgresDriver.js +3 -5
- package/browser/driver/postgres/PostgresDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.js +5 -5
- package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/browser/driver/react-native/ReactNativeDriver.d.ts +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/SapConnectionOptions.d.ts +33 -8
- package/browser/driver/sap/SapConnectionOptions.js.map +1 -1
- package/browser/driver/sap/SapDriver.d.ts +21 -22
- package/browser/driver/sap/SapDriver.js +127 -115
- package/browser/driver/sap/SapDriver.js.map +1 -1
- package/browser/driver/sap/SapQueryRunner.js +59 -63
- package/browser/driver/sap/SapQueryRunner.js.map +1 -1
- package/browser/driver/spanner/SpannerDriver.d.ts +1 -1
- package/browser/driver/spanner/SpannerQueryRunner.js +3 -3
- package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -1
- package/browser/driver/sqlite/SqliteDriver.js +1 -1
- package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +2 -2
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/browser/driver/sqljs/SqljsDriver.d.ts +2 -1
- package/browser/driver/sqlserver/SqlServerQueryRunner.js +1 -1
- 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/MongoEntityManager.js +3 -3
- package/browser/entity-manager/MongoEntityManager.js.map +1 -1
- package/browser/entity-schema/EntitySchemaColumnOptions.d.ts +10 -0
- package/browser/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaTransformer.js +3 -0
- package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/browser/error/DriverPackageNotInstalledError.js +1 -2
- package/browser/error/DriverPackageNotInstalledError.js.map +1 -1
- package/browser/logger/FormattedConsoleLogger.js +1 -1
- package/browser/logger/FormattedConsoleLogger.js.map +1 -1
- package/browser/metadata/ColumnMetadata.d.ts +1 -1
- package/browser/metadata/ColumnMetadata.js.map +1 -1
- package/browser/metadata-builder/EntityMetadataBuilder.js +8 -1
- package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/browser/metadata-builder/EntityMetadataValidator.js +2 -4
- package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/browser/persistence/SubjectExecutor.js +4 -10
- package/browser/persistence/SubjectExecutor.js.map +1 -1
- package/browser/persistence/SubjectTopologicalSorter.js +5 -4
- package/browser/persistence/SubjectTopologicalSorter.js.map +1 -1
- package/browser/platform/BrowserPlatformTools.js +7 -3
- package/browser/platform/BrowserPlatformTools.js.map +1 -1
- package/browser/platform/PlatformTools.js +0 -2
- package/browser/platform/PlatformTools.js.map +1 -1
- package/browser/query-builder/QueryExpressionMap.js +1 -0
- package/browser/query-builder/QueryExpressionMap.js.map +1 -1
- package/browser/query-builder/RelationLoader.js +2 -0
- package/browser/query-builder/RelationLoader.js.map +1 -1
- package/browser/query-builder/SelectQueryBuilder.d.ts +1 -0
- package/browser/query-builder/SelectQueryBuilder.js +43 -5
- package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
- package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
- package/browser/query-runner/QueryLock.js +1 -0
- package/browser/query-runner/QueryLock.js.map +1 -1
- package/browser/repository/SaveOptions.d.ts +1 -1
- package/browser/repository/SaveOptions.js.map +1 -1
- package/browser/util/ImportUtils.d.ts +1 -1
- package/browser/util/ImportUtils.js +2 -1
- package/browser/util/ImportUtils.js.map +1 -1
- package/browser/util/OrmUtils.d.ts +7 -10
- package/browser/util/OrmUtils.js +22 -31
- package/browser/util/OrmUtils.js.map +1 -1
- package/cache/RedisQueryResultCache.d.ts +13 -0
- package/cache/RedisQueryResultCache.js +105 -38
- package/cache/RedisQueryResultCache.js.map +1 -1
- package/cli.js +3 -1
- package/cli.js.map +1 -1
- package/connection/ConnectionOptionsReader.js +1 -1
- package/connection/ConnectionOptionsReader.js.map +1 -1
- package/connection/options-reader/ConnectionOptionsEnvReader.d.ts +1 -1
- package/connection/options-reader/ConnectionOptionsEnvReader.js +1 -1
- package/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
- package/decorator/options/ColumnOptions.d.ts +6 -0
- package/decorator/options/ColumnOptions.js.map +1 -1
- package/driver/aurora-mysql/AuroraMysqlDriver.d.ts +1 -1
- package/driver/aurora-mysql/AuroraMysqlQueryRunner.js +12 -21
- package/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
- package/driver/better-sqlite3/BetterSqlite3Driver.js +2 -2
- package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
- package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +3 -3
- package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
- package/driver/cockroachdb/CockroachDriver.js +2 -2
- package/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/driver/cockroachdb/CockroachQueryRunner.js +4 -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/legacy/ExpoLegacyQueryRunner.js +1 -1
- package/driver/expo/legacy/ExpoLegacyQueryRunner.js.map +1 -1
- package/driver/mongodb/MongoConnectionOptions.d.ts +9 -9
- package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
- package/driver/mongodb/MongoDriver.d.ts +1 -1
- package/driver/mongodb/bson.typings.d.ts +0 -4
- package/driver/mongodb/bson.typings.js +0 -1
- package/driver/mongodb/bson.typings.js.map +1 -1
- package/driver/mongodb/typings.d.ts +7 -10
- package/driver/mongodb/typings.js +3 -2
- package/driver/mongodb/typings.js.map +1 -1
- package/driver/mysql/MysqlDriver.d.ts +1 -1
- package/driver/mysql/MysqlDriver.js +3 -1
- package/driver/mysql/MysqlDriver.js.map +1 -1
- package/driver/mysql/MysqlQueryRunner.js +4 -4
- package/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/driver/nativescript/NativescriptQueryRunner.js +1 -1
- package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
- package/driver/oracle/OracleQueryRunner.js +1 -1
- package/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/driver/postgres/PostgresDriver.js +3 -5
- package/driver/postgres/PostgresDriver.js.map +1 -1
- package/driver/postgres/PostgresQueryRunner.js +5 -5
- package/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/driver/react-native/ReactNativeDriver.d.ts +1 -1
- package/driver/react-native/ReactNativeQueryRunner.js +1 -1
- package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
- package/driver/sap/SapConnectionOptions.d.ts +33 -8
- package/driver/sap/SapConnectionOptions.js.map +1 -1
- package/driver/sap/SapDriver.d.ts +21 -22
- package/driver/sap/SapDriver.js +127 -115
- package/driver/sap/SapDriver.js.map +1 -1
- package/driver/sap/SapQueryRunner.js +64 -68
- package/driver/sap/SapQueryRunner.js.map +1 -1
- package/driver/spanner/SpannerDriver.d.ts +1 -1
- package/driver/spanner/SpannerQueryRunner.js +3 -3
- package/driver/spanner/SpannerQueryRunner.js.map +1 -1
- package/driver/sqlite/SqliteDriver.js +1 -1
- package/driver/sqlite/SqliteDriver.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +2 -2
- package/driver/sqlite-abstract/AbstractSqliteDriver.js +1 -1
- package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/driver/sqljs/SqljsDriver.d.ts +2 -1
- package/driver/sqlserver/SqlServerQueryRunner.js +1 -1
- 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/MongoEntityManager.js +3 -3
- package/entity-manager/MongoEntityManager.js.map +1 -1
- package/entity-schema/EntitySchemaColumnOptions.d.ts +10 -0
- package/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
- package/entity-schema/EntitySchemaTransformer.js +3 -0
- package/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/error/DriverPackageNotInstalledError.js +1 -2
- package/error/DriverPackageNotInstalledError.js.map +1 -1
- package/index.mjs +2 -2
- package/logger/FormattedConsoleLogger.js +1 -1
- package/logger/FormattedConsoleLogger.js.map +1 -1
- package/metadata/ColumnMetadata.d.ts +1 -1
- package/metadata/ColumnMetadata.js.map +1 -1
- package/metadata-builder/EntityMetadataBuilder.js +8 -1
- package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/metadata-builder/EntityMetadataValidator.js +2 -4
- package/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/package.json +267 -1
- package/persistence/SubjectExecutor.js +4 -10
- package/persistence/SubjectExecutor.js.map +1 -1
- package/persistence/SubjectTopologicalSorter.js +5 -4
- package/persistence/SubjectTopologicalSorter.js.map +1 -1
- package/platform/PlatformTools.js +0 -2
- package/platform/PlatformTools.js.map +1 -1
- package/query-builder/QueryExpressionMap.js +1 -0
- package/query-builder/QueryExpressionMap.js.map +1 -1
- package/query-builder/RelationLoader.js +2 -0
- package/query-builder/RelationLoader.js.map +1 -1
- package/query-builder/SelectQueryBuilder.d.ts +1 -0
- package/query-builder/SelectQueryBuilder.js +43 -5
- package/query-builder/SelectQueryBuilder.js.map +1 -1
- package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
- package/query-runner/QueryLock.js +1 -0
- package/query-runner/QueryLock.js.map +1 -1
- package/repository/SaveOptions.d.ts +1 -1
- package/repository/SaveOptions.js.map +1 -1
- package/util/ImportUtils.d.ts +1 -1
- package/util/ImportUtils.js +2 -1
- package/util/ImportUtils.js.map +1 -1
- package/util/OrmUtils.d.ts +7 -10
- package/util/OrmUtils.js +22 -31
- package/util/OrmUtils.js.map +1 -1
|
@@ -204,7 +204,7 @@ export declare class ReactNativeDriver implements Driver {
|
|
|
204
204
|
/**
|
|
205
205
|
* Creates generated map of values generated or returned by database after INSERT query.
|
|
206
206
|
*/
|
|
207
|
-
createGeneratedMap(metadata: EntityMetadata, insertResult: any, entityIndex: number, entityNum: number):
|
|
207
|
+
createGeneratedMap(metadata: EntityMetadata, insertResult: any, entityIndex: number, entityNum: number): ObjectLiteral | undefined;
|
|
208
208
|
/**
|
|
209
209
|
* Differentiate columns of this table and columns from the given column metadatas columns
|
|
210
210
|
* and returns only changed.
|
|
@@ -75,7 +75,7 @@ export class ReactNativeQueryRunner extends AbstractSqliteQueryRunner {
|
|
|
75
75
|
else {
|
|
76
76
|
ok(result.raw);
|
|
77
77
|
}
|
|
78
|
-
},
|
|
78
|
+
}, (err) => {
|
|
79
79
|
this.driver.connection.logger.logQueryError(err, query, parameters, this);
|
|
80
80
|
this.broadcaster.broadcastAfterQueryEvent(broadcasterResult, query, parameters, false, undefined, undefined, err);
|
|
81
81
|
fail(new QueryFailedError(query, parameters, err));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../browser/src/driver/react-native/ReactNativeQueryRunner.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../browser/src/driver/react-native/ReactNativeQueryRunner.ts"],"names":[],"mappings":"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","file":"ReactNativeQueryRunner.js","sourcesContent":["import { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport { QueryFailedError } from \"../../error/QueryFailedError\"\nimport { QueryRunnerAlreadyReleasedError } from \"../../error/QueryRunnerAlreadyReleasedError\"\nimport { QueryResult } from \"../../query-runner/QueryResult\"\nimport { Broadcaster } from \"../../subscriber/Broadcaster\"\nimport { BroadcasterResult } from \"../../subscriber/BroadcasterResult\"\nimport { AbstractSqliteQueryRunner } from \"../sqlite-abstract/AbstractSqliteQueryRunner\"\nimport { ReactNativeDriver } from \"./ReactNativeDriver\"\n\n/**\n * Runs queries on a single sqlite database connection.\n */\nexport class ReactNativeQueryRunner extends AbstractSqliteQueryRunner {\n /**\n * Database driver used by connection.\n */\n // @ts-ignore temporary, we need to fix the issue with the AbstractSqliteDriver and circular errors\n driver: ReactNativeDriver\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(driver: ReactNativeDriver) {\n super()\n this.driver = driver\n this.connection = driver.connection\n this.broadcaster = new Broadcaster(this)\n }\n\n /**\n * Called before migrations are run.\n */\n async beforeMigration(): Promise<void> {\n await this.query(`PRAGMA foreign_keys = OFF`)\n }\n\n /**\n * Called after migrations are run.\n */\n async afterMigration(): Promise<void> {\n await this.query(`PRAGMA foreign_keys = ON`)\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 const databaseConnection = await this.connect()\n\n this.driver.connection.logger.logQuery(query, parameters, this)\n await this.broadcaster.broadcast(\"BeforeQuery\", query, parameters)\n\n const broadcasterResult = new BroadcasterResult()\n\n const queryStartTime = Date.now()\n\n return new Promise(async (ok, fail) => {\n try {\n databaseConnection.executeSql(\n query,\n parameters,\n async (raw: any) => {\n // log slow queries if maxQueryExecution time is set\n const maxQueryExecutionTime =\n this.driver.options.maxQueryExecutionTime\n const queryEndTime = Date.now()\n const queryExecutionTime = queryEndTime - queryStartTime\n this.broadcaster.broadcastAfterQueryEvent(\n broadcasterResult,\n query,\n parameters,\n true,\n queryExecutionTime,\n raw,\n undefined,\n )\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 if (broadcasterResult.promises.length > 0)\n await Promise.all(broadcasterResult.promises)\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 const records = []\n for (let i = 0; i < raw.rows.length; i++) {\n records.push(raw.rows.item(i))\n }\n\n result.raw = records\n result.records = records\n }\n\n // return id of inserted row, if query was insert statement.\n if (query.substr(0, 11) === \"INSERT INTO\") {\n result.raw = raw.insertId\n }\n\n if (useStructuredResult) {\n ok(result)\n } else {\n ok(result.raw)\n }\n },\n (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\n fail(new QueryFailedError(query, parameters, err))\n },\n )\n } catch (err) {\n fail(err)\n } finally {\n await broadcasterResult.wait()\n }\n })\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Parametrizes given object of values. Used to create column=value queries.\n */\n protected parametrize(\n objectLiteral: ObjectLiteral,\n startIndex: number = 0,\n ): string[] {\n return Object.keys(objectLiteral).map((key, index) => `\"${key}\"` + \"=?\")\n }\n}\n"],"sourceRoot":"../.."}
|
|
@@ -14,40 +14,66 @@ export interface SapConnectionOptions extends BaseDataSourceOptions, SapConnecti
|
|
|
14
14
|
readonly schema?: string;
|
|
15
15
|
/**
|
|
16
16
|
* The driver objects
|
|
17
|
-
* This defaults to require("
|
|
17
|
+
* This defaults to require("@sap/hana-client")
|
|
18
18
|
*/
|
|
19
19
|
readonly driver?: any;
|
|
20
20
|
/**
|
|
21
|
-
*
|
|
22
|
-
* This defaults to require("@sap/hana-client")
|
|
21
|
+
* @deprecated Use {@link driver} instead.
|
|
23
22
|
*/
|
|
24
23
|
readonly hanaClientDriver?: any;
|
|
25
24
|
/**
|
|
26
25
|
* Pool options.
|
|
27
26
|
*/
|
|
28
27
|
readonly pool?: {
|
|
28
|
+
/**
|
|
29
|
+
* Maximum number of open connections created by the pool, each of which
|
|
30
|
+
* may be in the pool waiting to be reused or may no longer be in the
|
|
31
|
+
* pool and actively being used (default: 10).
|
|
32
|
+
*/
|
|
33
|
+
readonly maxConnectedOrPooled?: number;
|
|
34
|
+
/**
|
|
35
|
+
* Defines the maximum time, in seconds, that connections are allowed to
|
|
36
|
+
* remain in the pool before being marked for eviction (default: 30).
|
|
37
|
+
*/
|
|
38
|
+
readonly maxPooledIdleTime?: number;
|
|
39
|
+
/**
|
|
40
|
+
* Determines whether or not the pooled connection should be tested for
|
|
41
|
+
* viability before being reused (default: false).
|
|
42
|
+
*/
|
|
43
|
+
readonly pingCheck?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Maximum number of connections allowed to be in the pool, waiting to
|
|
46
|
+
* be reused (default: 0, no limit).
|
|
47
|
+
*/
|
|
48
|
+
readonly poolCapacity?: number;
|
|
29
49
|
/**
|
|
30
50
|
* Max number of connections.
|
|
51
|
+
* @deprecated Use {@link maxConnectedOrPooled} instead.
|
|
31
52
|
*/
|
|
32
53
|
readonly max?: number;
|
|
33
54
|
/**
|
|
34
55
|
* Minimum number of connections.
|
|
56
|
+
* @deprecated Obsolete, no alternative exists.
|
|
35
57
|
*/
|
|
36
58
|
readonly min?: number;
|
|
37
59
|
/**
|
|
38
|
-
* Maximum number of waiting requests allowed.
|
|
60
|
+
* Maximum number of waiting requests allowed.
|
|
61
|
+
* @deprecated Obsolete, no alternative exists.
|
|
39
62
|
*/
|
|
40
63
|
readonly maxWaitingRequests?: number;
|
|
41
64
|
/**
|
|
42
|
-
* Max milliseconds a request will wait for a resource before timing out.
|
|
65
|
+
* Max milliseconds a request will wait for a resource before timing out.
|
|
66
|
+
* @deprecated Obsolete, no alternative exists.
|
|
43
67
|
*/
|
|
44
68
|
readonly requestTimeout?: number;
|
|
45
69
|
/**
|
|
46
|
-
* How often to run resource timeout checks.
|
|
70
|
+
* How often to run resource timeout checks.
|
|
71
|
+
* @deprecated Obsolete, no alternative exists.
|
|
47
72
|
*/
|
|
48
73
|
readonly checkInterval?: number;
|
|
49
74
|
/**
|
|
50
|
-
* Idle timeout
|
|
75
|
+
* Idle timeout (in milliseconds).
|
|
76
|
+
* @deprecated Use {@link maxPooledIdleTime} (in seconds) instead .
|
|
51
77
|
*/
|
|
52
78
|
readonly idleTimeout?: number;
|
|
53
79
|
/**
|
|
@@ -56,5 +82,4 @@ export interface SapConnectionOptions extends BaseDataSourceOptions, SapConnecti
|
|
|
56
82
|
*/
|
|
57
83
|
readonly poolErrorHandler?: (err: any) => any;
|
|
58
84
|
};
|
|
59
|
-
readonly poolSize?: never;
|
|
60
85
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../browser/src/driver/sap/SapConnectionOptions.ts"],"names":[],"mappings":"","file":"SapConnectionOptions.js","sourcesContent":["import { BaseDataSourceOptions } from \"../../data-source/BaseDataSourceOptions\"\nimport { SapConnectionCredentialsOptions } from \"./SapConnectionCredentialsOptions\"\n\n/**\n * SAP Hana specific connection options.\n */\nexport interface SapConnectionOptions\n extends BaseDataSourceOptions,\n SapConnectionCredentialsOptions {\n /**\n * Database type.\n */\n readonly type: \"sap\"\n\n /**\n * Database schema.\n */\n readonly schema?: string\n\n /**\n * The driver objects\n * This defaults to require(\"
|
|
1
|
+
{"version":3,"sources":["../browser/src/driver/sap/SapConnectionOptions.ts"],"names":[],"mappings":"","file":"SapConnectionOptions.js","sourcesContent":["import { BaseDataSourceOptions } from \"../../data-source/BaseDataSourceOptions\"\nimport { SapConnectionCredentialsOptions } from \"./SapConnectionCredentialsOptions\"\n\n/**\n * SAP Hana specific connection options.\n */\nexport interface SapConnectionOptions\n extends BaseDataSourceOptions,\n SapConnectionCredentialsOptions {\n /**\n * Database type.\n */\n readonly type: \"sap\"\n\n /**\n * Database schema.\n */\n readonly schema?: string\n\n /**\n * The driver objects\n * This defaults to require(\"@sap/hana-client\")\n */\n readonly driver?: any\n\n /**\n * @deprecated Use {@link driver} instead.\n */\n readonly hanaClientDriver?: any\n\n /**\n * Pool options.\n */\n readonly pool?: {\n /**\n * Maximum number of open connections created by the pool, each of which\n * may be in the pool waiting to be reused or may no longer be in the\n * pool and actively being used (default: 10).\n */\n readonly maxConnectedOrPooled?: number\n\n /**\n * Defines the maximum time, in seconds, that connections are allowed to\n * remain in the pool before being marked for eviction (default: 30).\n */\n readonly maxPooledIdleTime?: number\n\n /**\n * Determines whether or not the pooled connection should be tested for\n * viability before being reused (default: false).\n */\n readonly pingCheck?: boolean\n\n /**\n * Maximum number of connections allowed to be in the pool, waiting to\n * be reused (default: 0, no limit).\n */\n readonly poolCapacity?: number\n\n /**\n * Max number of connections.\n * @deprecated Use {@link maxConnectedOrPooled} instead.\n */\n readonly max?: number\n\n /**\n * Minimum number of connections.\n * @deprecated Obsolete, no alternative exists.\n */\n readonly min?: number\n\n /**\n * Maximum number of waiting requests allowed.\n * @deprecated Obsolete, no alternative exists.\n */\n readonly maxWaitingRequests?: number\n\n /**\n * Max milliseconds a request will wait for a resource before timing out.\n * @deprecated Obsolete, no alternative exists.\n */\n readonly requestTimeout?: number\n\n /**\n * How often to run resource timeout checks.\n * @deprecated Obsolete, no alternative exists.\n */\n readonly checkInterval?: number\n\n /**\n * Idle timeout (in milliseconds).\n * @deprecated Use {@link maxPooledIdleTime} (in seconds) instead .\n */\n readonly idleTimeout?: number\n\n /**\n * Function handling errors thrown by drivers pool.\n * Defaults to logging error with `warn` level.\n */\n readonly poolErrorHandler?: (err: any) => any\n }\n}\n"],"sourceRoot":"../.."}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { ColumnType, DataSource, EntityMetadata, ObjectLiteral, Table, TableColumn, TableForeignKey } from "../..";
|
|
2
2
|
import { ColumnMetadata } from "../../metadata/ColumnMetadata";
|
|
3
3
|
import { RdbmsSchemaBuilder } from "../../schema-builder/RdbmsSchemaBuilder";
|
|
4
|
+
import { View } from "../../schema-builder/view/View";
|
|
4
5
|
import { Driver } from "../Driver";
|
|
5
6
|
import { CteCapabilities } from "../types/CteCapabilities";
|
|
6
7
|
import { DataTypeDefaults } from "../types/DataTypeDefaults";
|
|
7
8
|
import { MappedColumnTypes } from "../types/MappedColumnTypes";
|
|
8
|
-
import { SapConnectionOptions } from "./SapConnectionOptions";
|
|
9
|
-
import { SapQueryRunner } from "./SapQueryRunner";
|
|
10
9
|
import { ReplicationMode } from "../types/ReplicationMode";
|
|
11
|
-
import { View } from "../../schema-builder/view/View";
|
|
12
10
|
import { UpsertType } from "../types/UpsertType";
|
|
11
|
+
import { SapConnectionOptions } from "./SapConnectionOptions";
|
|
12
|
+
import { SapQueryRunner } from "./SapQueryRunner";
|
|
13
13
|
/**
|
|
14
14
|
* Organizes communication with SAP Hana DBMS.
|
|
15
15
|
*
|
|
@@ -21,11 +21,11 @@ export declare class SapDriver implements Driver {
|
|
|
21
21
|
*/
|
|
22
22
|
connection: DataSource;
|
|
23
23
|
/**
|
|
24
|
-
*
|
|
24
|
+
* SAP HANA Client Pool instance.
|
|
25
25
|
*/
|
|
26
26
|
client: any;
|
|
27
27
|
/**
|
|
28
|
-
*
|
|
28
|
+
* SAP HANA Client streaming extension.
|
|
29
29
|
*/
|
|
30
30
|
streamClient: any;
|
|
31
31
|
/**
|
|
@@ -33,10 +33,9 @@ export declare class SapDriver implements Driver {
|
|
|
33
33
|
*/
|
|
34
34
|
master: any;
|
|
35
35
|
/**
|
|
36
|
-
*
|
|
37
|
-
* Used in replication.
|
|
36
|
+
* Function handling errors thrown by drivers pool.
|
|
38
37
|
*/
|
|
39
|
-
|
|
38
|
+
poolErrorHandler: (error: any) => void;
|
|
40
39
|
/**
|
|
41
40
|
* Connection options.
|
|
42
41
|
*/
|
|
@@ -104,7 +103,7 @@ export declare class SapDriver implements Driver {
|
|
|
104
103
|
dataTypeDefaults: DataTypeDefaults;
|
|
105
104
|
/**
|
|
106
105
|
* Max length allowed by SAP HANA for aliases (identifiers).
|
|
107
|
-
* @see https://help.sap.com/
|
|
106
|
+
* @see https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-sql-reference-guide/system-limitations
|
|
108
107
|
*/
|
|
109
108
|
maxAliasLength: number;
|
|
110
109
|
cteCapabilities: CteCapabilities;
|
|
@@ -124,6 +123,18 @@ export declare class SapDriver implements Driver {
|
|
|
124
123
|
* Closes connection with the database.
|
|
125
124
|
*/
|
|
126
125
|
disconnect(): Promise<void>;
|
|
126
|
+
/**
|
|
127
|
+
* Obtains a new database connection to a master server.
|
|
128
|
+
* Used for replication.
|
|
129
|
+
* If replication is not setup then returns default connection's database connection.
|
|
130
|
+
*/
|
|
131
|
+
obtainMasterConnection(): Promise<any>;
|
|
132
|
+
/**
|
|
133
|
+
* Obtains a new database connection to a slave server.
|
|
134
|
+
* Used for replication.
|
|
135
|
+
* If replication is not setup then returns master (default) connection's database connection.
|
|
136
|
+
*/
|
|
137
|
+
obtainSlaveConnection(): Promise<any>;
|
|
127
138
|
/**
|
|
128
139
|
* Creates a schema builder used to build and sync a schema.
|
|
129
140
|
*/
|
|
@@ -187,22 +198,10 @@ export declare class SapDriver implements Driver {
|
|
|
187
198
|
* Creates column type definition including length, precision and scale
|
|
188
199
|
*/
|
|
189
200
|
createFullType(column: TableColumn): string;
|
|
190
|
-
/**
|
|
191
|
-
* Obtains a new database connection to a master server.
|
|
192
|
-
* Used for replication.
|
|
193
|
-
* If replication is not setup then returns default connection's database connection.
|
|
194
|
-
*/
|
|
195
|
-
obtainMasterConnection(): Promise<any>;
|
|
196
|
-
/**
|
|
197
|
-
* Obtains a new database connection to a slave server.
|
|
198
|
-
* Used for replication.
|
|
199
|
-
* If replication is not setup then returns master (default) connection's database connection.
|
|
200
|
-
*/
|
|
201
|
-
obtainSlaveConnection(): Promise<any>;
|
|
202
201
|
/**
|
|
203
202
|
* Creates generated map of values generated or returned by database after INSERT query.
|
|
204
203
|
*/
|
|
205
|
-
createGeneratedMap(metadata: EntityMetadata, insertResult: ObjectLiteral):
|
|
204
|
+
createGeneratedMap(metadata: EntityMetadata, insertResult: ObjectLiteral): ObjectLiteral | undefined;
|
|
206
205
|
/**
|
|
207
206
|
* Differentiate columns of this table and columns from the given column metadatas columns
|
|
208
207
|
* and returns only changed.
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { promisify } from "node:util";
|
|
1
2
|
import { ConnectionIsNotSetError, } from "../..";
|
|
2
3
|
import { DriverPackageNotInstalledError } from "../../error/DriverPackageNotInstalledError";
|
|
3
4
|
import { TypeORMError } from "../../error/TypeORMError";
|
|
@@ -5,10 +6,10 @@ import { PlatformTools } from "../../platform/PlatformTools";
|
|
|
5
6
|
import { RdbmsSchemaBuilder } from "../../schema-builder/RdbmsSchemaBuilder";
|
|
6
7
|
import { ApplyValueTransformers } from "../../util/ApplyValueTransformers";
|
|
7
8
|
import { DateUtils } from "../../util/DateUtils";
|
|
9
|
+
import { InstanceChecker } from "../../util/InstanceChecker";
|
|
8
10
|
import { OrmUtils } from "../../util/OrmUtils";
|
|
9
|
-
import { SapQueryRunner } from "./SapQueryRunner";
|
|
10
11
|
import { DriverUtils } from "../DriverUtils";
|
|
11
|
-
import {
|
|
12
|
+
import { SapQueryRunner } from "./SapQueryRunner";
|
|
12
13
|
/**
|
|
13
14
|
* Organizes communication with SAP Hana DBMS.
|
|
14
15
|
*
|
|
@@ -19,11 +20,6 @@ export class SapDriver {
|
|
|
19
20
|
// Constructor
|
|
20
21
|
// -------------------------------------------------------------------------
|
|
21
22
|
constructor(connection) {
|
|
22
|
-
/**
|
|
23
|
-
* Pool for slave databases.
|
|
24
|
-
* Used in replication.
|
|
25
|
-
*/
|
|
26
|
-
this.slaves = [];
|
|
27
23
|
/**
|
|
28
24
|
* Indicates if replication is enabled.
|
|
29
25
|
*/
|
|
@@ -43,36 +39,39 @@ export class SapDriver {
|
|
|
43
39
|
* @see https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-sql-reference-guide/data-types
|
|
44
40
|
*/
|
|
45
41
|
this.supportedDataTypes = [
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"int", // typeorm alias for "integer"
|
|
49
|
-
"integer",
|
|
42
|
+
"alphanum", // removed in SAP HANA Cloud
|
|
43
|
+
"array",
|
|
50
44
|
"bigint",
|
|
51
|
-
"
|
|
52
|
-
"
|
|
45
|
+
"binary",
|
|
46
|
+
"blob",
|
|
47
|
+
"boolean",
|
|
48
|
+
"char", // not officially supported, in SAP HANA Cloud: alias for "nchar"
|
|
49
|
+
"clob", // in SAP HANA Cloud: alias for "nclob"
|
|
50
|
+
"date",
|
|
53
51
|
"dec", // typeorm alias for "decimal"
|
|
54
|
-
"
|
|
52
|
+
"decimal",
|
|
55
53
|
"double",
|
|
56
54
|
"float", // database alias for "real" / "double"
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"timestamp",
|
|
61
|
-
"boolean",
|
|
62
|
-
"char", // not officially supported, in SAP HANA Cloud: alias for "nchar"
|
|
55
|
+
"half_vector", // only supported in SAP HANA Cloud, not in SAP HANA 2.0
|
|
56
|
+
"int", // typeorm alias for "integer"
|
|
57
|
+
"integer",
|
|
63
58
|
"nchar", // not officially supported
|
|
64
|
-
"
|
|
59
|
+
"nclob",
|
|
65
60
|
"nvarchar",
|
|
66
|
-
"
|
|
67
|
-
"
|
|
61
|
+
"real_vector", // only supported in SAP HANA Cloud, not in SAP HANA 2.0
|
|
62
|
+
"real",
|
|
63
|
+
"seconddate",
|
|
68
64
|
"shorttext", // removed in SAP HANA Cloud
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"blob",
|
|
72
|
-
"clob", // in SAP HANA Cloud: alias for "nclob"
|
|
73
|
-
"nclob",
|
|
65
|
+
"smalldecimal",
|
|
66
|
+
"smallint",
|
|
74
67
|
"st_geometry",
|
|
75
68
|
"st_point",
|
|
69
|
+
"text", // removed in SAP HANA Cloud
|
|
70
|
+
"time",
|
|
71
|
+
"timestamp",
|
|
72
|
+
"tinyint",
|
|
73
|
+
"varbinary",
|
|
74
|
+
"varchar", // in SAP HANA Cloud: alias for "nvarchar"
|
|
76
75
|
];
|
|
77
76
|
/**
|
|
78
77
|
* Returns type of upsert supported by driver if any
|
|
@@ -86,11 +85,14 @@ export class SapDriver {
|
|
|
86
85
|
* Gets list of column data types that support length by a driver.
|
|
87
86
|
*/
|
|
88
87
|
this.withLengthColumnTypes = [
|
|
89
|
-
"varchar",
|
|
90
|
-
"nvarchar",
|
|
91
88
|
"alphanum",
|
|
89
|
+
"binary",
|
|
90
|
+
"half_vector",
|
|
91
|
+
"nvarchar",
|
|
92
|
+
"real_vector",
|
|
92
93
|
"shorttext",
|
|
93
94
|
"varbinary",
|
|
95
|
+
"varchar",
|
|
94
96
|
];
|
|
95
97
|
/**
|
|
96
98
|
* Gets list of column data types that support precision by a driver.
|
|
@@ -99,7 +101,7 @@ export class SapDriver {
|
|
|
99
101
|
/**
|
|
100
102
|
* Gets list of column data types that support scale by a driver.
|
|
101
103
|
*/
|
|
102
|
-
this.withScaleColumnTypes = ["decimal"];
|
|
104
|
+
this.withScaleColumnTypes = ["decimal", "timestamp"];
|
|
103
105
|
/**
|
|
104
106
|
* Orm has special columns and we need to know what database column types should be for those types.
|
|
105
107
|
* Column types are driver dependant.
|
|
@@ -134,17 +136,18 @@ export class SapDriver {
|
|
|
134
136
|
* Used in the cases when length/precision/scale is not specified by user.
|
|
135
137
|
*/
|
|
136
138
|
this.dataTypeDefaults = {
|
|
139
|
+
binary: { length: 1 },
|
|
137
140
|
char: { length: 1 },
|
|
141
|
+
decimal: { precision: 18, scale: 0 },
|
|
138
142
|
nchar: { length: 1 },
|
|
139
|
-
varchar: { length: 255 },
|
|
140
143
|
nvarchar: { length: 255 },
|
|
141
144
|
shorttext: { length: 255 },
|
|
142
145
|
varbinary: { length: 255 },
|
|
143
|
-
|
|
146
|
+
varchar: { length: 255 },
|
|
144
147
|
};
|
|
145
148
|
/**
|
|
146
149
|
* Max length allowed by SAP HANA for aliases (identifiers).
|
|
147
|
-
* @see https://help.sap.com/
|
|
150
|
+
* @see https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-sql-reference-guide/system-limitations
|
|
148
151
|
*/
|
|
149
152
|
this.maxAliasLength = 128;
|
|
150
153
|
this.cteCapabilities = {
|
|
@@ -167,50 +170,55 @@ export class SapDriver {
|
|
|
167
170
|
*/
|
|
168
171
|
async connect() {
|
|
169
172
|
// HANA connection info
|
|
170
|
-
const
|
|
171
|
-
|
|
173
|
+
const connectionOptions = {
|
|
174
|
+
host: this.options.host,
|
|
172
175
|
port: this.options.port,
|
|
173
|
-
|
|
176
|
+
user: this.options.username,
|
|
174
177
|
password: this.options.password,
|
|
175
|
-
|
|
178
|
+
database: this.options.database,
|
|
179
|
+
currentSchema: this.options.schema,
|
|
180
|
+
encrypt: this.options.encrypt,
|
|
181
|
+
sslValidateCertificate: this.options.sslValidateCertificate,
|
|
182
|
+
key: this.options.key,
|
|
183
|
+
cert: this.options.cert,
|
|
184
|
+
ca: this.options.ca,
|
|
176
185
|
};
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
if (this.options.sslValidateCertificate)
|
|
184
|
-
dbParams.validateCertificate = this.options.sslValidateCertificate;
|
|
185
|
-
if (this.options.key)
|
|
186
|
-
dbParams.key = this.options.key;
|
|
187
|
-
if (this.options.cert)
|
|
188
|
-
dbParams.cert = this.options.cert;
|
|
189
|
-
if (this.options.ca)
|
|
190
|
-
dbParams.ca = this.options.ca;
|
|
186
|
+
Object.keys(connectionOptions).forEach((key) => {
|
|
187
|
+
if (connectionOptions[key] === undefined) {
|
|
188
|
+
delete connectionOptions[key];
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
Object.assign(connectionOptions, this.options.extra ?? {});
|
|
191
192
|
// pool options
|
|
192
|
-
const
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
193
|
+
const poolOptions = {
|
|
194
|
+
maxConnectedOrPooled: this.options.pool?.maxConnectedOrPooled ??
|
|
195
|
+
this.options.pool?.max ??
|
|
196
|
+
this.options.poolSize ??
|
|
197
|
+
10,
|
|
198
|
+
maxPooledIdleTime: this.options.pool?.maxPooledIdleTime ??
|
|
199
|
+
(this.options.pool?.idleTimeout
|
|
200
|
+
? this.options.pool.idleTimeout / 1000
|
|
201
|
+
: 30),
|
|
199
202
|
};
|
|
200
|
-
if (this.options.pool
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
this.client.eventEmitter.on("poolError", poolErrorHandler);
|
|
203
|
+
if (this.options.pool?.pingCheck) {
|
|
204
|
+
poolOptions.pingCheck = this.options.pool.pingCheck;
|
|
205
|
+
}
|
|
206
|
+
if (this.options.pool?.poolCapacity) {
|
|
207
|
+
poolOptions.poolCapacity = this.options.pool.poolCapacity;
|
|
208
|
+
}
|
|
209
|
+
this.poolErrorHandler =
|
|
210
|
+
this.options.pool?.poolErrorHandler ??
|
|
211
|
+
((error) => {
|
|
212
|
+
this.connection.logger.log("warn", `SAP HANA pool raised an error: ${error}`);
|
|
213
|
+
});
|
|
212
214
|
// create the pool
|
|
213
|
-
|
|
215
|
+
try {
|
|
216
|
+
this.master = this.client.createPool(connectionOptions, poolOptions);
|
|
217
|
+
}
|
|
218
|
+
catch (error) {
|
|
219
|
+
this.poolErrorHandler(error);
|
|
220
|
+
throw error;
|
|
221
|
+
}
|
|
214
222
|
const queryRunner = this.createQueryRunner("master");
|
|
215
223
|
const { version, database } = await queryRunner.getDatabaseAndVersion();
|
|
216
224
|
this.version = version;
|
|
@@ -235,7 +243,39 @@ export class SapDriver {
|
|
|
235
243
|
throw new ConnectionIsNotSetError("sap");
|
|
236
244
|
}
|
|
237
245
|
this.master = undefined;
|
|
238
|
-
|
|
246
|
+
try {
|
|
247
|
+
await promisify(pool.clear).call(pool);
|
|
248
|
+
}
|
|
249
|
+
catch (error) {
|
|
250
|
+
this.poolErrorHandler(error);
|
|
251
|
+
throw error;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Obtains a new database connection to a master server.
|
|
256
|
+
* Used for replication.
|
|
257
|
+
* If replication is not setup then returns default connection's database connection.
|
|
258
|
+
*/
|
|
259
|
+
async obtainMasterConnection() {
|
|
260
|
+
const pool = this.master;
|
|
261
|
+
if (!pool) {
|
|
262
|
+
throw new TypeORMError("Driver not Connected");
|
|
263
|
+
}
|
|
264
|
+
try {
|
|
265
|
+
return await promisify(pool.getConnection).call(pool);
|
|
266
|
+
}
|
|
267
|
+
catch (error) {
|
|
268
|
+
this.poolErrorHandler(error);
|
|
269
|
+
throw error;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Obtains a new database connection to a slave server.
|
|
274
|
+
* Used for replication.
|
|
275
|
+
* If replication is not setup then returns master (default) connection's database connection.
|
|
276
|
+
*/
|
|
277
|
+
async obtainSlaveConnection() {
|
|
278
|
+
return this.obtainMasterConnection();
|
|
239
279
|
}
|
|
240
280
|
/**
|
|
241
281
|
* Creates a schema builder used to build and sync a schema.
|
|
@@ -349,10 +389,7 @@ export class SapDriver {
|
|
|
349
389
|
value = ApplyValueTransformers.transformTo(columnMetadata.transformer, value);
|
|
350
390
|
if (value === null || value === undefined)
|
|
351
391
|
return value;
|
|
352
|
-
if (columnMetadata.type ===
|
|
353
|
-
return value === true ? 1 : 0;
|
|
354
|
-
}
|
|
355
|
-
else if (columnMetadata.type === "date") {
|
|
392
|
+
if (columnMetadata.type === "date") {
|
|
356
393
|
return DateUtils.mixedDateToDateString(value);
|
|
357
394
|
}
|
|
358
395
|
else if (columnMetadata.type === "time") {
|
|
@@ -387,10 +424,7 @@ export class SapDriver {
|
|
|
387
424
|
return columnMetadata.transformer
|
|
388
425
|
? ApplyValueTransformers.transformFrom(columnMetadata.transformer, value)
|
|
389
426
|
: value;
|
|
390
|
-
if (columnMetadata.type ===
|
|
391
|
-
value = value ? true : false;
|
|
392
|
-
}
|
|
393
|
-
else if (columnMetadata.type === "timestamp" ||
|
|
427
|
+
if (columnMetadata.type === "timestamp" ||
|
|
394
428
|
columnMetadata.type === "seconddate" ||
|
|
395
429
|
columnMetadata.type === Date) {
|
|
396
430
|
value = DateUtils.normalizeHydratedDate(value);
|
|
@@ -410,10 +444,6 @@ export class SapDriver {
|
|
|
410
444
|
else if (columnMetadata.type === "simple-enum") {
|
|
411
445
|
value = DateUtils.stringToSimpleEnum(value, columnMetadata);
|
|
412
446
|
}
|
|
413
|
-
else if (columnMetadata.type === Number) {
|
|
414
|
-
// convert to number if number
|
|
415
|
-
value = !isNaN(+value) ? parseInt(value) : value;
|
|
416
|
-
}
|
|
417
447
|
if (columnMetadata.transformer)
|
|
418
448
|
value = ApplyValueTransformers.transformFrom(columnMetadata.transformer, value);
|
|
419
449
|
return value;
|
|
@@ -474,6 +504,12 @@ export class SapDriver {
|
|
|
474
504
|
return "nchar";
|
|
475
505
|
}
|
|
476
506
|
}
|
|
507
|
+
else {
|
|
508
|
+
if (column.type === "real_vector" ||
|
|
509
|
+
column.type === "half_vector") {
|
|
510
|
+
return "varbinary";
|
|
511
|
+
}
|
|
512
|
+
}
|
|
477
513
|
return column.type || "";
|
|
478
514
|
}
|
|
479
515
|
/**
|
|
@@ -550,25 +586,6 @@ export class SapDriver {
|
|
|
550
586
|
type += " array";
|
|
551
587
|
return type;
|
|
552
588
|
}
|
|
553
|
-
/**
|
|
554
|
-
* Obtains a new database connection to a master server.
|
|
555
|
-
* Used for replication.
|
|
556
|
-
* If replication is not setup then returns default connection's database connection.
|
|
557
|
-
*/
|
|
558
|
-
obtainMasterConnection() {
|
|
559
|
-
if (!this.master) {
|
|
560
|
-
throw new TypeORMError("Driver not Connected");
|
|
561
|
-
}
|
|
562
|
-
return this.master.getConnection();
|
|
563
|
-
}
|
|
564
|
-
/**
|
|
565
|
-
* Obtains a new database connection to a slave server.
|
|
566
|
-
* Used for replication.
|
|
567
|
-
* If replication is not setup then returns master (default) connection's database connection.
|
|
568
|
-
*/
|
|
569
|
-
obtainSlaveConnection() {
|
|
570
|
-
return this.obtainMasterConnection();
|
|
571
|
-
}
|
|
572
589
|
/**
|
|
573
590
|
* Creates generated map of values generated or returned by database after INSERT query.
|
|
574
591
|
*/
|
|
@@ -648,21 +665,16 @@ export class SapDriver {
|
|
|
648
665
|
* If driver dependency is not given explicitly, then try to load it via "require".
|
|
649
666
|
*/
|
|
650
667
|
loadDependencies() {
|
|
651
|
-
|
|
652
|
-
|
|
668
|
+
const client = this.options.driver ?? this.options.hanaClientDriver;
|
|
669
|
+
if (client) {
|
|
653
670
|
this.client = client;
|
|
654
|
-
|
|
655
|
-
catch (e) {
|
|
656
|
-
// todo: better error for browser env
|
|
657
|
-
throw new DriverPackageNotInstalledError("SAP Hana", "hdb-pool");
|
|
671
|
+
return;
|
|
658
672
|
}
|
|
659
673
|
try {
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
this.streamClient = PlatformTools.load("@sap/hana-client/extension/Stream");
|
|
663
|
-
}
|
|
674
|
+
this.client = PlatformTools.load("@sap/hana-client");
|
|
675
|
+
this.streamClient = PlatformTools.load("@sap/hana-client/extension/Stream");
|
|
664
676
|
}
|
|
665
|
-
catch
|
|
677
|
+
catch {
|
|
666
678
|
// todo: better error for browser env
|
|
667
679
|
throw new DriverPackageNotInstalledError("SAP Hana", "@sap/hana-client");
|
|
668
680
|
}
|