Home / Class/ PgAlterTableAlterColumnAlterGenerated Class — drizzle-orm Architecture

PgAlterTableAlterColumnAlterGenerated Class — drizzle-orm Architecture

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

Entity Profile

Dependency Diagram

graph TD
  c2d718e1_c141_1b4c_206e_91998f6b8e7d["PgAlterTableAlterColumnAlterGenerated"]
  fe4174c7_3b9c_5b26_98a0_b2395ca21939["sqlgenerator.ts"]
  c2d718e1_c141_1b4c_206e_91998f6b8e7d -->|defined in| fe4174c7_3b9c_5b26_98a0_b2395ca21939
  5afcc974_1ffb_921c_dbe8_1bb5be6a8db5["can()"]
  c2d718e1_c141_1b4c_206e_91998f6b8e7d -->|method| 5afcc974_1ffb_921c_dbe8_1bb5be6a8db5
  681f00b4_7a37_30c2_4cae_192d272777ac["convert()"]
  c2d718e1_c141_1b4c_206e_91998f6b8e7d -->|method| 681f00b4_7a37_30c2_4cae_192d272777ac

Relationship Graph

Source Code

drizzle-kit/src/sqlgenerator.ts lines 1073–1142

class PgAlterTableAlterColumnAlterGenerated extends Convertor {
	override can(statement: JsonStatement, dialect: Dialect): boolean {
		return (
			statement.type === 'alter_table_alter_column_change_identity'
			&& dialect === 'postgresql'
		);
	}
	override convert(
		statement: JsonAlterColumnAlterIdentityStatement,
	): string | string[] {
		const { identity, oldIdentity, tableName, columnName, schema } = statement;

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

		const unsquashedIdentity = PgSquasher.unsquashIdentity(identity);
		const unsquashedOldIdentity = PgSquasher.unsquashIdentity(oldIdentity);

		const statementsToReturn: string[] = [];

		if (unsquashedOldIdentity.type !== unsquashedIdentity.type) {
			statementsToReturn.push(
				`ALTER TABLE ${tableNameWithSchema} ALTER COLUMN "${columnName}" SET GENERATED ${
					unsquashedIdentity.type === 'always' ? 'ALWAYS' : 'BY DEFAULT'
				};`,
			);
		}

		if (unsquashedOldIdentity.minValue !== unsquashedIdentity.minValue) {
			statementsToReturn.push(
				`ALTER TABLE ${tableNameWithSchema} ALTER COLUMN "${columnName}" SET MINVALUE ${unsquashedIdentity.minValue};`,
			);
		}

		if (unsquashedOldIdentity.maxValue !== unsquashedIdentity.maxValue) {
			statementsToReturn.push(
				`ALTER TABLE ${tableNameWithSchema} ALTER COLUMN "${columnName}" SET MAXVALUE ${unsquashedIdentity.maxValue};`,
			);
		}

		if (unsquashedOldIdentity.increment !== unsquashedIdentity.increment) {
			statementsToReturn.push(
				`ALTER TABLE ${tableNameWithSchema} ALTER COLUMN "${columnName}" SET INCREMENT BY ${unsquashedIdentity.increment};`,
			);
		}

		if (unsquashedOldIdentity.startWith !== unsquashedIdentity.startWith) {
			statementsToReturn.push(
				`ALTER TABLE ${tableNameWithSchema} ALTER COLUMN "${columnName}" SET START WITH ${unsquashedIdentity.startWith};`,
			);
		}

		if (unsquashedOldIdentity.cache !== unsquashedIdentity.cache) {
			statementsToReturn.push(
				`ALTER TABLE ${tableNameWithSchema} ALTER COLUMN "${columnName}" SET CACHE ${unsquashedIdentity.cache};`,
			);
		}

		if (unsquashedOldIdentity.cycle !== unsquashedIdentity.cycle) {
			statementsToReturn.push(
				`ALTER TABLE ${tableNameWithSchema} ALTER COLUMN "${columnName}" SET ${
					unsquashedIdentity.cycle ? `CYCLE` : 'NO CYCLE'
				};`,
			);
		}

		return statementsToReturn;
	}
}

Domain

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free