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
  4211462d_124d_57bd_dbdd_87a3fb88aa42["PreparedQuery"]
  3e7817ff_62e3_124e_fc75_14f2f00d713e["session.ts"]
  4211462d_124d_57bd_dbdd_87a3fb88aa42 -->|defined in| 3e7817ff_62e3_124e_fc75_14f2f00d713e
  f208f001_4e84_0d7a_f8fa_ea9e66a49ccf["constructor()"]
  4211462d_124d_57bd_dbdd_87a3fb88aa42 -->|method| f208f001_4e84_0d7a_f8fa_ea9e66a49ccf
  094f68fe_e31f_7ed0_3c51_c4812ab4cf54["run()"]
  4211462d_124d_57bd_dbdd_87a3fb88aa42 -->|method| 094f68fe_e31f_7ed0_3c51_c4812ab4cf54
  86441e94_5f3c_a5b0_9d97_882c7e4930b8["all()"]
  4211462d_124d_57bd_dbdd_87a3fb88aa42 -->|method| 86441e94_5f3c_a5b0_9d97_882c7e4930b8
  107a70d3_ca96_3674_4bdf_7ba6bf05d541["get()"]
  4211462d_124d_57bd_dbdd_87a3fb88aa42 -->|method| 107a70d3_ca96_3674_4bdf_7ba6bf05d541
  63289279_d100_333f_5444_0e8cc979d419["values()"]
  4211462d_124d_57bd_dbdd_87a3fb88aa42 -->|method| 63289279_d100_333f_5444_0e8cc979d419
  1feebf25_72c1_9f90_48aa_38b595ad72cf["isResponseInArrayMode()"]
  4211462d_124d_57bd_dbdd_87a3fb88aa42 -->|method| 1feebf25_72c1_9f90_48aa_38b595ad72cf

Relationship Graph

Source Code

drizzle-orm/src/better-sqlite3/session.ts lines 106–182

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

	constructor(
		private stmt: Statement,
		query: Query,
		private logger: Logger,
		cache: Cache,
		queryMetadata: {
			type: 'select' | 'update' | 'delete' | 'insert';
			tables: string[];
		} | undefined,
		cacheConfig: WithCacheConfig | undefined,
		private fields: SelectedFieldsOrdered | undefined,
		executeMethod: SQLiteExecuteMethod,
		private _isResponseInArrayMode: boolean,
		private customResultMapper?: (rows: unknown[][]) => unknown,
	) {
		super('sync', executeMethod, query, cache, queryMetadata, cacheConfig);
	}

	run(placeholderValues?: Record<string, unknown>): RunResult {
		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, joinsNotNullableMap, query, logger, 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 { fields, stmt, joinsNotNullableMap, customResultMapper } = this;
		if (!fields && !customResultMapper) {
			return stmt.get(...params);
		}

		const row = stmt.raw().get(...params) as unknown[];

		if (!row) {
			return undefined;
		}

		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.raw().all(...params) as T['values'];
	}

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

Analyze Your Own Codebase

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

Try Supermodel Free