Home / Function/ relationsToTypeScript() — drizzle-orm Function Reference

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

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