Home / Class/ ExpoSQLitePreparedQuery Class — drizzle-orm Architecture

ExpoSQLitePreparedQuery Class — drizzle-orm Architecture

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

Entity Profile

Dependency Diagram

graph TD
  e50637e8_1588_6115_6b06_72e8d3b48b1b["ExpoSQLitePreparedQuery"]
  ddcc8973_fc9e_23b4_1e3c_d3ff67e9b7e4["session.ts"]
  e50637e8_1588_6115_6b06_72e8d3b48b1b -->|defined in| ddcc8973_fc9e_23b4_1e3c_d3ff67e9b7e4
  1b40b2b4_a68b_0791_cf9a_d2a316c5ba06["constructor()"]
  e50637e8_1588_6115_6b06_72e8d3b48b1b -->|method| 1b40b2b4_a68b_0791_cf9a_d2a316c5ba06
  e99b17ba_e6e2_c86e_a33c_a9e741e175da["run()"]
  e50637e8_1588_6115_6b06_72e8d3b48b1b -->|method| e99b17ba_e6e2_c86e_a33c_a9e741e175da
  0aba7bcb_03b6_2624_e8b4_ba0a89c71a07["all()"]
  e50637e8_1588_6115_6b06_72e8d3b48b1b -->|method| 0aba7bcb_03b6_2624_e8b4_ba0a89c71a07
  3c02522e_3b12_0728_4e0b_80d01beacd4f["get()"]
  e50637e8_1588_6115_6b06_72e8d3b48b1b -->|method| 3c02522e_3b12_0728_4e0b_80d01beacd4f
  6076d2b5_8042_3bbc_e19b_17093bb09c8f["values()"]
  e50637e8_1588_6115_6b06_72e8d3b48b1b -->|method| 6076d2b5_8042_3bbc_e19b_17093bb09c8f
  b6fe1ad5_429a_2bbb_a713_aad8a2056127["isResponseInArrayMode()"]
  e50637e8_1588_6115_6b06_72e8d3b48b1b -->|method| b6fe1ad5_429a_2bbb_a713_aad8a2056127

Relationship Graph

Source Code

drizzle-orm/src/expo-sqlite/session.ts lines 100–175

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

	constructor(
		private stmt: SQLiteStatement,
		query: Query,
		private logger: Logger,
		private fields: SelectedFieldsOrdered | undefined,
		executeMethod: SQLiteExecuteMethod,
		private _isResponseInArrayMode: boolean,
		private customResultMapper?: (rows: unknown[][]) => unknown,
	) {
		super('sync', executeMethod, query);
	}

	run(placeholderValues?: Record<string, unknown>): SQLiteRunResult {
		const params = fillPlaceholders(this.query.params, placeholderValues ?? {});
		this.logger.logQuery(this.query.sql, params);
		const { changes, lastInsertRowId } = this.stmt.executeSync(params as any[]);
		return {
			changes,
			lastInsertRowId,
		};
	}

	all(placeholderValues?: Record<string, unknown>): T['all'] {
		const { fields, joinsNotNullableMap, query, logger, stmt, customResultMapper } = this;
		if (!fields && !customResultMapper) {
			const params = fillPlaceholders(query.params, placeholderValues ?? {});
			logger.logQuery(query.sql, params);
			return stmt.executeSync(params as any[]).getAllSync();
		}

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

	get(placeholderValues?: Record<string, unknown>): T['get'] {
		const params = fillPlaceholders(this.query.params, placeholderValues ?? {});
		this.logger.logQuery(this.query.sql, params);

		const { fields, stmt, joinsNotNullableMap, customResultMapper } = this;
		if (!fields && !customResultMapper) {
			return stmt.executeSync(params as any[]).getFirstSync();
		}

		const rows = 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);
	}

	values(placeholderValues?: Record<string, unknown>): T['values'] {
		const params = fillPlaceholders(this.query.params, placeholderValues ?? {});
		this.logger.logQuery(this.query.sql, params);
		return this.stmt.executeForRawResultSync(params as any[]).getAllSync();
	}

	/** @internal */
	isResponseInArrayMode(): boolean {
		return this._isResponseInArrayMode;
	}
}

Domain

Frequently Asked Questions

What is the ExpoSQLitePreparedQuery class?
ExpoSQLitePreparedQuery is a class in the drizzle-orm codebase, defined in drizzle-orm/src/expo-sqlite/session.ts.
Where is ExpoSQLitePreparedQuery defined?
ExpoSQLitePreparedQuery is defined in drizzle-orm/src/expo-sqlite/session.ts at line 100.

Analyze Your Own Codebase

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

Try Supermodel Free