Home / File/ view.ts — drizzle-orm Source File

view.ts — drizzle-orm Source File

Architecture documentation for view.ts, a typescript file in the drizzle-orm codebase. 13 imports, 3 dependents.

File typescript DrizzleORM SQLDialects 13 imports 3 dependents 1 functions 4 classes

Entity Profile

Dependency Diagram

graph LR
  d25d55b4_d8a4_6f19_2b5c_2ef3a5375746["view.ts"]
  a4c1e5cb_a206_4786_985b_0e0a35ddd536["common.ts"]
  d25d55b4_d8a4_6f19_2b5c_2ef3a5375746 --> a4c1e5cb_a206_4786_985b_0e0a35ddd536
  05592167_6811_c578_aecb_8ce071c602a7["query-builder.ts"]
  d25d55b4_d8a4_6f19_2b5c_2ef3a5375746 --> 05592167_6811_c578_aecb_8ce071c602a7
  9e7877a8_9c04_8c04_0ea7_d880ebdc47af["QueryBuilder"]
  d25d55b4_d8a4_6f19_2b5c_2ef3a5375746 --> 9e7877a8_9c04_8c04_0ea7_d880ebdc47af
  64ae061d_ed9a_c5f9_235a_3f31995a8d54["table.ts"]
  d25d55b4_d8a4_6f19_2b5c_2ef3a5375746 --> 64ae061d_ed9a_c5f9_235a_3f31995a8d54
  8d2e46ce_23c3_faa7_fb2d_096b731a5ff2["sqliteTable"]
  d25d55b4_d8a4_6f19_2b5c_2ef3a5375746 --> 8d2e46ce_23c3_faa7_fb2d_096b731a5ff2
  b06d3b34_7e4c_4558_fa21_f40ea239b8a4["view-base.ts"]
  d25d55b4_d8a4_6f19_2b5c_2ef3a5375746 --> b06d3b34_7e4c_4558_fa21_f40ea239b8a4
  2dc784c6_95e9_4e28_ec81_7caf4acbd426["column-builder.ts"]
  d25d55b4_d8a4_6f19_2b5c_2ef3a5375746 --> 2dc784c6_95e9_4e28_ec81_7caf4acbd426
  27705a9d_afe9_57dd_8c97_e52d8a67d426["entity.ts"]
  d25d55b4_d8a4_6f19_2b5c_2ef3a5375746 --> 27705a9d_afe9_57dd_8c97_e52d8a67d426
  d31ad410_b8fc_5d88_a194_70aa7419676a["query-builder.ts"]
  d25d55b4_d8a4_6f19_2b5c_2ef3a5375746 --> d31ad410_b8fc_5d88_a194_70aa7419676a
  8fb028b7_6ce0_27fa_29b6_39545ba11529["select.types.ts"]
  d25d55b4_d8a4_6f19_2b5c_2ef3a5375746 --> 8fb028b7_6ce0_27fa_29b6_39545ba11529
  591617cf_1376_c0a1_4ba1_ecd59ca13a5b["selection-proxy.ts"]
  d25d55b4_d8a4_6f19_2b5c_2ef3a5375746 --> 591617cf_1376_c0a1_4ba1_ecd59ca13a5b
  be483a7f_d5d7_7a9b_9a13_44a4a6aafbbd["sql.ts"]
  d25d55b4_d8a4_6f19_2b5c_2ef3a5375746 --> be483a7f_d5d7_7a9b_9a13_44a4a6aafbbd
  ecce3253_1e75_a87f_27b3_ca87e81a3024["utils.ts"]
  d25d55b4_d8a4_6f19_2b5c_2ef3a5375746 --> ecce3253_1e75_a87f_27b3_ca87e81a3024
  586c8fc7_bdd1_953c_6b2a_30ada9e0b861["count.ts"]
  586c8fc7_bdd1_953c_6b2a_30ada9e0b861 --> d25d55b4_d8a4_6f19_2b5c_2ef3a5375746
  style d25d55b4_d8a4_6f19_2b5c_2ef3a5375746 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import type { BuildColumns } from '~/column-builder.ts';
import { entityKind } from '~/entity.ts';
import type { TypedQueryBuilder } from '~/query-builders/query-builder.ts';
import type { AddAliasToSelection } from '~/query-builders/select.types.ts';
import { SelectionProxyHandler } from '~/selection-proxy.ts';
import type { ColumnsSelection, SQL } from '~/sql/sql.ts';
import { getTableColumns } from '~/utils.ts';
import type { SQLiteColumn, SQLiteColumnBuilderBase } from './columns/common.ts';
import { QueryBuilder } from './query-builders/query-builder.ts';
import { sqliteTable } from './table.ts';
import { SQLiteViewBase } from './view-base.ts';

export interface ViewBuilderConfig {
	algorithm?: 'undefined' | 'merge' | 'temptable';
	definer?: string;
	sqlSecurity?: 'definer' | 'invoker';
	withCheckOption?: 'cascaded' | 'local';
}

export class ViewBuilderCore<
	TConfig extends { name: string; columns?: unknown },
> {
	static readonly [entityKind]: string = 'SQLiteViewBuilderCore';

	declare readonly _: {
		readonly name: TConfig['name'];
		readonly columns: TConfig['columns'];
	};

	constructor(
		protected name: TConfig['name'],
	) {}

	protected config: ViewBuilderConfig = {};
}

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

	as<TSelection extends ColumnsSelection>(
		qb: TypedQueryBuilder<TSelection> | ((qb: QueryBuilder) => TypedQueryBuilder<TSelection>),
	): SQLiteViewWithSelection<TName, false, AddAliasToSelection<TSelection, TName, 'sqlite'>> {
		if (typeof qb === 'function') {
			qb = qb(new QueryBuilder());
		}
		const selectionProxy = new SelectionProxyHandler<TSelection>({
			alias: this.name,
			sqlBehavior: 'error',
			sqlAliasedBehavior: 'alias',
			replaceOriginalName: true,
		});
		// const aliasedSelectedFields = new Proxy(qb.getSelectedFields(), selectionProxy);
		const aliasedSelectedFields = qb.getSelectedFields();
		return new Proxy(
			new SQLiteView({
				// sqliteConfig: this.config,
				config: {
					name: this.name,
					schema: undefined,
					selectedFields: aliasedSelectedFields,
// ... (107 more lines)

Domain

Subdomains

Functions

Dependencies

Frequently Asked Questions

What does view.ts do?
view.ts is a source file in the drizzle-orm codebase, written in typescript. It belongs to the DrizzleORM domain, SQLDialects subdomain.
What functions are defined in view.ts?
view.ts defines 1 function(s): sqliteView.
What does view.ts depend on?
view.ts imports 13 module(s): QueryBuilder, column-builder.ts, common.ts, entity.ts, query-builder.ts, query-builder.ts, select.types.ts, selection-proxy.ts, and 5 more.
What files import view.ts?
view.ts is imported by 3 file(s): count.ts, select.types.ts, utils.ts.
Where is view.ts in the architecture?
view.ts is located at drizzle-orm/src/sqlite-core/view.ts (domain: DrizzleORM, subdomain: SQLDialects, directory: drizzle-orm/src/sqlite-core).

Analyze Your Own Codebase

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

Try Supermodel Free