query-builder.ts — drizzle-orm Source File
Architecture documentation for query-builder.ts, a typescript file in the drizzle-orm codebase. 11 imports, 2 dependents.
Entity Profile
Dependency Diagram
graph LR 642c8c4e_4b43_0739_f7ae_558dc2a5794f["query-builder.ts"] a2e1e4f4_2b6e_c197_a707_793466cb421f["index.ts"] 642c8c4e_4b43_0739_f7ae_558dc2a5794f --> a2e1e4f4_2b6e_c197_a707_793466cb421f d9d2f5d1_df48_1a41_8a59_514a1d97197d["subquery.ts"] 642c8c4e_4b43_0739_f7ae_558dc2a5794f --> d9d2f5d1_df48_1a41_8a59_514a1d97197d df5c4433_48d4_a196_2e73_fc27b943fdae["select.ts"] 642c8c4e_4b43_0739_f7ae_558dc2a5794f --> df5c4433_48d4_a196_2e73_fc27b943fdae b01e5373_9563_5641_c1d7_a767f8334cb9["GelSelectBuilder"] 642c8c4e_4b43_0739_f7ae_558dc2a5794f --> b01e5373_9563_5641_c1d7_a767f8334cb9 1802ae0d_e56f_7575_eb4a_b95e50f061c0["select.types.ts"] 642c8c4e_4b43_0739_f7ae_558dc2a5794f --> 1802ae0d_e56f_7575_eb4a_b95e50f061c0 27705a9d_afe9_57dd_8c97_e52d8a67d426["entity.ts"] 642c8c4e_4b43_0739_f7ae_558dc2a5794f --> 27705a9d_afe9_57dd_8c97_e52d8a67d426 f86d3f7c_7b46_5b9f_94e2_ac0a5f48d903["dialect.ts"] 642c8c4e_4b43_0739_f7ae_558dc2a5794f --> f86d3f7c_7b46_5b9f_94e2_ac0a5f48d903 d31ad410_b8fc_5d88_a194_70aa7419676a["query-builder.ts"] 642c8c4e_4b43_0739_f7ae_558dc2a5794f --> d31ad410_b8fc_5d88_a194_70aa7419676a 591617cf_1376_c0a1_4ba1_ecd59ca13a5b["selection-proxy.ts"] 642c8c4e_4b43_0739_f7ae_558dc2a5794f --> 591617cf_1376_c0a1_4ba1_ecd59ca13a5b be483a7f_d5d7_7a9b_9a13_44a4a6aafbbd["sql.ts"] 642c8c4e_4b43_0739_f7ae_558dc2a5794f --> be483a7f_d5d7_7a9b_9a13_44a4a6aafbbd 4d55618d_fa7b_8e54_edb2_b85ae393d95b["subquery.ts"] 642c8c4e_4b43_0739_f7ae_558dc2a5794f --> 4d55618d_fa7b_8e54_edb2_b85ae393d95b b96b941f_c2be_27db_c79e_5975e751c4a6["insert.ts"] b96b941f_c2be_27db_c79e_5975e751c4a6 --> 642c8c4e_4b43_0739_f7ae_558dc2a5794f 257a76b8_a6d7_188d_c192_237373f7f9c0["view.ts"] 257a76b8_a6d7_188d_c192_237373f7f9c0 --> 642c8c4e_4b43_0739_f7ae_558dc2a5794f style 642c8c4e_4b43_0739_f7ae_558dc2a5794f fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
import { entityKind, is } from '~/entity.ts';
import type { GelDialectConfig } from '~/gel-core/dialect.ts';
import { GelDialect } from '~/gel-core/dialect.ts';
import type { TypedQueryBuilder } from '~/query-builders/query-builder.ts';
import { SelectionProxyHandler } from '~/selection-proxy.ts';
import type { ColumnsSelection, SQLWrapper } from '~/sql/sql.ts';
import { WithSubquery } from '~/subquery.ts';
import type { GelColumn } from '../columns/index.ts';
import type { WithSubqueryWithSelection } from '../subquery.ts';
import { GelSelectBuilder } from './select.ts';
import type { SelectedFields } from './select.types.ts';
export class QueryBuilder {
static readonly [entityKind]: string = 'GelQueryBuilder';
private dialect: GelDialect | undefined;
private dialectConfig: GelDialectConfig | undefined;
constructor(dialect?: GelDialect | GelDialectConfig) {
this.dialect = is(dialect, GelDialect) ? dialect : undefined;
this.dialectConfig = is(dialect, GelDialect) ? undefined : dialect;
}
$with<TAlias extends string>(alias: TAlias) {
const queryBuilder = this;
return {
as<TSelection extends ColumnsSelection>(
qb: TypedQueryBuilder<TSelection> | ((qb: QueryBuilder) => TypedQueryBuilder<TSelection>),
): WithSubqueryWithSelection<TSelection, TAlias> {
if (typeof qb === 'function') {
qb = qb(queryBuilder);
}
return new Proxy(
new WithSubquery(qb.getSQL(), qb.getSelectedFields() as SelectedFields, alias, true),
new SelectionProxyHandler({ alias, sqlAliasedBehavior: 'alias', sqlBehavior: 'error' }),
) as WithSubqueryWithSelection<TSelection, TAlias>;
},
};
}
with(...queries: WithSubquery[]) {
const self = this;
function select(): GelSelectBuilder<undefined, 'qb'>;
function select<TSelection extends SelectedFields>(fields: TSelection): GelSelectBuilder<TSelection, 'qb'>;
function select<TSelection extends SelectedFields>(
fields?: TSelection,
): GelSelectBuilder<TSelection | undefined, 'qb'> {
return new GelSelectBuilder({
fields: fields ?? undefined,
session: undefined,
dialect: self.getDialect(),
withList: queries,
});
}
function selectDistinct(): GelSelectBuilder<undefined, 'qb'>;
function selectDistinct<TSelection extends SelectedFields>(fields: TSelection): GelSelectBuilder<TSelection, 'qb'>;
// ... (77 more lines)
Domain
Subdomains
Classes
Dependencies
- GelSelectBuilder
- dialect.ts
- entity.ts
- index.ts
- query-builder.ts
- select.ts
- select.types.ts
- selection-proxy.ts
- sql.ts
- subquery.ts
- subquery.ts
Source
Frequently Asked Questions
What does query-builder.ts do?
query-builder.ts is a source file in the drizzle-orm codebase, written in typescript. It belongs to the DrizzleORM domain, QueryBuilders subdomain.
What does query-builder.ts depend on?
query-builder.ts imports 11 module(s): GelSelectBuilder, dialect.ts, entity.ts, index.ts, query-builder.ts, select.ts, select.types.ts, selection-proxy.ts, and 3 more.
What files import query-builder.ts?
query-builder.ts is imported by 2 file(s): insert.ts, view.ts.
Where is query-builder.ts in the architecture?
query-builder.ts is located at drizzle-orm/src/gel-core/query-builders/query-builder.ts (domain: DrizzleORM, subdomain: QueryBuilders, directory: drizzle-orm/src/gel-core/query-builders).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free