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
Defined In
Source
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