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