typeorm-aurora-data-api-driver
Description
This project is a bridge between TypeORM and Aurora Data API. It allows you to migrate to Aurora Data API which is extremely useful is serverless environments by only modifying the connection configuration.
How to use
-
Install the driver by running either
yarn add typeorm-aurora-data-api-driver
ornpm i --save typeorm-aurora-data-api-driver
-
Modify your connection configuration to look similar to this:
const connection = await createConnection({
type: 'aurora-data-api',
database: 'test-db',
secretArn: 'arn:aws:secretsmanager:eu-west-1:537011205135:secret:xxxxxx/xxxxxx/xxxxxx',
resourceArn: 'arn:aws:rds:eu-west-1:xxxxx:xxxxxx:xxxxxx',
region: 'eu-west-1',
serviceConfigOptions: {
// additional options to pass to the aws-sdk RDS client
},
formatOptions: {
// additional format options to pass to the Data API client
}
})
Or if you're using Postgres:
const connection = await createConnection({
type: 'aurora-data-api-pg',
database: 'test-db',
secretArn: 'arn:aws:secretsmanager:eu-west-1:537011205135:secret:xxxxxx/xxxxxx/xxxxxx',
resourceArn: 'arn:aws:rds:eu-west-1:xxxxx:xxxxxx:xxxxxx',
region: 'eu-west-1',
serviceConfigOptions: {
// additional options to pass to the aws-sdk RDS client
},
formatOptions: {
// additional format options to pass to the Data API client
}
})
After you done that you can use the connection just as you did with any other connection:
const postRepository = connection.getRepository(Post)
const post = new Post()
post.title = 'My First Post'
post.text = 'Post Text'
post.likesCount = 4
const insertResult = await postRepository.save(post)
Additional configuration options
This driver uses the Data API Client. To pass additional options to it, use serviceConfigOptions
and formatOptions
properties.
Automatic Casting
By default, this driver will try to cast entity fields on insert and update queries using entity metadata and Data API client's type casting.
This allows using UUID and enum columns which wouldn't be possible before. To disable this behavior, set the formatOptions.castParameters
to false.
Parameter Casting
You can specify casting for query parameters as well. To do that pass an object with properties value
and cast
const dbPost = await postRepository.findOne({
title: {
value: 'f01bdc12-ed72-4260-86aa-b7123f08cab9',
cast: 'uuid',
},
})