Home / Class/ SQLiteCreateTableConvertor Class — drizzle-orm Architecture

SQLiteCreateTableConvertor Class — drizzle-orm Architecture

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

Entity Profile

Dependency Diagram

graph TD
  49216312_c8e3_45dd_dd97_3e5de216bb55["SQLiteCreateTableConvertor"]
  fe4174c7_3b9c_5b26_98a0_b2395ca21939["sqlgenerator.ts"]
  49216312_c8e3_45dd_dd97_3e5de216bb55 -->|defined in| fe4174c7_3b9c_5b26_98a0_b2395ca21939
  6d15aa2b_5209_30e3_5325_7865f4118407["can()"]
  49216312_c8e3_45dd_dd97_3e5de216bb55 -->|method| 6d15aa2b_5209_30e3_5325_7865f4118407
  136fa15c_ff30_1306_53c2_efa63d07459c["convert()"]
  49216312_c8e3_45dd_dd97_3e5de216bb55 -->|method| 136fa15c_ff30_1306_53c2_efa63d07459c

Relationship Graph

Source Code

drizzle-kit/src/sqlgenerator.ts lines 658–751

export class SQLiteCreateTableConvertor extends Convertor {
	can(statement: JsonStatement, dialect: Dialect): boolean {
		return statement.type === 'sqlite_create_table' && (dialect === 'sqlite' || dialect === 'turso');
	}

	convert(st: JsonSqliteCreateTableStatement) {
		const {
			tableName,
			columns,
			referenceData,
			compositePKs,
			uniqueConstraints,
			checkConstraints,
		} = st;

		let statement = '';
		statement += `CREATE TABLE \`${tableName}\` (\n`;
		for (let i = 0; i < columns.length; i++) {
			const column = columns[i];

			const primaryKeyStatement = column.primaryKey ? ' PRIMARY KEY' : '';
			const notNullStatement = column.notNull ? ' NOT NULL' : '';
			const defaultStatement = column.default !== undefined ? ` DEFAULT ${column.default}` : '';

			const autoincrementStatement = column.autoincrement
				? ' AUTOINCREMENT'
				: '';

			const generatedStatement = column.generated
				? ` GENERATED ALWAYS AS ${column.generated.as} ${column.generated.type.toUpperCase()}`
				: '';

			statement += '\t';
			statement +=
				`\`${column.name}\` ${column.type}${primaryKeyStatement}${autoincrementStatement}${defaultStatement}${generatedStatement}${notNullStatement}`;

			statement += i === columns.length - 1 ? '' : ',\n';
		}

		compositePKs.forEach((it) => {
			statement += ',\n\t';
			statement += `PRIMARY KEY(${it.map((it) => `\`${it}\``).join(', ')})`;
		});

		for (let i = 0; i < referenceData.length; i++) {
			const {
				name,
				tableFrom,
				tableTo,
				columnsFrom,
				columnsTo,
				onDelete,
				onUpdate,
			} = referenceData[i];

			const onDeleteStatement = onDelete ? ` ON DELETE ${onDelete}` : '';
			const onUpdateStatement = onUpdate ? ` ON UPDATE ${onUpdate}` : '';
			const fromColumnsString = columnsFrom.map((it) => `\`${it}\``).join(',');
			const toColumnsString = columnsTo.map((it) => `\`${it}\``).join(',');

			statement += ',';
			statement += '\n\t';
			statement +=
				`FOREIGN KEY (${fromColumnsString}) REFERENCES \`${tableTo}\`(${toColumnsString})${onUpdateStatement}${onDeleteStatement}`;
		}

		if (
			typeof uniqueConstraints !== 'undefined'
			&& uniqueConstraints.length > 0
		) {
			for (const uniqueConstraint of uniqueConstraints) {
				statement += ',\n';
				const unsquashedUnique = SQLiteSquasher.unsquashUnique(uniqueConstraint);
				statement += `\tCONSTRAINT ${unsquashedUnique.name} UNIQUE(\`${unsquashedUnique.columns.join(`\`,\``)}\`)`;
			}
		}

		if (
			typeof checkConstraints !== 'undefined'
			&& checkConstraints.length > 0
		) {

Domain

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free