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 07b7ab00_7d65_c76a_4c77_804029f6d45a["PreparedQuery"] f0dbfcbc_3a7a_86b5_87c4_1c8be096695c["session.ts"] 07b7ab00_7d65_c76a_4c77_804029f6d45a -->|defined in| f0dbfcbc_3a7a_86b5_87c4_1c8be096695c e9844adc_9c33_47f1_f789_ccb9f36e5f05["constructor()"] 07b7ab00_7d65_c76a_4c77_804029f6d45a -->|method| e9844adc_9c33_47f1_f789_ccb9f36e5f05 30bc3515_3988_4330_de11_e6640036f75e["execute()"] 07b7ab00_7d65_c76a_4c77_804029f6d45a -->|method| 30bc3515_3988_4330_de11_e6640036f75e 97ed93bf_00b2_cda1_f238_99f8084f0dd4["iterator()"] 07b7ab00_7d65_c76a_4c77_804029f6d45a -->|method| 97ed93bf_00b2_cda1_f238_99f8084f0dd4
Relationship Graph
Source Code
drizzle-orm/src/singlestore-proxy/session.ts lines 98–170
export class PreparedQuery<T extends SingleStorePreparedQueryConfig> extends PreparedQueryBase<T> {
static override readonly [entityKind]: string = 'SingleStoreProxyPreparedQuery';
constructor(
private client: RemoteCallback,
private queryString: string,
private params: unknown[],
private logger: Logger,
private fields: SelectedFieldsOrdered | undefined,
private customResultMapper?: (rows: unknown[][]) => T['execute'],
// Keys that were used in $default and the value that was generated for them
private generatedIds?: Record<string, unknown>[],
// Keys that should be returned, it has the column with all properries + key from object
private returningIds?: SelectedFieldsOrdered,
) {
super();
}
async execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {
const params = fillPlaceholders(this.params, placeholderValues);
const { fields, client, queryString, logger, joinsNotNullableMap, customResultMapper, returningIds, generatedIds } =
this;
logger.logQuery(queryString, params);
if (!fields && !customResultMapper) {
const { rows: data } = await client(queryString, params, 'execute');
const insertId = data[0].insertId as number;
const affectedRows = data[0].affectedRows;
if (returningIds) {
const returningResponse = [];
let j = 0;
for (let i = insertId; i < insertId + affectedRows; i++) {
for (const column of returningIds) {
const key = returningIds[0]!.path[0]!;
if (is(column.field, Column)) {
// @ts-ignore
if (column.field.primary && column.field.autoIncrement) {
returningResponse.push({ [key]: i });
}
if (column.field.defaultFn && generatedIds) {
// generatedIds[rowIdx][key]
returningResponse.push({ [key]: generatedIds[j]![key] });
}
}
}
j++;
}
return returningResponse;
}
return data;
}
const { rows } = await client(queryString, params, 'all');
if (customResultMapper) {
return customResultMapper(rows);
}
return rows.map((row) => mapResultRow<T['execute']>(fields!, row, joinsNotNullableMap));
}
override iterator(
_placeholderValues: Record<string, unknown> = {},
): AsyncGenerator<T['iterator']> {
throw new Error('Streaming is not supported by the SingleStore Proxy driver');
}
}
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/singlestore-proxy/session.ts.
Where is PreparedQuery defined?
PreparedQuery is defined in drizzle-orm/src/singlestore-proxy/session.ts at line 98.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free