buildRelationalQuery() — drizzle-orm Function Reference
Architecture documentation for the buildRelationalQuery() function in dialect.ts from the drizzle-orm codebase.
Entity Profile
Dependency Diagram
graph TD 24c35043_6a76_7336_3e44_a38c73be89e1["buildRelationalQuery()"] 1da3f399_3da2_55ff_342e_fb92de5e010c["SingleStoreDialect"] 24c35043_6a76_7336_3e44_a38c73be89e1 -->|defined in| 1da3f399_3da2_55ff_342e_fb92de5e010c 1ea335a3_8650_b46e_d6f4_64f288128f9d["_getQuery()"] 1ea335a3_8650_b46e_d6f4_64f288128f9d -->|calls| 24c35043_6a76_7336_3e44_a38c73be89e1 3f459852_55f4_d544_4624_42cc8b2004a6["buildSelectQuery()"] 24c35043_6a76_7336_3e44_a38c73be89e1 -->|calls| 3f459852_55f4_d544_4624_42cc8b2004a6 34094e36_e185_d607_fcf3_1d5ba38e6c02["where()"] 24c35043_6a76_7336_3e44_a38c73be89e1 -->|calls| 34094e36_e185_d607_fcf3_1d5ba38e6c02 60229686_a2c9_1c40_b21e_cdaacc0759b9["orderBy()"] 24c35043_6a76_7336_3e44_a38c73be89e1 -->|calls| 60229686_a2c9_1c40_b21e_cdaacc0759b9 style 24c35043_6a76_7336_3e44_a38c73be89e1 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
drizzle-orm/src/singlestore-core/dialect.ts lines 537–833
buildRelationalQuery({
fullSchema,
schema,
tableNamesMap,
table,
tableConfig,
queryConfig: config,
tableAlias,
nestedQueryRelation,
joinOn,
}: {
fullSchema: Record<string, unknown>;
schema: TablesRelationalConfig;
tableNamesMap: Record<string, string>;
table: SingleStoreTable;
tableConfig: TableRelationalConfig;
queryConfig: true | DBQueryConfig<'many', true>;
tableAlias: string;
nestedQueryRelation?: Relation;
joinOn?: SQL;
}): BuildRelationalQueryResult<SingleStoreTable, SingleStoreColumn> {
let selection: BuildRelationalQueryResult<SingleStoreTable, SingleStoreColumn>['selection'] = [];
let limit, offset, orderBy: SingleStoreSelectConfig['orderBy'], where;
const joins: SingleStoreSelectJoinConfig[] = [];
if (config === true) {
const selectionEntries = Object.entries(tableConfig.columns);
selection = selectionEntries.map((
[key, value],
) => ({
dbKey: value.name,
tsKey: key,
field: aliasedTableColumn(value as SingleStoreColumn, tableAlias),
relationTableTsKey: undefined,
isJson: false,
selection: [],
}));
} else {
const aliasedColumns = Object.fromEntries(
Object.entries(tableConfig.columns).map(([key, value]) => [key, aliasedTableColumn(value, tableAlias)]),
);
if (config.where) {
const whereSql = typeof config.where === 'function'
? config.where(aliasedColumns, getOperators())
: config.where;
where = whereSql && mapColumnsInSQLToAlias(whereSql, tableAlias);
}
const fieldsSelection: { tsKey: string; value: SingleStoreColumn | SQL.Aliased }[] = [];
let selectedColumns: string[] = [];
// Figure out which columns to select
if (config.columns) {
let isIncludeMode = false;
for (const [field, value] of Object.entries(config.columns)) {
if (value === undefined) {
continue;
}
if (field in tableConfig.columns) {
if (!isIncludeMode && value === true) {
isIncludeMode = true;
}
selectedColumns.push(field);
}
}
if (selectedColumns.length > 0) {
selectedColumns = isIncludeMode
? selectedColumns.filter((c) => config.columns?.[c] === true)
: Object.keys(tableConfig.columns).filter((key) => !selectedColumns.includes(key));
}
} else {
// Select all columns if selection is not specified
selectedColumns = Object.keys(tableConfig.columns);
}
for (const field of selectedColumns) {
const column = tableConfig.columns[field]! as SingleStoreColumn;
Domain
Subdomains
Defined In
Called By
Source
Frequently Asked Questions
What does buildRelationalQuery() do?
buildRelationalQuery() is a function in the drizzle-orm codebase, defined in drizzle-orm/src/singlestore-core/dialect.ts.
Where is buildRelationalQuery() defined?
buildRelationalQuery() is defined in drizzle-orm/src/singlestore-core/dialect.ts at line 537.
What does buildRelationalQuery() call?
buildRelationalQuery() calls 3 function(s): buildSelectQuery, orderBy, where.
What calls buildRelationalQuery()?
buildRelationalQuery() is called by 1 function(s): _getQuery.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free