(
credentials: PostgresCredentials | {
driver: 'pglite';
client: PGlite;
},
)
| 26 | import type { SqliteCredentials } from './validations/sqlite'; |
| 27 | |
| 28 | export const preparePostgresDB = async ( |
| 29 | credentials: PostgresCredentials | { |
| 30 | driver: 'pglite'; |
| 31 | client: PGlite; |
| 32 | }, |
| 33 | ): Promise< |
| 34 | DB & { |
| 35 | packageName: |
| 36 | | '@aws-sdk/client-rds-data' |
| 37 | | 'pglite' |
| 38 | | 'pg' |
| 39 | | 'postgres' |
| 40 | | '@vercel/postgres' |
| 41 | | '@neondatabase/serverless'; |
| 42 | proxy: Proxy; |
| 43 | transactionProxy: TransactionProxy; |
| 44 | migrate: (config: string | MigrationConfig) => Promise<void>; |
| 45 | } |
| 46 | > => { |
| 47 | if ('driver' in credentials) { |
| 48 | const { driver } = credentials; |
| 49 | if (driver === 'aws-data-api') { |
| 50 | assertPackages('@aws-sdk/client-rds-data'); |
| 51 | const { RDSDataClient, ExecuteStatementCommand, TypeHint } = await import( |
| 52 | '@aws-sdk/client-rds-data' |
| 53 | ); |
| 54 | const { AwsDataApiSession, drizzle } = await import( |
| 55 | 'drizzle-orm/aws-data-api/pg' |
| 56 | ); |
| 57 | const { migrate } = await import('drizzle-orm/aws-data-api/pg/migrator'); |
| 58 | const { PgDialect } = await import('drizzle-orm/pg-core'); |
| 59 | |
| 60 | const config: AwsDataApiSessionOptions = { |
| 61 | database: credentials.database, |
| 62 | resourceArn: credentials.resourceArn, |
| 63 | secretArn: credentials.secretArn, |
| 64 | }; |
| 65 | const rdsClient = new RDSDataClient(); |
| 66 | const session = new AwsDataApiSession( |
| 67 | rdsClient, |
| 68 | new PgDialect(), |
| 69 | undefined, |
| 70 | config, |
| 71 | undefined, |
| 72 | ); |
| 73 | |
| 74 | const db = drizzle(rdsClient, config); |
| 75 | const migrateFn = async (config: MigrationConfig) => { |
| 76 | return migrate(db, config); |
| 77 | }; |
| 78 | |
| 79 | const query = async (sql: string, params: any[]) => { |
| 80 | const prepared = session.prepareQuery( |
| 81 | { sql, params: params ?? [] }, |
| 82 | undefined, |
| 83 | undefined, |
| 84 | false, |
| 85 | ); |
no test coverage detected