Home / Class/ ForeignKeyBuilder Class — drizzle-orm Architecture

ForeignKeyBuilder Class — drizzle-orm Architecture

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

Entity Profile

Dependency Diagram

graph TD
  cb07bce4_0558_1b41_9f21_fbc1ca1063f9["ForeignKeyBuilder"]
  ff7aebdc_6a03_fbca_c461_2fc453da5174["foreign-keys.ts"]
  cb07bce4_0558_1b41_9f21_fbc1ca1063f9 -->|defined in| ff7aebdc_6a03_fbca_c461_2fc453da5174
  59b858d9_8f52_0548_9de5_10fb18bf4bc8["constructor()"]
  cb07bce4_0558_1b41_9f21_fbc1ca1063f9 -->|method| 59b858d9_8f52_0548_9de5_10fb18bf4bc8
  3620abfc_e05b_bfba_8530_fb5eb559bb05["onUpdate()"]
  cb07bce4_0558_1b41_9f21_fbc1ca1063f9 -->|method| 3620abfc_e05b_bfba_8530_fb5eb559bb05
  72b8d9a3_fbe5_5c7c_3415_acb9fbc20547["onDelete()"]
  cb07bce4_0558_1b41_9f21_fbc1ca1063f9 -->|method| 72b8d9a3_fbe5_5c7c_3415_acb9fbc20547
  62d28931_8145_4139_0365_d43461effacd["build()"]
  cb07bce4_0558_1b41_9f21_fbc1ca1063f9 -->|method| 62d28931_8145_4139_0365_d43461effacd

Relationship Graph

Source Code

drizzle-orm/src/pg-core/foreign-keys.ts lines 15–62

export class ForeignKeyBuilder {
	static readonly [entityKind]: string = 'PgForeignKeyBuilder';

	/** @internal */
	reference: Reference;

	/** @internal */
	_onUpdate: UpdateDeleteAction | undefined = 'no action';

	/** @internal */
	_onDelete: UpdateDeleteAction | undefined = 'no action';

	constructor(
		config: () => {
			name?: string;
			columns: PgColumn[];
			foreignColumns: PgColumn[];
		},
		actions?: {
			onUpdate?: UpdateDeleteAction;
			onDelete?: UpdateDeleteAction;
		} | undefined,
	) {
		this.reference = () => {
			const { name, columns, foreignColumns } = config();
			return { name, columns, foreignTable: foreignColumns[0]!.table as PgTable, foreignColumns };
		};
		if (actions) {
			this._onUpdate = actions.onUpdate;
			this._onDelete = actions.onDelete;
		}
	}

	onUpdate(action: UpdateDeleteAction): this {
		this._onUpdate = action === undefined ? 'no action' : action;
		return this;
	}

	onDelete(action: UpdateDeleteAction): this {
		this._onDelete = action === undefined ? 'no action' : action;
		return this;
	}

	/** @internal */
	build(table: PgTable): ForeignKey {
		return new ForeignKey(table, this);
	}
}

Domain

Frequently Asked Questions

What is the ForeignKeyBuilder class?
ForeignKeyBuilder is a class in the drizzle-orm codebase, defined in drizzle-orm/src/pg-core/foreign-keys.ts.
Where is ForeignKeyBuilder defined?
ForeignKeyBuilder is defined in drizzle-orm/src/pg-core/foreign-keys.ts at line 15.

Analyze Your Own Codebase

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

Try Supermodel Free