Home / Class/ ViewBuilder Class — drizzle-orm Architecture

ViewBuilder Class — drizzle-orm Architecture

Architecture documentation for the ViewBuilder class in view.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  7708fa91_4abb_cb43_9c45_d26fcc56b7ee["ViewBuilder"]
  257a76b8_a6d7_188d_c192_237373f7f9c0["view.ts"]
  7708fa91_4abb_cb43_9c45_d26fcc56b7ee -->|defined in| 257a76b8_a6d7_188d_c192_237373f7f9c0
  460b4129_e994_5490_add4_bed955c15787["as()"]
  7708fa91_4abb_cb43_9c45_d26fcc56b7ee -->|method| 460b4129_e994_5490_add4_bed955c15787

Relationship Graph

Source Code

drizzle-orm/src/gel-core/view.ts lines 44–73

export class ViewBuilder<TName extends string = string> extends DefaultViewBuilderCore<{ name: TName }> {
	static override readonly [entityKind]: string = 'GelViewBuilder';

	as<TSelectedFields extends ColumnsSelection>(
		qb: TypedQueryBuilder<TSelectedFields> | ((qb: QueryBuilder) => TypedQueryBuilder<TSelectedFields>),
	): GelViewWithSelection<TName, false, AddAliasToSelection<TSelectedFields, TName, 'gel'>> {
		if (typeof qb === 'function') {
			qb = qb(new QueryBuilder());
		}
		const selectionProxy = new SelectionProxyHandler<TSelectedFields>({
			alias: this.name,
			sqlBehavior: 'error',
			sqlAliasedBehavior: 'alias',
			replaceOriginalName: true,
		});
		const aliasedSelection = new Proxy(qb.getSelectedFields(), selectionProxy);
		return new Proxy(
			new GelView({
				GelConfig: this.config,
				config: {
					name: this.name,
					schema: this.schema,
					selectedFields: aliasedSelection,
					query: qb.getSQL().inlineParams(),
				},
			}),
			selectionProxy as any,
		) as GelViewWithSelection<TName, false, AddAliasToSelection<TSelectedFields, TName, 'gel'>>;
	}
}

Domain

Frequently Asked Questions

What is the ViewBuilder class?
ViewBuilder is a class in the drizzle-orm codebase, defined in drizzle-orm/src/gel-core/view.ts.
Where is ViewBuilder defined?
ViewBuilder is defined in drizzle-orm/src/gel-core/view.ts at line 44.

Analyze Your Own Codebase

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

Try Supermodel Free