Home / Class/ LibSQLSession Class — drizzle-orm Architecture

LibSQLSession Class — drizzle-orm Architecture

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

Entity Profile

Dependency Diagram

graph TD
  916e21cc_0bbc_927f_ecfb_2147725c35d9["LibSQLSession"]
  71955c9c_98bb_2bea_3a87_96f5a4be3a27["session.ts"]
  916e21cc_0bbc_927f_ecfb_2147725c35d9 -->|defined in| 71955c9c_98bb_2bea_3a87_96f5a4be3a27
  bb8f3a3a_9b88_1e1a_494c_b9555048f0e2["constructor()"]
  916e21cc_0bbc_927f_ecfb_2147725c35d9 -->|method| bb8f3a3a_9b88_1e1a_494c_b9555048f0e2
  cd8ec767_2938_1942_0cfa_7fc8514b341d["prepareQuery()"]
  916e21cc_0bbc_927f_ecfb_2147725c35d9 -->|method| cd8ec767_2938_1942_0cfa_7fc8514b341d
  f1398619_7f2a_6c22_7058_492ca9a315c6["batch()"]
  916e21cc_0bbc_927f_ecfb_2147725c35d9 -->|method| f1398619_7f2a_6c22_7058_492ca9a315c6
  a8a5527a_db1e_516f_b02f_44fc2fb3bb60["migrate()"]
  916e21cc_0bbc_927f_ecfb_2147725c35d9 -->|method| a8a5527a_db1e_516f_b02f_44fc2fb3bb60
  dfcf521d_dee0_e241_fb38_def3a1295652["transaction()"]
  916e21cc_0bbc_927f_ecfb_2147725c35d9 -->|method| dfcf521d_dee0_e241_fb38_def3a1295652
  ec16b461_9596_f3d0_7dee_6b45314e609f["extractRawAllValueFromBatchResult()"]
  916e21cc_0bbc_927f_ecfb_2147725c35d9 -->|method| ec16b461_9596_f3d0_7dee_6b45314e609f
  8bfa1666_6271_3964_4dd8_5b2e8249c427["extractRawGetValueFromBatchResult()"]
  916e21cc_0bbc_927f_ecfb_2147725c35d9 -->|method| 8bfa1666_6271_3964_4dd8_5b2e8249c427
  191e016f_0b14_56e2_0a67_6013b423d424["extractRawValuesValueFromBatchResult()"]
  916e21cc_0bbc_927f_ecfb_2147725c35d9 -->|method| 191e016f_0b14_56e2_0a67_6013b423d424

Relationship Graph

Source Code

drizzle-orm/src/libsql/session.ts lines 29–142

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

	private logger: Logger;
	private cache: Cache;

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

	prepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(
		query: Query,
		fields: SelectedFieldsOrdered | undefined,
		executeMethod: SQLiteExecuteMethod,
		isResponseInArrayMode: boolean,
		customResultMapper?: (rows: unknown[][]) => unknown,
		queryMetadata?: {
			type: 'select' | 'update' | 'delete' | 'insert';
			tables: string[];
		},
		cacheConfig?: WithCacheConfig,
	): LibSQLPreparedQuery<T> {
		return new LibSQLPreparedQuery(
			this.client,
			query,
			this.logger,
			this.cache,
			queryMetadata,
			cacheConfig,
			fields,
			this.tx,
			executeMethod,
			isResponseInArrayMode,
			customResultMapper,
		);
	}

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

		for (const query of queries) {
			const preparedQuery = query._prepare();
			const builtQuery = preparedQuery.getQuery();
			preparedQueries.push(preparedQuery);
			builtQueries.push({ sql: builtQuery.sql, args: builtQuery.params as InArgs });
		}

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

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

		for (const query of queries) {
			const preparedQuery = query._prepare();
			const builtQuery = preparedQuery.getQuery();
			preparedQueries.push(preparedQuery);
			builtQueries.push({ sql: builtQuery.sql, args: builtQuery.params as InArgs });
		}

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

	override async transaction<T>(
		transaction: (db: LibSQLTransaction<TFullSchema, TSchema>) => T | Promise<T>,
		_config?: SQLiteTransactionConfig,

Domain

Frequently Asked Questions

What is the LibSQLSession class?
LibSQLSession is a class in the drizzle-orm codebase, defined in drizzle-orm/src/libsql/session.ts.
Where is LibSQLSession defined?
LibSQLSession is defined in drizzle-orm/src/libsql/session.ts at line 29.

Analyze Your Own Codebase

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

Try Supermodel Free