feat: aurora Data API - Support for AWS configuration options through… · typeorm/typeorm@1829f96

File tree

6 files changed

lines changed

  • src/driver/aurora-data-api

  • test/functional/connection-manager

6 files changed

lines changed

Original file line numberDiff line numberDiff line change

@@ -90,5 +90,18 @@

9090

"logging": false,

9191

"useNewUrlParser": true,

9292

"useUnifiedTopology": true

93+

},

94+

{

95+

"skip": true,

96+

"name": "aurora-data-api",

97+

"type": "aurora-data-api",

98+

"region": "us-east-1",

99+

"secretArn": "mysecret",

100+

"resourceArn": "app-dbcluster",

101+

"database": "app-dbcluster-mine",

102+

"serviceConfigOptions": {

103+

"maxRetries": 3

104+

},

105+

"logging": false

93106

}

94107

]

Original file line numberDiff line numberDiff line change

@@ -91,7 +91,7 @@

9191

"sqlite3": "^4.0.9",

9292

"ts-node": "^8.0.2",

9393

"tslint": "^5.13.1",

94-

"typeorm-aurora-data-api-driver": "^1.1.1",

94+

"typeorm-aurora-data-api-driver": "^1.2.0",

9595

"typescript": "^3.3.3333"

9696

},

9797

"dependencies": {

Original file line numberDiff line numberDiff line change

@@ -21,6 +21,8 @@ export interface AuroraDataApiConnectionOptions extends BaseConnectionOptions, A

2121
2222

readonly database: string;

2323
24+

readonly serviceConfigOptions?: { [key: string]: any }; // pass optional AWS.ConfigurationOptions here

25+
2426

/**

2527

* Use spatial functions like GeomFromText and AsText which are removed in MySQL 8.

2628

* (Default: true)

Original file line numberDiff line numberDiff line change

@@ -306,6 +306,7 @@ export class AuroraDataApiDriver implements Driver {

306306

this.options.resourceArn,

307307

this.options.database,

308308

(query: string, parameters?: any[]) => this.connection.logger.logQuery(query, parameters),

309+

this.options.serviceConfigOptions

309310

);

310311
311312

// validate options to make sure everything is set

Original file line numberDiff line numberDiff line change

@@ -7,6 +7,10 @@ import {PrimaryGeneratedColumn} from "../../../src/decorator/columns/PrimaryGene

77

import {Column} from "../../../src/decorator/columns/Column";

88

import {Entity} from "../../../src/decorator/entity/Entity";

99
10+

// Uncomment when testing the aurora data API driver

11+

// import {AuroraDataApiDriver} from "../../../src/driver/aurora-data-api/AuroraDataApiDriver";

12+

// import {AuroraDataApiConnectionOptions} from "../../../src/driver/aurora-data-api/AuroraDataApiConnectionOptions";

13+
1014

describe("ConnectionManager", () => {

1115
1216

@Entity()

@@ -68,6 +72,23 @@ describe("ConnectionManager", () => {

6872

connection.driver.should.be.instanceOf(MysqlDriver);

6973

connection.isConnected.should.be.true;

7074

await connection.close();

75+
76+

it("should create a aurora connection when aurora-data-api driver is specified", async () => {

77+

const options = setupSingleTestingConnection("aurora-data-api", {

78+

name: "aurora-data-api",

79+

dropSchema: false,

80+

schemaCreate: false,

81+

enabledDrivers: ["aurora-data-api"]

82+

});

83+

const connectionManager = new ConnectionManager();

84+

const connection = connectionManager.create(options!);

85+

await connection.connect();

86+

connection.name.should.contain("aurora-data-api");

87+

connection.driver.should.be.instanceOf(AuroraDataApiDriver);

88+

connection.isConnected.should.be.true;

89+

const serviceConfigOptions = (connection.options as AuroraDataApiConnectionOptions).serviceConfigOptions;

90+

expect(serviceConfigOptions).to.include({ maxRetries: 3, region: "us-east-1" });

91+

await connection.close();

7192

});

7293
7394

/!* it("should create a postgres connection when postgres driver is specified AND connect to it", async () => {