relationsToTypeScript() — drizzle-orm Function Reference
Architecture documentation for the relationsToTypeScript() function in introspect.ts from the drizzle-orm codebase.
Entity Profile
Dependency Diagram
graph TD d34d3e87_b168_fea6_ac14_fef2ffdc1654["relationsToTypeScript()"] c2c22050_0d5c_404e_2b18_5934c728a89c["introspect.ts"] d34d3e87_b168_fea6_ac14_fef2ffdc1654 -->|defined in| c2c22050_0d5c_404e_2b18_5934c728a89c d532b567_3dc6_7be3_0c7e_e6f3a15eddff["introspectPostgres()"] d532b567_3dc6_7be3_0c7e_e6f3a15eddff -->|calls| d34d3e87_b168_fea6_ac14_fef2ffdc1654 395c56cc_0c49_0b4c_347d_abe47b81589f["introspectGel()"] 395c56cc_0c49_0b4c_347d_abe47b81589f -->|calls| d34d3e87_b168_fea6_ac14_fef2ffdc1654 50854fb8_da44_d90e_33cd_3524dcf8268c["introspectMysql()"] 50854fb8_da44_d90e_33cd_3524dcf8268c -->|calls| d34d3e87_b168_fea6_ac14_fef2ffdc1654 48e57773_0c49_6169_cb5a_31a468e64025["introspectSqlite()"] 48e57773_0c49_6169_cb5a_31a468e64025 -->|calls| d34d3e87_b168_fea6_ac14_fef2ffdc1654 49e2c573_17ba_89fe_104a_c5be22a2db77["introspectLibSQL()"] 49e2c573_17ba_89fe_104a_c5be22a2db77 -->|calls| d34d3e87_b168_fea6_ac14_fef2ffdc1654 0d8b82d2_e7d2_dc86_a191_1eb736fb428b["withCasing()"] d34d3e87_b168_fea6_ac14_fef2ffdc1654 -->|calls| 0d8b82d2_e7d2_dc86_a191_1eb736fb428b 75b32510_d64f_63b3_5a7e_75ed201613df["paramNameFor()"] d34d3e87_b168_fea6_ac14_fef2ffdc1654 -->|calls| 75b32510_d64f_63b3_5a7e_75ed201613df style d34d3e87_b168_fea6_ac14_fef2ffdc1654 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
drizzle-kit/src/cli/commands/introspect.ts lines 750–900
export const relationsToTypeScript = (
schema: {
tables: Record<
string,
{
schema?: string;
foreignKeys: Record<
string,
{
name: string;
tableFrom: string;
columnsFrom: string[];
tableTo: string;
schemaTo?: string;
columnsTo: string[];
onUpdate?: string | undefined;
onDelete?: string | undefined;
}
>;
}
>;
},
casing: Casing,
) => {
const imports: string[] = [];
const tableRelations: Record<
string,
{
name: string;
type: 'one' | 'many';
tableFrom: string;
schemaFrom?: string;
columnFrom: string;
tableTo: string;
schemaTo?: string;
columnTo: string;
relationName?: string;
}[]
> = {};
Object.values(schema.tables).forEach((table) => {
Object.values(table.foreignKeys).forEach((fk) => {
const tableNameFrom = paramNameFor(fk.tableFrom, table.schema);
const tableNameTo = paramNameFor(fk.tableTo, fk.schemaTo);
const tableFrom = withCasing(tableNameFrom.replace(/:+/g, ''), casing);
const tableTo = withCasing(tableNameTo.replace(/:+/g, ''), casing);
const columnFrom = withCasing(fk.columnsFrom[0], casing);
const columnTo = withCasing(fk.columnsTo[0], casing);
imports.push(tableTo, tableFrom);
// const keyFrom = `${schemaFrom}.${tableFrom}`;
const keyFrom = tableFrom;
if (!tableRelations[keyFrom]) {
tableRelations[keyFrom] = [];
}
tableRelations[keyFrom].push({
name: singular(tableTo),
type: 'one',
tableFrom,
columnFrom,
tableTo,
columnTo,
});
// const keyTo = `${schemaTo}.${tableTo}`;
const keyTo = tableTo;
if (!tableRelations[keyTo]) {
tableRelations[keyTo] = [];
}
tableRelations[keyTo].push({
name: plural(tableFrom),
type: 'many',
tableFrom: tableTo,
columnFrom: columnTo,
tableTo: tableFrom,
columnTo: columnFrom,
Domain
Subdomains
Defined In
Source
Frequently Asked Questions
What does relationsToTypeScript() do?
relationsToTypeScript() is a function in the drizzle-orm codebase, defined in drizzle-kit/src/cli/commands/introspect.ts.
Where is relationsToTypeScript() defined?
relationsToTypeScript() is defined in drizzle-kit/src/cli/commands/introspect.ts at line 750.
What does relationsToTypeScript() call?
relationsToTypeScript() calls 2 function(s): paramNameFor, withCasing.
What calls relationsToTypeScript()?
relationsToTypeScript() is called by 5 function(s): introspectGel, introspectLibSQL, introspectMysql, introspectPostgres, introspectSqlite.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free