Home / Class/ OPSQLitePreparedQuery Class — drizzle-orm Architecture

OPSQLitePreparedQuery Class — drizzle-orm Architecture

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

Entity Profile

Dependency Diagram

graph TD
  b8f03593_165e_f94d_b267_ffbd5533113e["OPSQLitePreparedQuery"]
  45f9aea4_1252_eb43_9fc8_0fff93550668["session.ts"]
  b8f03593_165e_f94d_b267_ffbd5533113e -->|defined in| 45f9aea4_1252_eb43_9fc8_0fff93550668
  80906615_b789_7f47_b4af_c84f87be5784["constructor()"]
  b8f03593_165e_f94d_b267_ffbd5533113e -->|method| 80906615_b789_7f47_b4af_c84f87be5784
  7c90acc2_1fbc_04ec_f0b6_a63844636949["run()"]
  b8f03593_165e_f94d_b267_ffbd5533113e -->|method| 7c90acc2_1fbc_04ec_f0b6_a63844636949
  a3a87d53_4c45_66e4_5d26_2bfa60098c96["all()"]
  b8f03593_165e_f94d_b267_ffbd5533113e -->|method| a3a87d53_4c45_66e4_5d26_2bfa60098c96
  30de189a_7e74_acdc_e962_cd6c7f0ef7a5["get()"]
  b8f03593_165e_f94d_b267_ffbd5533113e -->|method| 30de189a_7e74_acdc_e962_cd6c7f0ef7a5
  8dd2a186_7826_1dbb_6999_c72d89dd34f2["values()"]
  b8f03593_165e_f94d_b267_ffbd5533113e -->|method| 8dd2a186_7826_1dbb_6999_c72d89dd34f2
  cdc34b86_d496_bf89_70f7_7f976727d875["isResponseInArrayMode()"]
  b8f03593_165e_f94d_b267_ffbd5533113e -->|method| cdc34b86_d496_bf89_70f7_7f976727d875

Relationship Graph

Source Code

drizzle-orm/src/op-sqlite/session.ts lines 112–199

export class OPSQLitePreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends SQLitePreparedQuery<
	{ type: 'async'; run: QueryResult; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }
> {
	static override readonly [entityKind]: string = 'OPSQLitePreparedQuery';

	constructor(
		private client: OPSQLiteConnection,
		query: Query,
		private logger: Logger,
		cache: Cache,
		queryMetadata: {
			type: 'select' | 'update' | 'delete' | 'insert';
			tables: string[];
		} | undefined,
		cacheConfig: WithCacheConfig | undefined,
		private fields: SelectedFieldsOrdered | undefined,
		executeMethod: SQLiteExecuteMethod,
		private _isResponseInArrayMode: boolean,
		private customResultMapper?: (rows: unknown[][]) => unknown,
	) {
		super('sync', executeMethod, query, cache, queryMetadata, cacheConfig);
	}

	async run(placeholderValues?: Record<string, unknown>): Promise<QueryResult> {
		const params = fillPlaceholders(this.query.params, placeholderValues ?? {});
		this.logger.logQuery(this.query.sql, params);

		return await this.queryWithCache(this.query.sql, params, async () => {
			return this.client.executeAsync(this.query.sql, params);
		});
	}

	async all(placeholderValues?: Record<string, unknown>): Promise<T['all']> {
		const { fields, joinsNotNullableMap, query, logger, customResultMapper, client } = this;
		if (!fields && !customResultMapper) {
			const params = fillPlaceholders(query.params, placeholderValues ?? {});
			logger.logQuery(query.sql, params);

			return await this.queryWithCache(query.sql, params, async () => {
				return client.execute(query.sql, params).rows?._array || [];
			});
		}

		const rows = await this.values(placeholderValues) as unknown[][];
		if (customResultMapper) {
			return customResultMapper(rows) as T['all'];
		}
		return rows.map((row) => mapResultRow(fields!, row, joinsNotNullableMap));
	}

	async get(placeholderValues?: Record<string, unknown>): Promise<T['get']> {
		const { fields, joinsNotNullableMap, customResultMapper, query, logger, client } = this;
		const params = fillPlaceholders(query.params, placeholderValues ?? {});
		logger.logQuery(query.sql, params);
		if (!fields && !customResultMapper) {
			const rows = await this.queryWithCache(query.sql, params, async () => {
				return client.execute(query.sql, params).rows?._array || [];
			});
			return rows[0];
		}

		const rows = await this.values(placeholderValues) as unknown[][];
		const row = rows[0];

		if (!row) {
			return undefined;
		}

		if (customResultMapper) {
			return customResultMapper(rows) as T['get'];
		}

		return mapResultRow(fields!, row, joinsNotNullableMap);
	}

	async values(placeholderValues?: Record<string, unknown>): Promise<T['values']> {
		const params = fillPlaceholders(this.query.params, placeholderValues ?? {});
		this.logger.logQuery(this.query.sql, params);
		return await this.queryWithCache(this.query.sql, params, async () => {
			return await this.client.executeRawAsync(this.query.sql, params);
		});

Domain

Frequently Asked Questions

What is the OPSQLitePreparedQuery class?
OPSQLitePreparedQuery is a class in the drizzle-orm codebase, defined in drizzle-orm/src/op-sqlite/session.ts.
Where is OPSQLitePreparedQuery defined?
OPSQLitePreparedQuery is defined in drizzle-orm/src/op-sqlite/session.ts at line 112.

Analyze Your Own Codebase

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

Try Supermodel Free