PlanetScalePreparedQuery Class — drizzle-orm Architecture
Architecture documentation for the PlanetScalePreparedQuery class in session.ts from the drizzle-orm codebase.
Entity Profile
Dependency Diagram
graph TD a75923e0_3e96_566d_c588_fb84a7e15621["PlanetScalePreparedQuery"] e55f93a1_bb42_b29e_7f05_390a87b09427["session.ts"] a75923e0_3e96_566d_c588_fb84a7e15621 -->|defined in| e55f93a1_bb42_b29e_7f05_390a87b09427 bcf6cfcd_da5e_86f5_a01b_3e319e280592["constructor()"] a75923e0_3e96_566d_c588_fb84a7e15621 -->|method| bcf6cfcd_da5e_86f5_a01b_3e319e280592 73cab381_871d_ad4b_62e2_b6784fb4fbec["execute()"] a75923e0_3e96_566d_c588_fb84a7e15621 -->|method| 73cab381_871d_ad4b_62e2_b6784fb4fbec ac493f8c_e14e_17e4_6db8_824f6e075c9a["iterator()"] a75923e0_3e96_566d_c588_fb84a7e15621 -->|method| ac493f8c_e14e_17e4_6db8_824f6e075c9a
Relationship Graph
Source Code
drizzle-orm/src/planetscale-serverless/session.ts lines 22–111
export class PlanetScalePreparedQuery<T extends MySqlPreparedQueryConfig> extends MySqlPreparedQuery<T> {
static override readonly [entityKind]: string = 'PlanetScalePreparedQuery';
private rawQuery = { as: 'object' } as const;
private query = { as: 'array' } as const;
constructor(
private client: Client | Transaction | Connection,
private queryString: string,
private params: unknown[],
private logger: Logger,
cache: Cache,
queryMetadata: {
type: 'select' | 'update' | 'delete' | 'insert';
tables: string[];
} | undefined,
cacheConfig: WithCacheConfig | undefined,
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(cache, queryMetadata, cacheConfig);
}
async execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {
const params = fillPlaceholders(this.params, placeholderValues);
this.logger.logQuery(this.queryString, params);
const {
fields,
client,
queryString,
rawQuery,
query,
joinsNotNullableMap,
customResultMapper,
returningIds,
generatedIds,
} = this;
if (!fields && !customResultMapper) {
const res = await this.queryWithCache(queryString, params, async () => {
return await client.execute(queryString, params, rawQuery);
});
const insertId = Number.parseFloat(res.insertId);
const affectedRows = res.rowsAffected;
// for each row, I need to check keys from
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 res;
}
const { rows } = await this.queryWithCache(queryString, params, async () => {
return await client.execute(queryString, params, query);
});
if (customResultMapper) {
return customResultMapper(rows as unknown[][]);
Domain
Source
Frequently Asked Questions
What is the PlanetScalePreparedQuery class?
PlanetScalePreparedQuery is a class in the drizzle-orm codebase, defined in drizzle-orm/src/planetscale-serverless/session.ts.
Where is PlanetScalePreparedQuery defined?
PlanetScalePreparedQuery is defined in drizzle-orm/src/planetscale-serverless/session.ts at line 22.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free