Home / Class/ GelRelationalQuery Class — drizzle-orm Architecture

GelRelationalQuery Class — drizzle-orm Architecture

Architecture documentation for the GelRelationalQuery class in query.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  f9a91e6d_a33f_bd5f_9c24_96be62c66b94["GelRelationalQuery"]
  496562d4_b832_5877_db12_bfc126b68038["query.ts"]
  f9a91e6d_a33f_bd5f_9c24_96be62c66b94 -->|defined in| 496562d4_b832_5877_db12_bfc126b68038
  630f76c8_d72e_b8e0_9663_577f066503d3["constructor()"]
  f9a91e6d_a33f_bd5f_9c24_96be62c66b94 -->|method| 630f76c8_d72e_b8e0_9663_577f066503d3
  5ec7dcb3_48df_9e64_7058_75e57a02ef57["_prepare()"]
  f9a91e6d_a33f_bd5f_9c24_96be62c66b94 -->|method| 5ec7dcb3_48df_9e64_7058_75e57a02ef57
  eace7af1_70c6_3521_c012_8025e2549e26["prepare()"]
  f9a91e6d_a33f_bd5f_9c24_96be62c66b94 -->|method| eace7af1_70c6_3521_c012_8025e2549e26
  36dfbc90_7d35_2469_60d2_b992c2272cc0["_getQuery()"]
  f9a91e6d_a33f_bd5f_9c24_96be62c66b94 -->|method| 36dfbc90_7d35_2469_60d2_b992c2272cc0
  493f8637_2de0_c669_8a0a_80ddd460f4aa["getSQL()"]
  f9a91e6d_a33f_bd5f_9c24_96be62c66b94 -->|method| 493f8637_2de0_c669_8a0a_80ddd460f4aa
  d60c8dca_bce8_adcf_14af_63da6ec5ea7a["_toSQL()"]
  f9a91e6d_a33f_bd5f_9c24_96be62c66b94 -->|method| d60c8dca_bce8_adcf_14af_63da6ec5ea7a
  8e4850e7_80a2_345f_d917_4392a79b6910["toSQL()"]
  f9a91e6d_a33f_bd5f_9c24_96be62c66b94 -->|method| 8e4850e7_80a2_345f_d917_4392a79b6910
  782e8ccb_096f_8d34_a26e_e3bb8b130abc["execute()"]
  f9a91e6d_a33f_bd5f_9c24_96be62c66b94 -->|method| 782e8ccb_096f_8d34_a26e_e3bb8b130abc

Relationship Graph

Source Code

drizzle-orm/src/gel-core/query-builders/query.ts lines 65–150

export class GelRelationalQuery<TResult> extends QueryPromise<TResult>
	implements RunnableQuery<TResult, 'gel'>, SQLWrapper
{
	static override readonly [entityKind]: string = 'GelRelationalQuery';

	declare readonly _: {
		readonly dialect: 'gel';
		readonly result: TResult;
	};

	constructor(
		private fullSchema: Record<string, unknown>,
		private schema: TablesRelationalConfig,
		private tableNamesMap: Record<string, string>,
		private table: GelTable,
		private tableConfig: TableRelationalConfig,
		private dialect: GelDialect,
		private session: GelSession,
		private config: DBQueryConfig<'many', true> | true,
		private mode: 'many' | 'first',
	) {
		super();
	}

	/** @internal */
	_prepare(name?: string): GelPreparedQuery<PreparedQueryConfig & { execute: TResult }> {
		return tracer.startActiveSpan('drizzle.prepareQuery', () => {
			const { query, builtQuery } = this._toSQL();

			return this.session.prepareQuery<PreparedQueryConfig & { execute: TResult }>(
				builtQuery,
				undefined,
				name,
				true,
				(rawRows, mapColumnValue) => {
					const rows = rawRows.map((row) =>
						mapRelationalRow(this.schema, this.tableConfig, row, query.selection, mapColumnValue)
					);
					if (this.mode === 'first') {
						return rows[0] as TResult;
					}
					return rows as TResult;
				},
			);
		});
	}

	prepare(name: string): GelPreparedQuery<PreparedQueryConfig & { execute: TResult }> {
		return this._prepare(name);
	}

	private _getQuery() {
		return this.dialect.buildRelationalQueryWithoutPK({
			fullSchema: this.fullSchema,
			schema: this.schema,
			tableNamesMap: this.tableNamesMap,
			table: this.table,
			tableConfig: this.tableConfig,
			queryConfig: this.config,
			tableAlias: this.tableConfig.tsName,
		});
	}

	/** @internal */
	getSQL(): SQL {
		return this._getQuery().sql as SQL;
	}

	private _toSQL(): { query: BuildRelationalQueryResult; builtQuery: QueryWithTypings } {
		const query = this._getQuery();

		const builtQuery = this.dialect.sqlToQuery(query.sql as SQL);

		return { query, builtQuery };
	}

	toSQL(): Query {
		return this._toSQL().builtQuery;
	}

	override execute(): Promise<TResult> {

Domain

Frequently Asked Questions

What is the GelRelationalQuery class?
GelRelationalQuery is a class in the drizzle-orm codebase, defined in drizzle-orm/src/gel-core/query-builders/query.ts.
Where is GelRelationalQuery defined?
GelRelationalQuery is defined in drizzle-orm/src/gel-core/query-builders/query.ts at line 65.

Analyze Your Own Codebase

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

Try Supermodel Free