NeonHttpSession Class — drizzle-orm Architecture
Architecture documentation for the NeonHttpSession class in session.ts from the drizzle-orm codebase.
Entity Profile
Dependency Diagram
graph TD b5f39cbd_0992_c93c_e18e_1884481a37ac["NeonHttpSession"] 8c075175_ed31_3ec7_952e_c0a6558abc34["session.ts"] b5f39cbd_0992_c93c_e18e_1884481a37ac -->|defined in| 8c075175_ed31_3ec7_952e_c0a6558abc34 88fb68f3_7cd0_47db_ef4d_71dd6c8f4ee1["constructor()"] b5f39cbd_0992_c93c_e18e_1884481a37ac -->|method| 88fb68f3_7cd0_47db_ef4d_71dd6c8f4ee1 869c5233_9fc6_1a8a_10b1_ea7068389da1["prepareQuery()"] b5f39cbd_0992_c93c_e18e_1884481a37ac -->|method| 869c5233_9fc6_1a8a_10b1_ea7068389da1 c7e65865_976b_3541_a589_439b5bed44ab["batch()"] b5f39cbd_0992_c93c_e18e_1884481a37ac -->|method| c7e65865_976b_3541_a589_439b5bed44ab c6aaf844_5da2_e7e5_2eba_f3b858a2772c["query()"] b5f39cbd_0992_c93c_e18e_1884481a37ac -->|method| c6aaf844_5da2_e7e5_2eba_f3b858a2772c ad4f319c_74f1_de70_fcaa_6e54b41eebaf["queryObjects()"] b5f39cbd_0992_c93c_e18e_1884481a37ac -->|method| ad4f319c_74f1_de70_fcaa_6e54b41eebaf 2dd6fe88_195e_91f7_2484_4873f88a14d2["count()"] b5f39cbd_0992_c93c_e18e_1884481a37ac -->|method| 2dd6fe88_195e_91f7_2484_4873f88a14d2 52c1ef7d_81ad_6f3b_1b54_31d8fade3656["transaction()"] b5f39cbd_0992_c93c_e18e_1884481a37ac -->|method| 52c1ef7d_81ad_6f3b_1b54_31d8fade3656
Relationship Graph
Source Code
drizzle-orm/src/neon-http/session.ts lines 149–255
export class NeonHttpSession<
TFullSchema extends Record<string, unknown>,
TSchema extends TablesRelationalConfig,
> extends PgSession<NeonHttpQueryResultHKT, TFullSchema, TSchema> {
static override readonly [entityKind]: string = 'NeonHttpSession';
private clientQuery: (sql: string, params: any[], opts: Record<string, any>) => NeonQueryPromise<any, any>;
private logger: Logger;
private cache: Cache;
constructor(
private client: NeonHttpClient,
dialect: PgDialect,
private schema: RelationalSchemaConfig<TSchema> | undefined,
private options: NeonHttpSessionOptions = {},
) {
super(dialect);
// `client.query` is for @neondatabase/serverless v1.0.0 and up, where the
// root query function `client` is only usable as a template function;
// `client` is a fallback for earlier versions
this.clientQuery = (client as any).query ?? client as any;
this.logger = options.logger ?? new NoopLogger();
this.cache = options.cache ?? new NoopCache();
}
prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(
query: Query,
fields: SelectedFieldsOrdered | undefined,
name: string | undefined,
isResponseInArrayMode: boolean,
customResultMapper?: (rows: unknown[][]) => T['execute'],
queryMetadata?: {
type: 'select' | 'update' | 'delete' | 'insert';
tables: string[];
},
cacheConfig?: WithCacheConfig,
): PgPreparedQuery<T> {
return new NeonHttpPreparedQuery(
this.client,
query,
this.logger,
this.cache,
queryMetadata,
cacheConfig,
fields,
isResponseInArrayMode,
customResultMapper,
);
}
async batch<U extends BatchItem<'pg'>, T extends Readonly<[U, ...U[]]>>(
queries: T,
) {
const preparedQueries: PreparedQuery[] = [];
const builtQueries: NeonQueryPromise<any, true>[] = [];
for (const query of queries) {
const preparedQuery = query._prepare();
const builtQuery = preparedQuery.getQuery();
preparedQueries.push(preparedQuery);
builtQueries.push(
this.clientQuery(builtQuery.sql, builtQuery.params, {
fullResults: true,
arrayMode: preparedQuery.isResponseInArrayMode(),
}),
);
}
const batchResults = await this.client.transaction(builtQueries, queryConfig);
return batchResults.map((result, i) => preparedQueries[i]!.mapResult(result, true)) as any;
}
// change return type to QueryRows<true>
async query(query: string, params: unknown[]): Promise<FullQueryResults<true>> {
this.logger.logQuery(query, params);
const result = await this.clientQuery(query, params, { arrayMode: true, fullResults: true });
return result;
}
// change return type to QueryRows<false>
async queryObjects(
Domain
Defined In
Source
Frequently Asked Questions
What is the NeonHttpSession class?
NeonHttpSession is a class in the drizzle-orm codebase, defined in drizzle-orm/src/neon-http/session.ts.
Where is NeonHttpSession defined?
NeonHttpSession is defined in drizzle-orm/src/neon-http/session.ts at line 149.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free