createJoin() — drizzle-orm Function Reference
Architecture documentation for the createJoin() function in update.ts from the drizzle-orm codebase.
Entity Profile
Dependency Diagram
graph TD 7fd77dff_8f6a_596e_d379_5e137c8ad92e["createJoin()"] b3550288_69f4_670f_8c2e_e82d7003a700["PgUpdateBase"] 7fd77dff_8f6a_596e_d379_5e137c8ad92e -->|defined in| b3550288_69f4_670f_8c2e_e82d7003a700 c759f63e_61ae_e062_9eeb_7503f7588a98["getTableLikeFields()"] 7fd77dff_8f6a_596e_d379_5e137c8ad92e -->|calls| c759f63e_61ae_e062_9eeb_7503f7588a98 style 7fd77dff_8f6a_596e_d379_5e137c8ad92e fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
drizzle-orm/src/pg-core/query-builders/update.ts lines 405–465
private createJoin<TJoinType extends JoinType>(
joinType: TJoinType,
): PgUpdateJoinFn<this, TDynamic, TJoinType> {
return ((
table: PgTable | Subquery | PgViewBase | SQL,
on: ((updateTable: TTable, from: TFrom) => SQL | undefined) | SQL | undefined,
) => {
const tableName = getTableLikeName(table);
if (typeof tableName === 'string' && this.config.joins.some((join) => join.alias === tableName)) {
throw new Error(`Alias "${tableName}" is already used in this query`);
}
if (typeof on === 'function') {
const from = this.config.from && !is(this.config.from, SQL)
? this.getTableLikeFields(this.config.from)
: undefined;
on = on(
new Proxy(
this.config.table[Table.Symbol.Columns],
new SelectionProxyHandler({ sqlAliasedBehavior: 'sql', sqlBehavior: 'sql' }),
) as any,
from && new Proxy(
from,
new SelectionProxyHandler({ sqlAliasedBehavior: 'sql', sqlBehavior: 'sql' }),
) as any,
);
}
this.config.joins.push({ on, table, joinType, alias: tableName });
if (typeof tableName === 'string') {
switch (joinType) {
case 'left': {
this.joinsNotNullableMap[tableName] = false;
break;
}
case 'right': {
this.joinsNotNullableMap = Object.fromEntries(
Object.entries(this.joinsNotNullableMap).map(([key]) => [key, false]),
);
this.joinsNotNullableMap[tableName] = true;
break;
}
case 'inner': {
this.joinsNotNullableMap[tableName] = true;
break;
}
case 'full': {
this.joinsNotNullableMap = Object.fromEntries(
Object.entries(this.joinsNotNullableMap).map(([key]) => [key, false]),
);
this.joinsNotNullableMap[tableName] = false;
break;
}
}
}
return this as any;
}) as any;
}
Domain
Subdomains
Calls
Source
Frequently Asked Questions
What does createJoin() do?
createJoin() is a function in the drizzle-orm codebase, defined in drizzle-orm/src/pg-core/query-builders/update.ts.
Where is createJoin() defined?
createJoin() is defined in drizzle-orm/src/pg-core/query-builders/update.ts at line 405.
What does createJoin() call?
createJoin() calls 1 function(s): getTableLikeFields.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free