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
  e14e02a6_4273_1b91_e67d_8b5bbffd1bcc["ForeignKey"]
  fab980e5_64f0_d7af_6cbf_9d6014d326a4["foreign-keys.ts"]
  e14e02a6_4273_1b91_e67d_8b5bbffd1bcc -->|defined in| fab980e5_64f0_d7af_6cbf_9d6014d326a4
  f1d2010f_29f2_99c0_88e8_a6f43b87a9a7["constructor()"]
  e14e02a6_4273_1b91_e67d_8b5bbffd1bcc -->|method| f1d2010f_29f2_99c0_88e8_a6f43b87a9a7
  848c0766_a0f7_a0c3_0f2e_e43969e37161["getName()"]
  e14e02a6_4273_1b91_e67d_8b5bbffd1bcc -->|method| 848c0766_a0f7_a0c3_0f2e_e43969e37161

Relationship Graph

Source Code

drizzle-orm/src/sqlite-core/foreign-keys.ts lines 69–94

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

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

	constructor(readonly table: SQLiteTable, 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/sqlite-core/foreign-keys.ts.
Where is ForeignKey defined?
ForeignKey is defined in drizzle-orm/src/sqlite-core/foreign-keys.ts at line 69.

Analyze Your Own Codebase

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

Try Supermodel Free