Home / File/ driver.ts — drizzle-orm Source File

driver.ts — drizzle-orm Source File

Architecture documentation for driver.ts, a typescript file in the drizzle-orm codebase. 10 imports, 1 dependents.

File typescript DrizzleORM SchemaDefinitions 10 imports 1 dependents 3 functions 2 classes

Entity Profile

Dependency Diagram

graph LR
  b8be24c8_f2c3_f7b5_d0e4_5cbfa67d184d["driver.ts"]
  223b1670_cf19_ea20_e3b8_2f6521af9267["session.ts"]
  b8be24c8_f2c3_f7b5_d0e4_5cbfa67d184d --> 223b1670_cf19_ea20_e3b8_2f6521af9267
  0e8153cc_2526_728d_c6d8_b722aeb1f227["NeonSession"]
  b8be24c8_f2c3_f7b5_d0e4_5cbfa67d184d --> 0e8153cc_2526_728d_c6d8_b722aeb1f227
  a6737c71_82b6_c418_5dc8_5d36faf0db5d["serverless"]
  b8be24c8_f2c3_f7b5_d0e4_5cbfa67d184d --> a6737c71_82b6_c418_5dc8_5d36faf0db5d
  5783c00b_125d_a011_46ec_a468ce9ecace["cache.ts"]
  b8be24c8_f2c3_f7b5_d0e4_5cbfa67d184d --> 5783c00b_125d_a011_46ec_a468ce9ecace
  9347c3af_060d_bd99_cd17_d7f17fadf7cb["entity.ts"]
  b8be24c8_f2c3_f7b5_d0e4_5cbfa67d184d --> 9347c3af_060d_bd99_cd17_d7f17fadf7cb
  0847bcb9_09e4_7324_4f43_dfb250de02fc["logger.ts"]
  b8be24c8_f2c3_f7b5_d0e4_5cbfa67d184d --> 0847bcb9_09e4_7324_4f43_dfb250de02fc
  1971d163_dd43_68ad_b49a_7e21d2f5d1ce["db.ts"]
  b8be24c8_f2c3_f7b5_d0e4_5cbfa67d184d --> 1971d163_dd43_68ad_b49a_7e21d2f5d1ce
  15de0fd8_4ebe_c1dd_f9d8_4c2711730d6c["dialect.ts"]
  b8be24c8_f2c3_f7b5_d0e4_5cbfa67d184d --> 15de0fd8_4ebe_c1dd_f9d8_4c2711730d6c
  3a0d6283_b08d_f0ff_8c5a_dd41d7ac83d0["relations.ts"]
  b8be24c8_f2c3_f7b5_d0e4_5cbfa67d184d --> 3a0d6283_b08d_f0ff_8c5a_dd41d7ac83d0
  75901f99_b0fe_057b_6268_cf00202bd6f8["utils.ts"]
  b8be24c8_f2c3_f7b5_d0e4_5cbfa67d184d --> 75901f99_b0fe_057b_6268_cf00202bd6f8
  dfc4e251_b53e_5da7_ada7_718662957316["migrator.ts"]
  dfc4e251_b53e_5da7_ada7_718662957316 --> b8be24c8_f2c3_f7b5_d0e4_5cbfa67d184d
  style b8be24c8_f2c3_f7b5_d0e4_5cbfa67d184d fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import { neonConfig, Pool, type PoolConfig } from '@neondatabase/serverless';
import type { Cache } from '~/cache/core/cache.ts';
import { entityKind } from '~/entity.ts';
import type { Logger } from '~/logger.ts';
import { DefaultLogger } from '~/logger.ts';
import { PgDatabase } from '~/pg-core/db.ts';
import { PgDialect } from '~/pg-core/dialect.ts';
import {
	createTableRelationsHelpers,
	extractTablesRelationalConfig,
	type RelationalSchemaConfig,
	type TablesRelationalConfig,
} from '~/relations.ts';
import { type DrizzleConfig, isConfig } from '~/utils.ts';
import type { NeonClient, NeonQueryResultHKT } from './session.ts';
import { NeonSession } from './session.ts';

export interface NeonDriverOptions {
	logger?: Logger;
	cache?: Cache;
}

export class NeonDriver {
	static readonly [entityKind]: string = 'NeonDriver';

	constructor(
		private client: NeonClient,
		private dialect: PgDialect,
		private options: NeonDriverOptions = {},
	) {
	}

	createSession(
		schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined,
	): NeonSession<Record<string, unknown>, TablesRelationalConfig> {
		return new NeonSession(this.client, this.dialect, schema, {
			logger: this.options.logger,
			cache: this.options.cache,
		});
	}
}

export class NeonDatabase<
	TSchema extends Record<string, unknown> = Record<string, never>,
> extends PgDatabase<NeonQueryResultHKT, TSchema> {
	static override readonly [entityKind]: string = 'NeonServerlessDatabase';
}

function construct<
	TSchema extends Record<string, unknown> = Record<string, never>,
	TClient extends NeonClient = NeonClient,
>(
	client: TClient,
	config: DrizzleConfig<TSchema> = {},
): NeonDatabase<TSchema> & {
	$client: NeonClient extends TClient ? Pool : TClient;
} {
	const dialect = new PgDialect({ casing: config.casing });
	let logger;
	if (config.logger === true) {
// ... (98 more lines)

Domain

Subdomains

Dependencies

Frequently Asked Questions

What does driver.ts do?
driver.ts is a source file in the drizzle-orm codebase, written in typescript. It belongs to the DrizzleORM domain, SchemaDefinitions subdomain.
What functions are defined in driver.ts?
driver.ts defines 3 function(s): construct, drizzle, mock.
What does driver.ts depend on?
driver.ts imports 10 module(s): NeonSession, cache.ts, db.ts, dialect.ts, entity.ts, logger.ts, relations.ts, serverless, and 2 more.
What files import driver.ts?
driver.ts is imported by 1 file(s): migrator.ts.
Where is driver.ts in the architecture?
driver.ts is located at drizzle-orm/src/neon-serverless/driver.ts (domain: DrizzleORM, subdomain: SchemaDefinitions, directory: drizzle-orm/src/neon-serverless).

Analyze Your Own Codebase

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

Try Supermodel Free