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
  cf3232ab_89f0_ca3b_e311_83f479438ca4["PreparedQuery"]
  a33b9761_e026_5d23_a559_f5bba879c2dd["session.ts"]
  cf3232ab_89f0_ca3b_e311_83f479438ca4 -->|defined in| a33b9761_e026_5d23_a559_f5bba879c2dd
  09f7256a_ba88_7ebd_739d_b5dd80df061f["constructor()"]
  cf3232ab_89f0_ca3b_e311_83f479438ca4 -->|method| 09f7256a_ba88_7ebd_739d_b5dd80df061f
  561c84aa_d36c_000a_6d75_80269ca633c2["run()"]
  cf3232ab_89f0_ca3b_e311_83f479438ca4 -->|method| 561c84aa_d36c_000a_6d75_80269ca633c2
  c5ed6177_4390_fbef_968c_6a596ccdd8d7["all()"]
  cf3232ab_89f0_ca3b_e311_83f479438ca4 -->|method| c5ed6177_4390_fbef_968c_6a596ccdd8d7
  6a0cee69_54eb_7baf_3413_15d283c8a016["get()"]
  cf3232ab_89f0_ca3b_e311_83f479438ca4 -->|method| 6a0cee69_54eb_7baf_3413_15d283c8a016
  de468185_feb7_af5b_54d8_82e9fa6216c9["values()"]
  cf3232ab_89f0_ca3b_e311_83f479438ca4 -->|method| de468185_feb7_af5b_54d8_82e9fa6216c9
  77388ce4_7048_7fbb_d7aa_c3613998bd5d["isResponseInArrayMode()"]
  cf3232ab_89f0_ca3b_e311_83f479438ca4 -->|method| 77388ce4_7048_7fbb_d7aa_c3613998bd5d

Relationship Graph

Source Code

drizzle-orm/src/bun-sqlite/session.ts lines 103–174

export class PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends PreparedQueryBase<
	{ type: 'sync'; run: void; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }
> {
	static override readonly [entityKind]: string = 'SQLiteBunPreparedQuery';

	constructor(
		private stmt: Statement,
		query: Query,
		private logger: Logger,
		private fields: SelectedFieldsOrdered | undefined,
		executeMethod: SQLiteExecuteMethod,
		private _isResponseInArrayMode: boolean,
		private customResultMapper?: (rows: unknown[][]) => unknown,
	) {
		super('sync', executeMethod, query);
	}

	run(placeholderValues?: Record<string, unknown>) {
		const params = fillPlaceholders(this.query.params, placeholderValues ?? {});
		this.logger.logQuery(this.query.sql, params);
		return this.stmt.run(...params);
	}

	all(placeholderValues?: Record<string, unknown>): T['all'] {
		const { fields, query, logger, joinsNotNullableMap, stmt, customResultMapper } = this;
		if (!fields && !customResultMapper) {
			const params = fillPlaceholders(query.params, placeholderValues ?? {});
			logger.logQuery(query.sql, params);
			return stmt.all(...params);
		}

		const rows = this.values(placeholderValues) as unknown[][];

		if (customResultMapper) {
			return customResultMapper(rows) as T['all'];
		}

		return rows.map((row) => mapResultRow(fields!, row, joinsNotNullableMap));
	}

	get(placeholderValues?: Record<string, unknown>): T['get'] {
		const params = fillPlaceholders(this.query.params, placeholderValues ?? {});
		this.logger.logQuery(this.query.sql, params);
		const row = this.stmt.values(...params)[0];

		if (!row) {
			return undefined;
		}

		const { fields, joinsNotNullableMap, customResultMapper } = this;
		if (!fields && !customResultMapper) {
			return row;
		}

		if (customResultMapper) {
			return customResultMapper([row]) as T['get'];
		}

		return mapResultRow(fields!, row, joinsNotNullableMap);
	}

	values(placeholderValues?: Record<string, unknown>): T['values'] {
		const params = fillPlaceholders(this.query.params, placeholderValues ?? {});
		this.logger.logQuery(this.query.sql, params);
		return this.stmt.values(...params);
	}

	/** @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/bun-sqlite/session.ts.
Where is PreparedQuery defined?
PreparedQuery is defined in drizzle-orm/src/bun-sqlite/session.ts at line 103.

Analyze Your Own Codebase

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

Try Supermodel Free