buildQueryFromSourceParams() — drizzle-orm Function Reference
Architecture documentation for the buildQueryFromSourceParams() function in sql.ts from the drizzle-orm codebase.
Entity Profile
Dependency Diagram
graph TD f5a982b1_e6b9_5bf8_12b4_3d305d59c2ae["buildQueryFromSourceParams()"] 2361fb30_407d_7604_384a_a24acc5652f6["SQL"] f5a982b1_e6b9_5bf8_12b4_3d305d59c2ae -->|defined in| 2361fb30_407d_7604_384a_a24acc5652f6 254ea348_1614_ce5d_9d75_64a14048644e["toQuery()"] 254ea348_1614_ce5d_9d75_64a14048644e -->|calls| f5a982b1_e6b9_5bf8_12b4_3d305d59c2ae 46489340_6e04_faec_9b9b_56050d0e0439["mapInlineParam()"] f5a982b1_e6b9_5bf8_12b4_3d305d59c2ae -->|calls| 46489340_6e04_faec_9b9b_56050d0e0439 b4091f2d_5572_5c68_00e5_0f033bc9bfd2["mergeQueries()"] f5a982b1_e6b9_5bf8_12b4_3d305d59c2ae -->|calls| b4091f2d_5572_5c68_00e5_0f033bc9bfd2 d6f243fd_6cbd_d4f3_d0bc_78f4860f53cb["join()"] f5a982b1_e6b9_5bf8_12b4_3d305d59c2ae -->|calls| d6f243fd_6cbd_d4f3_d0bc_78f4860f53cb 49992315_516c_12bd_ead2_bb2ee1c00096["isSQLWrapper()"] f5a982b1_e6b9_5bf8_12b4_3d305d59c2ae -->|calls| 49992315_516c_12bd_ead2_bb2ee1c00096 style f5a982b1_e6b9_5bf8_12b4_3d305d59c2ae fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
drizzle-orm/src/sql/sql.ts lines 148–300
buildQueryFromSourceParams(chunks: SQLChunk[], _config: BuildQueryConfig): Query {
const config = Object.assign({}, _config, {
inlineParams: _config.inlineParams || this.shouldInlineParams,
paramStartIndex: _config.paramStartIndex || { value: 0 },
});
const {
casing,
escapeName,
escapeParam,
prepareTyping,
inlineParams,
paramStartIndex,
} = config;
return mergeQueries(chunks.map((chunk): QueryWithTypings => {
if (is(chunk, StringChunk)) {
return { sql: chunk.value.join(''), params: [] };
}
if (is(chunk, Name)) {
return { sql: escapeName(chunk.value), params: [] };
}
if (chunk === undefined) {
return { sql: '', params: [] };
}
if (Array.isArray(chunk)) {
const result: SQLChunk[] = [new StringChunk('(')];
for (const [i, p] of chunk.entries()) {
result.push(p);
if (i < chunk.length - 1) {
result.push(new StringChunk(', '));
}
}
result.push(new StringChunk(')'));
return this.buildQueryFromSourceParams(result, config);
}
if (is(chunk, SQL)) {
return this.buildQueryFromSourceParams(chunk.queryChunks, {
...config,
inlineParams: inlineParams || chunk.shouldInlineParams,
});
}
if (is(chunk, Table)) {
const schemaName = chunk[Table.Symbol.Schema];
const tableName = chunk[Table.Symbol.Name];
return {
sql: schemaName === undefined || chunk[IsAlias]
? escapeName(tableName)
: escapeName(schemaName) + '.' + escapeName(tableName),
params: [],
};
}
if (is(chunk, Column)) {
const columnName = casing.getColumnCasing(chunk);
if (_config.invokeSource === 'indexes') {
return { sql: escapeName(columnName), params: [] };
}
const schemaName = chunk.table[Table.Symbol.Schema];
return {
sql: chunk.table[IsAlias] || schemaName === undefined
? escapeName(chunk.table[Table.Symbol.Name]) + '.' + escapeName(columnName)
: escapeName(schemaName) + '.' + escapeName(chunk.table[Table.Symbol.Name]) + '.'
+ escapeName(columnName),
params: [],
};
}
if (is(chunk, View)) {
const schemaName = chunk[ViewBaseConfig].schema;
const viewName = chunk[ViewBaseConfig].name;
return {
sql: schemaName === undefined || chunk[ViewBaseConfig].isAlias
? escapeName(viewName)
: escapeName(schemaName) + '.' + escapeName(viewName),
Domain
Subdomains
Defined In
Called By
Source
Frequently Asked Questions
What does buildQueryFromSourceParams() do?
buildQueryFromSourceParams() is a function in the drizzle-orm codebase, defined in drizzle-orm/src/sql/sql.ts.
Where is buildQueryFromSourceParams() defined?
buildQueryFromSourceParams() is defined in drizzle-orm/src/sql/sql.ts at line 148.
What does buildQueryFromSourceParams() call?
buildQueryFromSourceParams() calls 4 function(s): isSQLWrapper, join, mapInlineParam, mergeQueries.
What calls buildQueryFromSourceParams()?
buildQueryFromSourceParams() is called by 1 function(s): toQuery.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free