extractRelations() — drizzle-orm Function Reference
Architecture documentation for the extractRelations() function in studio.ts from the drizzle-orm codebase.
Entity Profile
Dependency Diagram
graph TD 92c3479f_50d7_632d_a64a_ace0d75fef1e["extractRelations()"] 82de12f8_a8ca_9d38_8da8_9ac945d81e01["studio.ts"] 92c3479f_50d7_632d_a64a_ace0d75fef1e -->|defined in| 82de12f8_a8ca_9d38_8da8_9ac945d81e01 2a2d384e_29cd_b901_fdda_e10fca96a027["prepareServer()"] 2a2d384e_29cd_b901_fdda_e10fca96a027 -->|calls| 92c3479f_50d7_632d_a64a_ace0d75fef1e 0f6bcec9_496e_3388_a2d6_2f3af1e12d53["getColumnCasing()"] 92c3479f_50d7_632d_a64a_ace0d75fef1e -->|calls| 0f6bcec9_496e_3388_a2d6_2f3af1e12d53 style 92c3479f_50d7_632d_a64a_ace0d75fef1e fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
drizzle-kit/src/serializer/studio.ts lines 514–583
export const extractRelations = (
tablesConfig: {
tables: TablesRelationalConfig;
tableNamesMap: Record<string, string>;
},
casing?: CasingType,
): Relation[] => {
const relations = Object.values(tablesConfig.tables)
.map((it) =>
Object.entries(it.relations).map(([name, relation]) => {
try {
const normalized = normalizeRelation(
tablesConfig.tables,
tablesConfig.tableNamesMap,
relation,
);
const rel = relation;
const refTableName = rel.referencedTableName;
const refTable = rel.referencedTable;
const fields = normalized.fields
.map((it) => getColumnCasing(it, casing))
.flat();
const refColumns = normalized.references
.map((it) => getColumnCasing(it, casing))
.flat();
let refSchema: string | undefined;
if (is(refTable, PgTable)) {
refSchema = pgTableConfig(refTable).schema;
} else if (is(refTable, MySqlTable)) {
refSchema = mysqlTableConfig(refTable).schema;
} else if (is(refTable, SQLiteTable)) {
refSchema = undefined;
} else if (is(refTable, SingleStoreTable)) {
refSchema = singlestoreTableConfig(refTable).schema;
} else {
throw new Error('unsupported dialect');
}
let type: 'one' | 'many';
if (is(rel, One)) {
type = 'one';
} else if (is(rel, Many)) {
type = 'many';
} else {
throw new Error('unsupported relation type');
}
return {
name,
type,
table: it.dbName,
schema: it.schema || 'public',
columns: fields,
refTable: refTableName,
refSchema: refSchema || 'public',
refColumns: refColumns,
};
} catch (error) {
throw new Error(
`Invalid relation "${relation.fieldName}" for table "${
it.schema ? `${it.schema}.${it.dbName}` : it.dbName
}"`,
);
}
})
)
.flat();
return relations;
};
Domain
Subdomains
Defined In
Calls
Called By
Source
Frequently Asked Questions
What does extractRelations() do?
extractRelations() is a function in the drizzle-orm codebase, defined in drizzle-kit/src/serializer/studio.ts.
Where is extractRelations() defined?
extractRelations() is defined in drizzle-kit/src/serializer/studio.ts at line 514.
What does extractRelations() call?
extractRelations() calls 1 function(s): getColumnCasing.
What calls extractRelations()?
extractRelations() is called by 1 function(s): prepareServer.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free