Home / Class/ LibSQLModifyColumn Class — drizzle-orm Architecture

LibSQLModifyColumn Class — drizzle-orm Architecture

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

Entity Profile

Dependency Diagram

graph TD
  e496d264_ffa3_db83_0260_fdca9d4f91a7["LibSQLModifyColumn"]
  fe4174c7_3b9c_5b26_98a0_b2395ca21939["sqlgenerator.ts"]
  e496d264_ffa3_db83_0260_fdca9d4f91a7 -->|defined in| fe4174c7_3b9c_5b26_98a0_b2395ca21939
  b355592e_9209_fc2a_66fc_f71dc6710dc4["can()"]
  e496d264_ffa3_db83_0260_fdca9d4f91a7 -->|method| b355592e_9209_fc2a_66fc_f71dc6710dc4
  13e3b282_1a64_a447_67c6_680e36ab6da1["convert()"]
  e496d264_ffa3_db83_0260_fdca9d4f91a7 -->|method| 13e3b282_1a64_a447_67c6_680e36ab6da1

Relationship Graph

Source Code

drizzle-kit/src/sqlgenerator.ts lines 2376–2482

export class LibSQLModifyColumn extends Convertor {
	can(statement: JsonStatement, dialect: Dialect): boolean {
		return (
			(statement.type === 'alter_table_alter_column_set_type'
				|| statement.type === 'alter_table_alter_column_drop_notnull'
				|| statement.type === 'alter_table_alter_column_set_notnull'
				|| statement.type === 'alter_table_alter_column_set_default'
				|| statement.type === 'alter_table_alter_column_drop_default'
				|| statement.type === 'create_check_constraint'
				|| statement.type === 'delete_check_constraint')
			&& dialect === 'turso'
		);
	}

	convert(statement: LibSQLModifyColumnStatement, json2: SQLiteSchemaSquashed) {
		const { tableName, columnName } = statement;

		let columnType = ``;
		let columnDefault: any = '';
		let columnNotNull = '';

		const sqlStatements: string[] = [];

		// collect index info
		const indexes: {
			name: string;
			tableName: string;
			columns: string[];
			isUnique: boolean;
			where?: string | undefined;
		}[] = [];
		for (const table of Object.values(json2.tables)) {
			for (const index of Object.values(table.indexes)) {
				const unsquashed = SQLiteSquasher.unsquashIdx(index);
				sqlStatements.push(`DROP INDEX "${unsquashed.name}";`);
				indexes.push({ ...unsquashed, tableName: table.name });
			}
		}

		switch (statement.type) {
			case 'alter_table_alter_column_set_type':
				columnType = ` ${statement.newDataType}`;

				columnDefault = statement.columnDefault
					? ` DEFAULT ${statement.columnDefault}`
					: '';

				columnNotNull = statement.columnNotNull ? ` NOT NULL` : '';

				break;
			case 'alter_table_alter_column_drop_notnull':
				columnType = ` ${statement.newDataType}`;

				columnDefault = statement.columnDefault
					? ` DEFAULT ${statement.columnDefault}`
					: '';

				columnNotNull = '';
				break;
			case 'alter_table_alter_column_set_notnull':
				columnType = ` ${statement.newDataType}`;

				columnDefault = statement.columnDefault
					? ` DEFAULT ${statement.columnDefault}`
					: '';

				columnNotNull = ` NOT NULL`;
				break;
			case 'alter_table_alter_column_set_default':
				columnType = ` ${statement.newDataType}`;

				columnDefault = ` DEFAULT ${statement.newDefaultValue}`;

				columnNotNull = statement.columnNotNull ? ` NOT NULL` : '';
				break;
			case 'alter_table_alter_column_drop_default':
				columnType = ` ${statement.newDataType}`;

				columnDefault = '';

				columnNotNull = statement.columnNotNull ? ` NOT NULL` : '';

Domain

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free