import { Agent } from 'https' import { DynamoDBClient } from '@aws-sdk/client-dynamodb' import { NodeHttpHandler } from '@smithy/node-http-handler' import { Database } from '../../Database.js' import type { DbConfig } from '../../types.js' export class DynamoDatabase extends Database { private static dynamoProvider = DynamoDBClient public readonly client: DynamoDBClient constructor(config: DbConfig<'dynamo'>) { super(config) this.client = this.providerFactory(config) } public override async transaction(): Promise { return Promise.resolve(null) } private providerFactory(config: DbConfig<'dynamo'>) { return new DynamoDatabase.dynamoProvider({ region: config.region, maxAttempts: config.maxAttempts || 3, requestHandler: new NodeHttpHandler({ connectionTimeout: config.connectionTimeout || 60000, socketTimeout: config.connectionTimeout || 60000, httpsAgent: new Agent({ keepAlive: false, maxSockets: 50, rejectUnauthorized: true }), }), }) } }