Home / Class/ MySqlCreateTableConvertor Class — drizzle-orm Architecture

MySqlCreateTableConvertor Class — drizzle-orm Architecture

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

Entity Profile

Dependency Diagram

graph TD
  7e53afd9_e254_eeca_1c51_5decf7416f8f["MySqlCreateTableConvertor"]
  fe4174c7_3b9c_5b26_98a0_b2395ca21939["sqlgenerator.ts"]
  7e53afd9_e254_eeca_1c51_5decf7416f8f -->|defined in| fe4174c7_3b9c_5b26_98a0_b2395ca21939
  8209ae22_5947_9e0f_b607_1670623415d1["can()"]
  7e53afd9_e254_eeca_1c51_5decf7416f8f -->|method| 8209ae22_5947_9e0f_b607_1670623415d1
  73841afe_e37c_05f3_12aa_0100e542b6a9["convert()"]
  7e53afd9_e254_eeca_1c51_5decf7416f8f -->|method| 73841afe_e37c_05f3_12aa_0100e542b6a9

Relationship Graph

Source Code

drizzle-kit/src/sqlgenerator.ts lines 497–581

class MySqlCreateTableConvertor extends Convertor {
	can(statement: JsonStatement, dialect: Dialect): boolean {
		return statement.type === 'create_table' && dialect === 'mysql';
	}

	convert(st: JsonCreateTableStatement) {
		const {
			tableName,
			columns,
			schema,
			checkConstraints,
			compositePKs,
			uniqueConstraints,
			internals,
		} = 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 onUpdateStatement = column.onUpdate
				? ` ON UPDATE CURRENT_TIMESTAMP`
				: '';

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

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

			statement += '\t'
				+ `\`${column.name}\` ${column.type}${autoincrementStatement}${primaryKeyStatement}${generatedStatement}${notNullStatement}${defaultStatement}${onUpdateStatement}`;
			statement += i === columns.length - 1 ? '' : ',\n';
		}

		if (typeof compositePKs !== 'undefined' && compositePKs.length > 0) {
			statement += ',\n';
			const compositePK = MySqlSquasher.unsquashPK(compositePKs[0]);
			statement += `\tCONSTRAINT \`${st.compositePkName}\` PRIMARY KEY(\`${compositePK.columns.join(`\`,\``)}\`)`;
		}

		if (
			typeof uniqueConstraints !== 'undefined'
			&& uniqueConstraints.length > 0
		) {
			for (const uniqueConstraint of uniqueConstraints) {
				statement += ',\n';
				const unsquashedUnique = MySqlSquasher.unsquashUnique(uniqueConstraint);

				const uniqueString = unsquashedUnique.columns
					.map((it) => {
						return internals?.indexes
							? internals?.indexes[unsquashedUnique.name]?.columns[it]
									?.isExpression
								? it
								: `\`${it}\``
							: `\`${it}\``;
					})
					.join(',');

				statement += `\tCONSTRAINT \`${unsquashedUnique.name}\` UNIQUE(${uniqueString})`;
			}
		}

		if (typeof checkConstraints !== 'undefined' && checkConstraints.length > 0) {
			for (const checkConstraint of checkConstraints) {
				statement += ',\n';
				const unsquashedCheck = MySqlSquasher.unsquashCheck(checkConstraint);

				statement += `\tCONSTRAINT \`${unsquashedCheck.name}\` CHECK(${unsquashedCheck.value})`;
			}
		}

		statement += `\n);`;

Domain

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free