LibSQLRecreateTableConvertor Class — drizzle-orm Architecture
Architecture documentation for the LibSQLRecreateTableConvertor class in sqlgenerator.ts from the drizzle-orm codebase.
Entity Profile
Dependency Diagram
graph TD 9c3270db_8c9d_38fd_184f_511ea1d8a518["LibSQLRecreateTableConvertor"] fe4174c7_3b9c_5b26_98a0_b2395ca21939["sqlgenerator.ts"] 9c3270db_8c9d_38fd_184f_511ea1d8a518 -->|defined in| fe4174c7_3b9c_5b26_98a0_b2395ca21939 66c013b2_45c0_e934_5b98_8de983bf4b2d["can()"] 9c3270db_8c9d_38fd_184f_511ea1d8a518 -->|method| 66c013b2_45c0_e934_5b98_8de983bf4b2d e1057ffc_e69b_1858_cc5c_7d65f1ff7a5b["convert()"] 9c3270db_8c9d_38fd_184f_511ea1d8a518 -->|method| e1057ffc_e69b_1858_cc5c_7d65f1ff7a5b
Relationship Graph
Source Code
drizzle-kit/src/sqlgenerator.ts lines 3830–3894
class LibSQLRecreateTableConvertor extends Convertor {
can(statement: JsonStatement, dialect: Dialect): boolean {
return (
statement.type === 'recreate_table'
&& dialect === 'turso'
);
}
convert(statement: JsonRecreateTableStatement): string[] {
const { tableName, columns, compositePKs, referenceData, checkConstraints } = statement;
const columnNames = columns.map((it) => `"${it.name}"`).join(', ');
const newTableName = `__new_${tableName}`;
const sqlStatements: string[] = [];
const mappedCheckConstraints: string[] = checkConstraints.map((it) =>
it.replaceAll(`"${tableName}".`, `"${newTableName}".`).replaceAll(`\`${tableName}\`.`, `\`${newTableName}\`.`)
.replaceAll(`${tableName}.`, `${newTableName}.`).replaceAll(`'${tableName}'.`, `\`${newTableName}\`.`)
);
sqlStatements.push(`PRAGMA foreign_keys=OFF;`);
// create new table
sqlStatements.push(
new SQLiteCreateTableConvertor().convert({
type: 'sqlite_create_table',
tableName: newTableName,
columns,
referenceData,
compositePKs,
checkConstraints: mappedCheckConstraints,
}),
);
// migrate data
sqlStatements.push(
`INSERT INTO \`${newTableName}\`(${columnNames}) SELECT ${columnNames} FROM \`${tableName}\`;`,
);
// drop table
sqlStatements.push(
new SQLiteDropTableConvertor().convert({
type: 'drop_table',
tableName: tableName,
schema: '',
}),
);
// rename table
sqlStatements.push(
new SqliteRenameTableConvertor().convert({
fromSchema: '',
tableNameFrom: newTableName,
tableNameTo: tableName,
toSchema: '',
type: 'rename_table',
}),
);
sqlStatements.push(`PRAGMA foreign_keys=ON;`);
return sqlStatements;
}
}
Domain
Defined In
Source
Frequently Asked Questions
What is the LibSQLRecreateTableConvertor class?
LibSQLRecreateTableConvertor is a class in the drizzle-orm codebase, defined in drizzle-kit/src/sqlgenerator.ts.
Where is LibSQLRecreateTableConvertor defined?
LibSQLRecreateTableConvertor is defined in drizzle-kit/src/sqlgenerator.ts at line 3830.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free