Home / Function/ convert() — drizzle-orm Function Reference

convert() — drizzle-orm Function Reference

Architecture documentation for the convert() function in sqlgenerator.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  13e3b282_1a64_a447_67c6_680e36ab6da1["convert()"]
  e496d264_ffa3_db83_0260_fdca9d4f91a7["LibSQLModifyColumn"]
  13e3b282_1a64_a447_67c6_680e36ab6da1 -->|defined in| e496d264_ffa3_db83_0260_fdca9d4f91a7
  style 13e3b282_1a64_a447_67c6_680e36ab6da1 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

drizzle-kit/src/sqlgenerator.ts lines 2390–2481

	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` : '';
				break;
		}

		// Seems like getting value from simple json2 shanpshot makes dates be dates
		columnDefault = columnDefault instanceof Date
			? columnDefault.toISOString()
			: columnDefault;

		sqlStatements.push(
			`ALTER TABLE \`${tableName}\` ALTER COLUMN "${columnName}" TO "${columnName}"${columnType}${columnNotNull}${columnDefault};`,
		);

		for (const index of indexes) {
			const indexPart = index.isUnique ? 'UNIQUE INDEX' : 'INDEX';

Domain

Subdomains

Frequently Asked Questions

What does convert() do?
convert() is a function in the drizzle-orm codebase, defined in drizzle-kit/src/sqlgenerator.ts.
Where is convert() defined?
convert() is defined in drizzle-kit/src/sqlgenerator.ts at line 2390.

Analyze Your Own Codebase

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

Try Supermodel Free