Home / Class/ SQLiteD1Session Class — drizzle-orm Architecture

SQLiteD1Session Class — drizzle-orm Architecture

Architecture documentation for the SQLiteD1Session class in session.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  45d8647d_c3c0_0e16_e569_86be8b7dc7ff["SQLiteD1Session"]
  74ae4fc7_01d3_a587_15aa_476edeee51c0["session.ts"]
  45d8647d_c3c0_0e16_e569_86be8b7dc7ff -->|defined in| 74ae4fc7_01d3_a587_15aa_476edeee51c0
  b16916c0_a1a0_b786_5f01_57061c027c5f["constructor()"]
  45d8647d_c3c0_0e16_e569_86be8b7dc7ff -->|method| b16916c0_a1a0_b786_5f01_57061c027c5f
  79977358_15a3_1f4f_4f16_829ac2a0454f["prepareQuery()"]
  45d8647d_c3c0_0e16_e569_86be8b7dc7ff -->|method| 79977358_15a3_1f4f_4f16_829ac2a0454f
  8bf2cef9_a7b3_f918_cc5e_674e07849e68["batch()"]
  45d8647d_c3c0_0e16_e569_86be8b7dc7ff -->|method| 8bf2cef9_a7b3_f918_cc5e_674e07849e68
  b66cf9cd_aa8e_16b2_ff81_aedeb8e82ae8["extractRawAllValueFromBatchResult()"]
  45d8647d_c3c0_0e16_e569_86be8b7dc7ff -->|method| b66cf9cd_aa8e_16b2_ff81_aedeb8e82ae8
  fdda2df5_4c7d_9d4c_6a50_83704af44436["extractRawGetValueFromBatchResult()"]
  45d8647d_c3c0_0e16_e569_86be8b7dc7ff -->|method| fdda2df5_4c7d_9d4c_6a50_83704af44436
  51595780_bbf2_461d_6404_7af6a873a375["extractRawValuesValueFromBatchResult()"]
  45d8647d_c3c0_0e16_e569_86be8b7dc7ff -->|method| 51595780_bbf2_461d_6404_7af6a873a375
  81e68548_fd3e_f31c_c3ec_6e4899bef9c5["transaction()"]
  45d8647d_c3c0_0e16_e569_86be8b7dc7ff -->|method| 81e68548_fd3e_f31c_c3ec_6e4899bef9c5

Relationship Graph

Source Code

drizzle-orm/src/d1/session.ts lines 30–126

export class SQLiteD1Session<
	TFullSchema extends Record<string, unknown>,
	TSchema extends TablesRelationalConfig,
> extends SQLiteSession<'async', D1Result, TFullSchema, TSchema> {
	static override readonly [entityKind]: string = 'SQLiteD1Session';

	private logger: Logger;
	private cache: Cache;

	constructor(
		private client: D1Database,
		dialect: SQLiteAsyncDialect,
		private schema: RelationalSchemaConfig<TSchema> | undefined,
		private options: SQLiteD1SessionOptions = {},
	) {
		super(dialect);
		this.logger = options.logger ?? new NoopLogger();
		this.cache = options.cache ?? new NoopCache();
	}

	prepareQuery(
		query: Query,
		fields: SelectedFieldsOrdered | undefined,
		executeMethod: SQLiteExecuteMethod,
		isResponseInArrayMode: boolean,
		customResultMapper?: (rows: unknown[][]) => unknown,
		queryMetadata?: {
			type: 'select' | 'update' | 'delete' | 'insert';
			tables: string[];
		},
		cacheConfig?: WithCacheConfig,
	): D1PreparedQuery {
		const stmt = this.client.prepare(query.sql);
		return new D1PreparedQuery(
			stmt,
			query,
			this.logger,
			this.cache,
			queryMetadata,
			cacheConfig,
			fields,
			executeMethod,
			isResponseInArrayMode,
			customResultMapper,
		);
	}

	async batch<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T) {
		const preparedQueries: PreparedQuery[] = [];
		const builtQueries: D1PreparedStatement[] = [];

		for (const query of queries) {
			const preparedQuery = query._prepare();
			const builtQuery = preparedQuery.getQuery();
			preparedQueries.push(preparedQuery);
			if (builtQuery.params.length > 0) {
				builtQueries.push((preparedQuery as D1PreparedQuery).stmt.bind(...builtQuery.params));
			} else {
				const builtQuery = preparedQuery.getQuery();
				builtQueries.push(
					this.client.prepare(builtQuery.sql).bind(...builtQuery.params),
				);
			}
		}

		const batchResults = await this.client.batch<any>(builtQueries);
		return batchResults.map((result, i) => preparedQueries[i]!.mapResult(result, true));
	}

	override extractRawAllValueFromBatchResult(result: unknown): unknown {
		return (result as D1Result).results;
	}

	override extractRawGetValueFromBatchResult(result: unknown): unknown {
		return (result as D1Result).results[0];
	}

	override extractRawValuesValueFromBatchResult(result: unknown): unknown {
		return d1ToRawMapping((result as D1Result).results);
	}

Domain

Frequently Asked Questions

What is the SQLiteD1Session class?
SQLiteD1Session is a class in the drizzle-orm codebase, defined in drizzle-orm/src/d1/session.ts.
Where is SQLiteD1Session defined?
SQLiteD1Session is defined in drizzle-orm/src/d1/session.ts at line 30.

Analyze Your Own Codebase

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

Try Supermodel Free