Home / Class/ PgCreateForeignKeyConvertor Class — drizzle-orm Architecture

PgCreateForeignKeyConvertor Class — drizzle-orm Architecture

Architecture documentation for the PgCreateForeignKeyConvertor class in sqlgenerator.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  dfac4a5d_36ae_b8c8_4fb9_d9bcdc7a3476["PgCreateForeignKeyConvertor"]
  fe4174c7_3b9c_5b26_98a0_b2395ca21939["sqlgenerator.ts"]
  dfac4a5d_36ae_b8c8_4fb9_d9bcdc7a3476 -->|defined in| fe4174c7_3b9c_5b26_98a0_b2395ca21939
  9e773461_8d54_ac6c_87b1_a679b2d6df1e["can()"]
  dfac4a5d_36ae_b8c8_4fb9_d9bcdc7a3476 -->|method| 9e773461_8d54_ac6c_87b1_a679b2d6df1e
  078c88fa_f691_a84d_c9f4_057d7c1836f5["convert()"]
  dfac4a5d_36ae_b8c8_4fb9_d9bcdc7a3476 -->|method| 078c88fa_f691_a84d_c9f4_057d7c1836f5

Relationship Graph

Source Code

drizzle-kit/src/sqlgenerator.ts lines 3333–3367

class PgCreateForeignKeyConvertor extends Convertor {
	can(statement: JsonStatement, dialect: Dialect): boolean {
		return statement.type === 'create_reference' && dialect === 'postgresql';
	}

	convert(statement: JsonCreateReferenceStatement): string {
		const {
			name,
			tableFrom,
			tableTo,
			columnsFrom,
			columnsTo,
			onDelete,
			onUpdate,
			schemaTo,
		} = PgSquasher.unsquashFK(statement.data);
		const onDeleteStatement = onDelete ? ` ON DELETE ${onDelete}` : '';
		const onUpdateStatement = onUpdate ? ` ON UPDATE ${onUpdate}` : '';
		const fromColumnsString = columnsFrom.map((it) => `"${it}"`).join(',');
		const toColumnsString = columnsTo.map((it) => `"${it}"`).join(',');

		const tableNameWithSchema = statement.schema
			? `"${statement.schema}"."${tableFrom}"`
			: `"${tableFrom}"`;

		const tableToNameWithSchema = schemaTo
			? `"${schemaTo}"."${tableTo}"`
			: `"${tableTo}"`;

		const alterStatement =
			`ALTER TABLE ${tableNameWithSchema} ADD CONSTRAINT "${name}" FOREIGN KEY (${fromColumnsString}) REFERENCES ${tableToNameWithSchema}(${toColumnsString})${onDeleteStatement}${onUpdateStatement};`;

		return alterStatement;
	}
}

Domain

Frequently Asked Questions

What is the PgCreateForeignKeyConvertor class?
PgCreateForeignKeyConvertor is a class in the drizzle-orm codebase, defined in drizzle-kit/src/sqlgenerator.ts.
Where is PgCreateForeignKeyConvertor defined?
PgCreateForeignKeyConvertor is defined in drizzle-kit/src/sqlgenerator.ts at line 3333.

Analyze Your Own Codebase

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

Try Supermodel Free