Home / Class/ PreparedQuery Class — drizzle-orm Architecture

PreparedQuery Class — drizzle-orm Architecture

Architecture documentation for the PreparedQuery class in session.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  16b981b5_3bbc_75b1_a0c4_72a6e30323d2["PreparedQuery"]
  271f5ca2_4cd0_ab39_be04_a2370f5c940c["session.ts"]
  16b981b5_3bbc_75b1_a0c4_72a6e30323d2 -->|defined in| 271f5ca2_4cd0_ab39_be04_a2370f5c940c
  8b3a8bf6_16e6_6534_71f7_87971008b30a["constructor()"]
  16b981b5_3bbc_75b1_a0c4_72a6e30323d2 -->|method| 8b3a8bf6_16e6_6534_71f7_87971008b30a
  564340c4_f5a9_345a_1229_5aa4a12018cc["execute()"]
  16b981b5_3bbc_75b1_a0c4_72a6e30323d2 -->|method| 564340c4_f5a9_345a_1229_5aa4a12018cc
  f648640d_46d5_09c2_3eef_053af5ebbaee["all()"]
  16b981b5_3bbc_75b1_a0c4_72a6e30323d2 -->|method| f648640d_46d5_09c2_3eef_053af5ebbaee
  4d32177d_f7ef_f449_ac05_2b1759dd22c5["isResponseInArrayMode()"]
  16b981b5_3bbc_75b1_a0c4_72a6e30323d2 -->|method| 4d32177d_f7ef_f449_ac05_2b1759dd22c5

Relationship Graph

Source Code

drizzle-orm/src/pg-proxy/session.ts lines 91–163

export class PreparedQuery<T extends PreparedQueryConfig> extends PreparedQueryBase<T> {
	static override readonly [entityKind]: string = 'PgProxyPreparedQuery';

	constructor(
		private client: RemoteCallback,
		private queryString: string,
		private params: unknown[],
		private typings: any[] | undefined,
		private logger: Logger,
		cache: Cache,
		queryMetadata: {
			type: 'select' | 'update' | 'delete' | 'insert';
			tables: string[];
		} | undefined,
		cacheConfig: WithCacheConfig | undefined,
		private fields: SelectedFieldsOrdered | undefined,
		private _isResponseInArrayMode: boolean,
		private customResultMapper?: (rows: unknown[][]) => T['execute'],
	) {
		super({ sql: queryString, params }, cache, queryMetadata, cacheConfig);
	}

	async execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {
		return tracer.startActiveSpan('drizzle.execute', async (span) => {
			const params = fillPlaceholders(this.params, placeholderValues);
			const { fields, client, queryString, joinsNotNullableMap, customResultMapper, logger, typings } = this;

			span?.setAttributes({
				'drizzle.query.text': queryString,
				'drizzle.query.params': JSON.stringify(params),
			});

			logger.logQuery(queryString, params);

			if (!fields && !customResultMapper) {
				return tracer.startActiveSpan('drizzle.driver.execute', async () => {
					const { rows } = await this.queryWithCache(queryString, params, async () => {
						return await client(queryString, params as any[], 'execute', typings);
					});

					return rows;
				});
			}

			const rows = await tracer.startActiveSpan('drizzle.driver.execute', async () => {
				span?.setAttributes({
					'drizzle.query.text': queryString,
					'drizzle.query.params': JSON.stringify(params),
				});

				const { rows } = await this.queryWithCache(queryString, params, async () => {
					return await client(queryString, params as any[], 'all', typings);
				});

				return rows;
			});

			return tracer.startActiveSpan('drizzle.mapResponse', () => {
				return customResultMapper
					? customResultMapper(rows)
					: rows.map((row) => mapResultRow<T['execute']>(fields!, row, joinsNotNullableMap));
			});
		});
	}

	async all() {
	}

	/** @internal */
	isResponseInArrayMode(): boolean {
		return this._isResponseInArrayMode;
	}
}

Domain

Frequently Asked Questions

What is the PreparedQuery class?
PreparedQuery is a class in the drizzle-orm codebase, defined in drizzle-orm/src/pg-proxy/session.ts.
Where is PreparedQuery defined?
PreparedQuery is defined in drizzle-orm/src/pg-proxy/session.ts at line 91.

Analyze Your Own Codebase

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

Try Supermodel Free