Home / Class/ LibSQLCreateForeignKeyConvertor Class — drizzle-orm Architecture

LibSQLCreateForeignKeyConvertor Class — drizzle-orm Architecture

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

Entity Profile

Dependency Diagram

graph TD
  cc230e3a_5094_8f78_f677_c2c8e9f510a0["LibSQLCreateForeignKeyConvertor"]
  fe4174c7_3b9c_5b26_98a0_b2395ca21939["sqlgenerator.ts"]
  cc230e3a_5094_8f78_f677_c2c8e9f510a0 -->|defined in| fe4174c7_3b9c_5b26_98a0_b2395ca21939
  14bb06bf_7519_9675_3fb4_77a59482b5bd["can()"]
  cc230e3a_5094_8f78_f677_c2c8e9f510a0 -->|method| 14bb06bf_7519_9675_3fb4_77a59482b5bd
  9bda6163_ef7b_3f92_031e_0bd4435fc770["convert()"]
  cc230e3a_5094_8f78_f677_c2c8e9f510a0 -->|method| 9bda6163_ef7b_3f92_031e_0bd4435fc770

Relationship Graph

Source Code

drizzle-kit/src/sqlgenerator.ts lines 3369–3400

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

	convert(
		statement: JsonCreateReferenceStatement,
		json2?: SQLiteSchemaSquashed,
		action?: 'push',
	): string {
		const { columnsFrom, columnsTo, tableFrom, onDelete, onUpdate, tableTo } = action === 'push'
			? SQLiteSquasher.unsquashPushFK(statement.data)
			: SQLiteSquasher.unsquashFK(statement.data);
		const { columnDefault, columnNotNull, columnType } = statement;

		const onDeleteStatement = onDelete ? ` ON DELETE ${onDelete}` : '';
		const onUpdateStatement = onUpdate ? ` ON UPDATE ${onUpdate}` : '';
		const columnsDefaultValue = columnDefault
			? ` DEFAULT ${columnDefault}`
			: '';
		const columnNotNullValue = columnNotNull ? ` NOT NULL` : '';
		const columnTypeValue = columnType ? ` ${columnType}` : '';

		const columnFrom = columnsFrom[0];
		const columnTo = columnsTo[0];

		return `ALTER TABLE \`${tableFrom}\` ALTER COLUMN "${columnFrom}" TO "${columnFrom}"${columnTypeValue}${columnNotNullValue}${columnsDefaultValue} REFERENCES ${tableTo}(${columnTo})${onDeleteStatement}${onUpdateStatement};`;
	}
}

Domain

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free