buildSelection() — drizzle-orm Function Reference
Architecture documentation for the buildSelection() function in dialect.ts from the drizzle-orm codebase.
Entity Profile
Dependency Diagram
graph TD d2bb0977_2845_5bd0_d019_e55f619ef7e8["buildSelection()"] 9c5eee4c_4b78_a585_4038_d710de212097["MySqlDialect"] d2bb0977_2845_5bd0_d019_e55f619ef7e8 -->|defined in| 9c5eee4c_4b78_a585_4038_d710de212097 6603fb43_ff6f_ad94_0e94_0f152d804075["buildDeleteQuery()"] 6603fb43_ff6f_ad94_0e94_0f152d804075 -->|calls| d2bb0977_2845_5bd0_d019_e55f619ef7e8 8f9fa658_edb5_f102_51bb_be11ee53973b["buildUpdateQuery()"] 8f9fa658_edb5_f102_51bb_be11ee53973b -->|calls| d2bb0977_2845_5bd0_d019_e55f619ef7e8 8ae83588_d5c3_3834_94e9_82ba6770d1a1["buildSelectQuery()"] 8ae83588_d5c3_3834_94e9_82ba6770d1a1 -->|calls| d2bb0977_2845_5bd0_d019_e55f619ef7e8 style d2bb0977_2845_5bd0_d019_e55f619ef7e8 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
drizzle-orm/src/mysql-core/dialect.ts lines 187–253
private buildSelection(
fields: SelectedFieldsOrdered,
{ isSingleTable = false }: { isSingleTable?: boolean } = {},
): SQL {
const columnsLen = fields.length;
const chunks = fields
.flatMap(({ field }, i) => {
const chunk: SQLChunk[] = [];
if (is(field, SQL.Aliased) && field.isSelectionField) {
chunk.push(sql.identifier(field.fieldAlias));
} else if (is(field, SQL.Aliased) || is(field, SQL)) {
const query = is(field, SQL.Aliased) ? field.sql : field;
if (isSingleTable) {
chunk.push(
new SQL(
query.queryChunks.map((c) => {
if (is(c, MySqlColumn)) {
return sql.identifier(this.casing.getColumnCasing(c));
}
return c;
}),
),
);
} else {
chunk.push(query);
}
if (is(field, SQL.Aliased)) {
chunk.push(sql` as ${sql.identifier(field.fieldAlias)}`);
}
} else if (is(field, Column)) {
if (isSingleTable) {
chunk.push(sql.identifier(this.casing.getColumnCasing(field)));
} else {
chunk.push(field);
}
} else if (is(field, Subquery)) {
const entries = Object.entries(field._.selectedFields) as [string, SQL.Aliased | Column | SQL][];
if (entries.length === 1) {
const entry = entries[0]![1];
const fieldDecoder = is(entry, SQL)
? entry.decoder
: is(entry, Column)
? { mapFromDriverValue: (v: any) => entry.mapFromDriverValue(v) }
: entry.sql.decoder;
if (fieldDecoder) {
field._.sql.decoder = fieldDecoder;
}
}
chunk.push(field);
}
if (i < columnsLen - 1) {
chunk.push(sql`, `);
}
return chunk;
});
return sql.join(chunks);
}
Domain
Subdomains
Defined In
Source
Frequently Asked Questions
What does buildSelection() do?
buildSelection() is a function in the drizzle-orm codebase, defined in drizzle-orm/src/mysql-core/dialect.ts.
Where is buildSelection() defined?
buildSelection() is defined in drizzle-orm/src/mysql-core/dialect.ts at line 187.
What calls buildSelection()?
buildSelection() is called by 3 function(s): buildDeleteQuery, buildSelectQuery, buildUpdateQuery.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free