diff --git a/ormconfig.json.dist b/ormconfig.json.dist index 07311e30b2..ff780d352d 100644 --- a/ormconfig.json.dist +++ b/ormconfig.json.dist @@ -90,5 +90,18 @@ "logging": false, "useNewUrlParser": true, "useUnifiedTopology": true + }, + { + "skip": true, + "name": "aurora-data-api", + "type": "aurora-data-api", + "region": "us-east-1", + "secretArn": "mysecret", + "resourceArn": "app-dbcluster", + "database": "app-dbcluster-mine", + "serviceConfigOptions": { + "maxRetries": 3 + }, + "logging": false } ] diff --git a/package-lock.json b/package-lock.json index e63083f4c3..8a67d2276e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1861,9 +1861,8 @@ } }, "data-api-client": { - "version": "1.0.0-beta", - "resolved": "https://registry.npmjs.org/data-api-client/-/data-api-client-1.0.0-beta.tgz", - "integrity": "sha512-sBC6pGooj59FhKhND7aj24a+pI4qFd0K08WtF6X7ZtthMy5x5ezWC6VDuMUfwMrvA0qGXttFdT6/2U1JTgSN2g==", + "version": "github:ArsenyYankovsky/data-api-client#42a4a26b5d7de0939b748d6d22a67022a9955a6f", + "from": "github:ArsenyYankovsky/data-api-client#support-date", "dev": true, "requires": { "sqlstring": "^2.3.1" @@ -8561,12 +8560,12 @@ "dev": true }, "typeorm-aurora-data-api-driver": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/typeorm-aurora-data-api-driver/-/typeorm-aurora-data-api-driver-1.1.1.tgz", - "integrity": "sha512-KqqMiwf/YrT0/YIPL0D97zEAt2TtRyxZGVo1UJusnO3o+3FoLbzFLp3x0Jg3KapOq8EyzYGeLRDsWVUSJQ6MkQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/typeorm-aurora-data-api-driver/-/typeorm-aurora-data-api-driver-1.2.0.tgz", + "integrity": "sha512-PT/y49qFk0Kub+HWITgtJ2oOQCEET9UYcpZ3LA7kgFvnrGrrbiCsDwbuJpFCXt1boqca5nkGsVCUcbzLcCaO9w==", "dev": true, "requires": { - "data-api-client": "^1.0.0-beta" + "data-api-client": "github:ArsenyYankovsky/data-api-client#support-date" } }, "typescript": { diff --git a/package.json b/package.json index 4b60bfacd4..13f95c21b4 100644 --- a/package.json +++ b/package.json @@ -91,7 +91,7 @@ "sqlite3": "^4.0.9", "ts-node": "^8.0.2", "tslint": "^5.13.1", - "typeorm-aurora-data-api-driver": "^1.1.1", + "typeorm-aurora-data-api-driver": "^1.2.0", "typescript": "^3.3.3333" }, "dependencies": { diff --git a/src/driver/aurora-data-api/AuroraDataApiConnectionOptions.ts b/src/driver/aurora-data-api/AuroraDataApiConnectionOptions.ts index 9e9b0d283e..d9468d1e36 100644 --- a/src/driver/aurora-data-api/AuroraDataApiConnectionOptions.ts +++ b/src/driver/aurora-data-api/AuroraDataApiConnectionOptions.ts @@ -21,6 +21,8 @@ export interface AuroraDataApiConnectionOptions extends BaseConnectionOptions, A readonly database: string; + readonly serviceConfigOptions?: { [key: string]: any }; // pass optional AWS.ConfigurationOptions here + /** * Use spatial functions like GeomFromText and AsText which are removed in MySQL 8. * (Default: true) diff --git a/src/driver/aurora-data-api/AuroraDataApiDriver.ts b/src/driver/aurora-data-api/AuroraDataApiDriver.ts index e0c3509610..89b93ccc03 100644 --- a/src/driver/aurora-data-api/AuroraDataApiDriver.ts +++ b/src/driver/aurora-data-api/AuroraDataApiDriver.ts @@ -306,6 +306,7 @@ export class AuroraDataApiDriver implements Driver { this.options.resourceArn, this.options.database, (query: string, parameters?: any[]) => this.connection.logger.logQuery(query, parameters), + this.options.serviceConfigOptions ); // validate options to make sure everything is set diff --git a/test/functional/connection-manager/connection-manager.ts b/test/functional/connection-manager/connection-manager.ts index 6cd86c9d4d..a5ec1afd96 100644 --- a/test/functional/connection-manager/connection-manager.ts +++ b/test/functional/connection-manager/connection-manager.ts @@ -7,6 +7,10 @@ import {PrimaryGeneratedColumn} from "../../../src/decorator/columns/PrimaryGene import {Column} from "../../../src/decorator/columns/Column"; import {Entity} from "../../../src/decorator/entity/Entity"; +// Uncomment when testing the aurora data API driver +// import {AuroraDataApiDriver} from "../../../src/driver/aurora-data-api/AuroraDataApiDriver"; +// import {AuroraDataApiConnectionOptions} from "../../../src/driver/aurora-data-api/AuroraDataApiConnectionOptions"; + describe("ConnectionManager", () => { @Entity() @@ -68,6 +72,23 @@ describe("ConnectionManager", () => { connection.driver.should.be.instanceOf(MysqlDriver); connection.isConnected.should.be.true; await connection.close(); + + it("should create a aurora connection when aurora-data-api driver is specified", async () => { + const options = setupSingleTestingConnection("aurora-data-api", { + name: "aurora-data-api", + dropSchema: false, + schemaCreate: false, + enabledDrivers: ["aurora-data-api"] + }); + const connectionManager = new ConnectionManager(); + const connection = connectionManager.create(options!); + await connection.connect(); + connection.name.should.contain("aurora-data-api"); + connection.driver.should.be.instanceOf(AuroraDataApiDriver); + connection.isConnected.should.be.true; + const serviceConfigOptions = (connection.options as AuroraDataApiConnectionOptions).serviceConfigOptions; + expect(serviceConfigOptions).to.include({ maxRetries: 3, region: "us-east-1" }); + await connection.close(); }); /!* it("should create a postgres connection when postgres driver is specified AND connect to it", async () => {