view.ts — drizzle-orm Source File
Architecture documentation for view.ts, a typescript file in the drizzle-orm codebase. 14 imports, 4 dependents.
Entity Profile
Dependency Diagram
graph LR a44cb974_fe5a_c572_a91a_51fe8c82034c["view.ts"] f4f42b4c_8610_03dd_fe01_232098668127["common.ts"] a44cb974_fe5a_c572_a91a_51fe8c82034c --> f4f42b4c_8610_03dd_fe01_232098668127 07dd6b3b_dc76_a449_419f_d180e820b911["query-builder.ts"] a44cb974_fe5a_c572_a91a_51fe8c82034c --> 07dd6b3b_dc76_a449_419f_d180e820b911 6fbf8d35_ebd1_2ae8_988d_1aa0127184d7["QueryBuilder"] a44cb974_fe5a_c572_a91a_51fe8c82034c --> 6fbf8d35_ebd1_2ae8_988d_1aa0127184d7 2d5c8884_973c_561c_def6_5e394ea36d1a["table.ts"] a44cb974_fe5a_c572_a91a_51fe8c82034c --> 2d5c8884_973c_561c_def6_5e394ea36d1a cb98271f_26ce_30a5_c69f_b167a0a9c063["pgTable"] a44cb974_fe5a_c572_a91a_51fe8c82034c --> cb98271f_26ce_30a5_c69f_b167a0a9c063 9d23be1a_5095_403a_6191_75a2d7365cdd["view-base.ts"] a44cb974_fe5a_c572_a91a_51fe8c82034c --> 9d23be1a_5095_403a_6191_75a2d7365cdd c7b0033d_5624_a4f4_f60c_66dd2086ed37["view-common.ts"] a44cb974_fe5a_c572_a91a_51fe8c82034c --> c7b0033d_5624_a4f4_f60c_66dd2086ed37 2dc784c6_95e9_4e28_ec81_7caf4acbd426["column-builder.ts"] a44cb974_fe5a_c572_a91a_51fe8c82034c --> 2dc784c6_95e9_4e28_ec81_7caf4acbd426 27705a9d_afe9_57dd_8c97_e52d8a67d426["entity.ts"] a44cb974_fe5a_c572_a91a_51fe8c82034c --> 27705a9d_afe9_57dd_8c97_e52d8a67d426 d31ad410_b8fc_5d88_a194_70aa7419676a["query-builder.ts"] a44cb974_fe5a_c572_a91a_51fe8c82034c --> d31ad410_b8fc_5d88_a194_70aa7419676a 8fb028b7_6ce0_27fa_29b6_39545ba11529["select.types.ts"] a44cb974_fe5a_c572_a91a_51fe8c82034c --> 8fb028b7_6ce0_27fa_29b6_39545ba11529 591617cf_1376_c0a1_4ba1_ecd59ca13a5b["selection-proxy.ts"] a44cb974_fe5a_c572_a91a_51fe8c82034c --> 591617cf_1376_c0a1_4ba1_ecd59ca13a5b be483a7f_d5d7_7a9b_9a13_44a4a6aafbbd["sql.ts"] a44cb974_fe5a_c572_a91a_51fe8c82034c --> be483a7f_d5d7_7a9b_9a13_44a4a6aafbbd ecce3253_1e75_a87f_27b3_ca87e81a3024["utils.ts"] a44cb974_fe5a_c572_a91a_51fe8c82034c --> ecce3253_1e75_a87f_27b3_ca87e81a3024 style a44cb974_fe5a_c572_a91a_51fe8c82034c fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
import type { BuildColumns } from '~/column-builder.ts';
import { entityKind, is } 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 { RequireAtLeastOne } from '~/utils.ts';
import type { PgColumn, PgColumnBuilderBase } from './columns/common.ts';
import { QueryBuilder } from './query-builders/query-builder.ts';
import { pgTable } from './table.ts';
import { PgViewBase } from './view-base.ts';
import { PgViewConfig } from './view-common.ts';
export type ViewWithConfig = RequireAtLeastOne<{
checkOption: 'local' | 'cascaded';
securityBarrier: boolean;
securityInvoker: boolean;
}>;
export class DefaultViewBuilderCore<TConfig extends { name: string; columns?: unknown }> {
static readonly [entityKind]: string = 'PgDefaultViewBuilderCore';
declare readonly _: {
readonly name: TConfig['name'];
readonly columns: TConfig['columns'];
};
constructor(
protected name: TConfig['name'],
protected schema: string | undefined,
) {}
protected config: {
with?: ViewWithConfig;
} = {};
with(config: ViewWithConfig): this {
this.config.with = config;
return this;
}
}
export class ViewBuilder<TName extends string = string> extends DefaultViewBuilderCore<{ name: TName }> {
static override readonly [entityKind]: string = 'PgViewBuilder';
as<TSelectedFields extends ColumnsSelection>(
qb: TypedQueryBuilder<TSelectedFields> | ((qb: QueryBuilder) => TypedQueryBuilder<TSelectedFields>),
): PgViewWithSelection<TName, false, AddAliasToSelection<TSelectedFields, TName, 'pg'>> {
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(
// ... (376 more lines)
Domain
Subdomains
Dependencies
- QueryBuilder
- column-builder.ts
- common.ts
- entity.ts
- pgTable
- query-builder.ts
- query-builder.ts
- select.types.ts
- selection-proxy.ts
- sql.ts
- table.ts
- utils.ts
- view-base.ts
- view-common.ts
Imported By
Source
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, DatabaseDrivers subdomain.
What does view.ts depend on?
view.ts imports 14 module(s): QueryBuilder, column-builder.ts, common.ts, entity.ts, pgTable, query-builder.ts, query-builder.ts, select.types.ts, and 6 more.
What files import view.ts?
view.ts is imported by 4 file(s): db.ts, dialect.ts, schema.ts, utils.ts.
Where is view.ts in the architecture?
view.ts is located at drizzle-orm/src/pg-core/view.ts (domain: DrizzleORM, subdomain: DatabaseDrivers, directory: drizzle-orm/src/pg-core).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free