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
Defined In
Source
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