Home / Function/ preparePostgresDB() — drizzle-orm Function Reference

preparePostgresDB() — drizzle-orm Function Reference

Architecture documentation for the preparePostgresDB() function in connections.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  d0c98355_f777_982a_dbcd_e18794db3458["preparePostgresDB()"]
  4e02c2bb_54a8_1500_813e_2cafd1ad4f59["connections.ts"]
  d0c98355_f777_982a_dbcd_e18794db3458 -->|defined in| 4e02c2bb_54a8_1500_813e_2cafd1ad4f59
  773f4a96_2112_a02f_6216_ecef4a99527a["assertPackages()"]
  d0c98355_f777_982a_dbcd_e18794db3458 -->|calls| 773f4a96_2112_a02f_6216_ecef4a99527a
  1cce4157_49ff_47a7_1088_5446d4c9a3be["normalisePGliteUrl()"]
  d0c98355_f777_982a_dbcd_e18794db3458 -->|calls| 1cce4157_49ff_47a7_1088_5446d4c9a3be
  53e6fb89_37aa_cd9c_f6a3_9e6175c0f764["preparePGliteParams()"]
  d0c98355_f777_982a_dbcd_e18794db3458 -->|calls| 53e6fb89_37aa_cd9c_f6a3_9e6175c0f764
  071bfc71_ad06_c0c4_cba2_360298dd4b47["assertUnreachable()"]
  d0c98355_f777_982a_dbcd_e18794db3458 -->|calls| 071bfc71_ad06_c0c4_cba2_360298dd4b47
  7aefe3aa_a868_e43f_09eb_fcf0004526d1["checkPackage()"]
  d0c98355_f777_982a_dbcd_e18794db3458 -->|calls| 7aefe3aa_a868_e43f_09eb_fcf0004526d1
  style d0c98355_f777_982a_dbcd_e18794db3458 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

drizzle-kit/src/cli/connections.ts lines 28–534

export const preparePostgresDB = async (
	credentials: PostgresCredentials | {
		driver: 'pglite';
		client: PGlite;
	},
): Promise<
	DB & {
		packageName:
			| '@aws-sdk/client-rds-data'
			| 'pglite'
			| 'pg'
			| 'postgres'
			| '@vercel/postgres'
			| '@neondatabase/serverless';
		proxy: Proxy;
		transactionProxy: TransactionProxy;
		migrate: (config: string | MigrationConfig) => Promise<void>;
	}
> => {
	if ('driver' in credentials) {
		const { driver } = credentials;
		if (driver === 'aws-data-api') {
			assertPackages('@aws-sdk/client-rds-data');
			const { RDSDataClient, ExecuteStatementCommand, TypeHint } = await import(
				'@aws-sdk/client-rds-data'
			);
			const { AwsDataApiSession, drizzle } = await import(
				'drizzle-orm/aws-data-api/pg'
			);
			const { migrate } = await import('drizzle-orm/aws-data-api/pg/migrator');
			const { PgDialect } = await import('drizzle-orm/pg-core');

			const config: AwsDataApiSessionOptions = {
				database: credentials.database,
				resourceArn: credentials.resourceArn,
				secretArn: credentials.secretArn,
			};
			const rdsClient = new RDSDataClient();
			const session = new AwsDataApiSession(
				rdsClient,
				new PgDialect(),
				undefined,
				config,
				undefined,
			);

			const db = drizzle(rdsClient, config);
			const migrateFn = async (config: MigrationConfig) => {
				return migrate(db, config);
			};

			const query = async (sql: string, params: any[]) => {
				const prepared = session.prepareQuery(
					{ sql, params: params ?? [] },
					undefined,
					undefined,
					false,
				);
				const result = await prepared.all();
				return result as any[];
			};
			const proxy = async (params: ProxyParams) => {
				const prepared = session.prepareQuery<
					PreparedQueryConfig & {
						execute: AwsDataApiPgQueryResult<unknown>;
						values: AwsDataApiPgQueryResult<unknown[]>;
					}
				>(
					{
						sql: params.sql,
						params: params.params ?? [],
						typings: params.typings,
					},
					undefined,
					undefined,
					params.mode === 'array',
				);
				if (params.mode === 'array') {
					const result = await prepared.values();
					return result.rows;
				}

Domain

Subdomains

Frequently Asked Questions

What does preparePostgresDB() do?
preparePostgresDB() is a function in the drizzle-orm codebase, defined in drizzle-kit/src/cli/connections.ts.
Where is preparePostgresDB() defined?
preparePostgresDB() is defined in drizzle-kit/src/cli/connections.ts at line 28.
What does preparePostgresDB() call?
preparePostgresDB() calls 5 function(s): assertPackages, assertUnreachable, checkPackage, normalisePGliteUrl, preparePGliteParams.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free