Home / Class/ ForeignKey Class — drizzle-orm Architecture

ForeignKey Class — drizzle-orm Architecture

Architecture documentation for the ForeignKey class in foreign-keys.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  9c439714_8e39_1639_8142_88b4c0b4c345["ForeignKey"]
  5ab311c5_4977_231c_634b_5190e6ed4054["foreign-keys.ts"]
  9c439714_8e39_1639_8142_88b4c0b4c345 -->|defined in| 5ab311c5_4977_231c_634b_5190e6ed4054
  f63b391f_211d_298e_7bc0_f1fa6375af56["constructor()"]
  9c439714_8e39_1639_8142_88b4c0b4c345 -->|method| f63b391f_211d_298e_7bc0_f1fa6375af56
  27454574_f5e4_c6c4_64e5_c4c02b3af3cf["getName()"]
  9c439714_8e39_1639_8142_88b4c0b4c345 -->|method| 27454574_f5e4_c6c4_64e5_c4c02b3af3cf

Relationship Graph

Source Code

drizzle-orm/src/mysql-core/foreign-keys.ts lines 66–91

export class ForeignKey {
	static readonly [entityKind]: string = 'MySqlForeignKey';

	readonly reference: Reference;
	readonly onUpdate: UpdateDeleteAction | undefined;
	readonly onDelete: UpdateDeleteAction | undefined;

	constructor(readonly table: MySqlTable, builder: ForeignKeyBuilder) {
		this.reference = builder.reference;
		this.onUpdate = builder._onUpdate;
		this.onDelete = builder._onDelete;
	}

	getName(): string {
		const { name, columns, foreignColumns } = this.reference();
		const columnNames = columns.map((column) => column.name);
		const foreignColumnNames = foreignColumns.map((column) => column.name);
		const chunks = [
			this.table[TableName],
			...columnNames,
			foreignColumns[0]!.table[TableName],
			...foreignColumnNames,
		];
		return name ?? `${chunks.join('_')}_fk`;
	}
}

Domain

Frequently Asked Questions

What is the ForeignKey class?
ForeignKey is a class in the drizzle-orm codebase, defined in drizzle-orm/src/mysql-core/foreign-keys.ts.
Where is ForeignKey defined?
ForeignKey is defined in drizzle-orm/src/mysql-core/foreign-keys.ts at line 66.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free