Skip to content

Commit 1829f96

Browse files
authored
feat: aurora Data API - Support for AWS configuration options through aurora driver (#5754)
* AWS.ConfigurationOptions added to AuroraDataApiConnectionOptions Updated typeorm-aurora-data-api-driver to 1.2.0 for the support of the new constructor argument. * Unit test for aurora-data-api driver and validation that service config options are passed * Leaving skip to false for aurora seems to fail some unit tests
1 parent 8ac5d5d commit 1829f96

File tree

6 files changed

+44
-8
lines changed

6 files changed

+44
-8
lines changed

ormconfig.json.dist

+13
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
]

package-lock.json

+6-7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
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": {

src/driver/aurora-data-api/AuroraDataApiConnectionOptions.ts

+2
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)

src/driver/aurora-data-api/AuroraDataApiDriver.ts

+1
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

test/functional/connection-manager/connection-manager.ts

+21
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 () => {

0 commit comments

Comments
 (0)