Home / Class/ PgAlterForeignKeyConvertor Class — drizzle-orm Architecture

PgAlterForeignKeyConvertor Class — drizzle-orm Architecture

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

Entity Profile

Dependency Diagram

graph TD
  1c722973_79f1_5946_11f4_95175d8af652["PgAlterForeignKeyConvertor"]
  fe4174c7_3b9c_5b26_98a0_b2395ca21939["sqlgenerator.ts"]
  1c722973_79f1_5946_11f4_95175d8af652 -->|defined in| fe4174c7_3b9c_5b26_98a0_b2395ca21939
  796db24b_fbc3_4bae_7379_1ef3c57c1c8d["can()"]
  1c722973_79f1_5946_11f4_95175d8af652 -->|method| 796db24b_fbc3_4bae_7379_1ef3c57c1c8d
  f46078d4_8ed3_240a_dc85_ac06d691fab9["convert()"]
  1c722973_79f1_5946_11f4_95175d8af652 -->|method| f46078d4_8ed3_240a_dc85_ac06d691fab9

Relationship Graph

Source Code

drizzle-kit/src/sqlgenerator.ts lines 3426–3467

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

	convert(statement: JsonAlterReferenceStatement): string {
		const newFk = PgSquasher.unsquashFK(statement.data);
		const oldFk = PgSquasher.unsquashFK(statement.oldFkey);

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

		let sql = `ALTER TABLE ${tableNameWithSchema} DROP CONSTRAINT "${oldFk.name}";\n`;

		const onDeleteStatement = newFk.onDelete
			? ` ON DELETE ${newFk.onDelete}`
			: '';
		const onUpdateStatement = newFk.onUpdate
			? ` ON UPDATE ${newFk.onUpdate}`
			: '';

		const fromColumnsString = newFk.columnsFrom
			.map((it) => `"${it}"`)
			.join(',');
		const toColumnsString = newFk.columnsTo.map((it) => `"${it}"`).join(',');

		const tableFromNameWithSchema = oldFk.schemaTo
			? `"${oldFk.schemaTo}"."${oldFk.tableFrom}"`
			: `"${oldFk.tableFrom}"`;

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

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

		sql += alterStatement;
		return sql;
	}
}

Domain

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free