Home / Class/ GelSelectBase Class — drizzle-orm Architecture

GelSelectBase Class — drizzle-orm Architecture

Architecture documentation for the GelSelectBase class in select.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  f2f086e4_e39a_49fa_b3c0_885e70f7ed43["GelSelectBase"]
  df5c4433_48d4_a196_2e73_fc27b943fdae["select.ts"]
  f2f086e4_e39a_49fa_b3c0_885e70f7ed43 -->|defined in| df5c4433_48d4_a196_2e73_fc27b943fdae
  385c1c66_6bdf_5039_b27e_2f08309f66e1["_prepare()"]
  f2f086e4_e39a_49fa_b3c0_885e70f7ed43 -->|method| 385c1c66_6bdf_5039_b27e_2f08309f66e1
  af3bf4c1_2450_4fe6_aeb6_03faa72c72bf["$withCache()"]
  f2f086e4_e39a_49fa_b3c0_885e70f7ed43 -->|method| af3bf4c1_2450_4fe6_aeb6_03faa72c72bf
  5075645d_0f4b_c984_73a2_a025c27f2489["prepare()"]
  f2f086e4_e39a_49fa_b3c0_885e70f7ed43 -->|method| 5075645d_0f4b_c984_73a2_a025c27f2489

Relationship Graph

Source Code

drizzle-orm/src/gel-core/query-builders/select.ts lines 1039–1107

export class GelSelectBase<
	TTableName extends string | undefined,
	TSelection extends ColumnsSelection,
	TSelectMode extends SelectMode,
	TNullabilityMap extends Record<string, JoinNullability> = TTableName extends string ? Record<TTableName, 'not-null'>
		: {},
	TDynamic extends boolean = false,
	TExcludedMethods extends string = never,
	TResult = SelectResult<TSelection, TSelectMode, TNullabilityMap>[],
	TSelectedFields = BuildSubquerySelection<TSelection, TNullabilityMap>,
> extends GelSelectQueryBuilderBase<
	GelSelectHKT,
	TTableName,
	TSelection,
	TSelectMode,
	TNullabilityMap,
	TDynamic,
	TExcludedMethods,
	TResult,
	TSelectedFields
> implements RunnableQuery<TResult, 'gel'>, SQLWrapper {
	static override readonly [entityKind]: string = 'GelSelect';

	/** @internal */
	_prepare(name?: string): GelSelectPrepare<this> {
		const { session, config, dialect, joinsNotNullableMap, cacheConfig, usedTables } = this;
		if (!session) {
			throw new Error('Cannot execute a query on a query builder. Please use a database instance instead.');
		}
		return tracer.startActiveSpan('drizzle.prepareQuery', () => {
			const fieldsList = orderSelectedFields<GelColumn>(config.fields);
			const query = session.prepareQuery<
				PreparedQueryConfig & { execute: TResult }
			>(dialect.sqlToQuery(this.getSQL()), fieldsList, name, true, undefined, {
				type: 'select',
				tables: [...usedTables],
			}, cacheConfig);
			query.joinsNotNullableMap = joinsNotNullableMap;

			return query;
		});
	}

	$withCache(config?: { config?: CacheConfig; tag?: string; autoInvalidate?: boolean } | false) {
		this.cacheConfig = config === undefined
			? { config: {}, enable: true, autoInvalidate: true }
			: config === false
			? { enable: false }
			: { enable: true, autoInvalidate: true, ...config };
		return this;
	}

	/**
	 * Create a prepared statement for this query. This allows
	 * the database to remember this query for the given session
	 * and call it by name, rather than specifying the full query.
	 *
	 * {@link https://www.postgresql.org/docs/current/sql-prepare.html | Postgres prepare documentation}
	 */
	prepare(name: string): GelSelectPrepare<this> {
		return this._prepare(name);
	}

	execute: ReturnType<this['prepare']>['execute'] = (placeholderValues) => {
		return tracer.startActiveSpan('drizzle.operation', () => {
			return this._prepare().execute(placeholderValues);
		});
	};
}

Domain

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free