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
Source
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