schemaToTypeScript() — drizzle-orm Function Reference
Architecture documentation for the schemaToTypeScript() function in introspect-sqlite.ts from the drizzle-orm codebase.
Entity Profile
Dependency Diagram
graph TD 5a8c82ee_a5ea_c82a_7f3f_71133b91a28a["schemaToTypeScript()"] c1c349dd_2e31_d056_728c_c034cebb41c0["introspect-sqlite.ts"] 5a8c82ee_a5ea_c82a_7f3f_71133b91a28a -->|defined in| c1c349dd_2e31_d056_728c_c034cebb41c0 7c863cc4_5d6c_f72d_cf36_6aa755ac2321["sqliteIntrospect()"] 7c863cc4_5d6c_f72d_cf36_6aa755ac2321 -->|calls| 5a8c82ee_a5ea_c82a_7f3f_71133b91a28a d11905b4_a7b6_40f4_09ff_114b87f29eed["withCasing()"] 5a8c82ee_a5ea_c82a_7f3f_71133b91a28a -->|calls| d11905b4_a7b6_40f4_09ff_114b87f29eed 154c5f90_2024_d20f_7338_69f47fcd8698["createTableColumns()"] 5a8c82ee_a5ea_c82a_7f3f_71133b91a28a -->|calls| 154c5f90_2024_d20f_7338_69f47fcd8698 5b76307c_ebf1_1efd_2cb6_5014e6794762["isSelf()"] 5a8c82ee_a5ea_c82a_7f3f_71133b91a28a -->|calls| 5b76307c_ebf1_1efd_2cb6_5014e6794762 53155f85_7a2d_6004_4b1e_e7114e23ba01["createTableIndexes()"] 5a8c82ee_a5ea_c82a_7f3f_71133b91a28a -->|calls| 53155f85_7a2d_6004_4b1e_e7114e23ba01 48befb78_597d_08a4_28c3_0043e79f20bd["createTableFKs()"] 5a8c82ee_a5ea_c82a_7f3f_71133b91a28a -->|calls| 48befb78_597d_08a4_28c3_0043e79f20bd 6c849061_c169_d087_fe83_43fe80a19ac3["createTablePKs()"] 5a8c82ee_a5ea_c82a_7f3f_71133b91a28a -->|calls| 6c849061_c169_d087_fe83_43fe80a19ac3 259f76dc_c2d5_a363_60c7_501a2c95a74e["createTableUniques()"] 5a8c82ee_a5ea_c82a_7f3f_71133b91a28a -->|calls| 259f76dc_c2d5_a363_60c7_501a2c95a74e 430cd54b_14d4_9033_5310_2a68699c4da0["createTableChecks()"] 5a8c82ee_a5ea_c82a_7f3f_71133b91a28a -->|calls| 430cd54b_14d4_9033_5310_2a68699c4da0 style 5a8c82ee_a5ea_c82a_7f3f_71133b91a28a fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
drizzle-kit/src/introspect-sqlite.ts lines 73–246
export const schemaToTypeScript = (
schema: SQLiteSchemaInternal,
casing: Casing,
) => {
// collectFKs
Object.values(schema.tables).forEach((table) => {
Object.values(table.foreignKeys).forEach((fk) => {
const relation = `${fk.tableFrom}-${fk.tableTo}`;
relations.add(relation);
});
});
const imports = Object.values(schema.tables).reduce(
(res, it) => {
const idxImports = Object.values(it.indexes).map((idx) => idx.isUnique ? 'uniqueIndex' : 'index');
const fkImpots = Object.values(it.foreignKeys).map((it) => 'foreignKey');
const pkImports = Object.values(it.compositePrimaryKeys).map(
(it) => 'primaryKey',
);
const uniqueImports = Object.values(it.uniqueConstraints).map(
(it) => 'unique',
);
const checkImports = Object.values(it.checkConstraints).map(
(it) => 'check',
);
res.sqlite.push(...idxImports);
res.sqlite.push(...fkImpots);
res.sqlite.push(...pkImports);
res.sqlite.push(...uniqueImports);
res.sqlite.push(...checkImports);
const columnImports = Object.values(it.columns)
.map((col) => {
return col.type;
})
.filter((type) => {
return sqliteImportsList.has(type);
});
res.sqlite.push(...columnImports);
return res;
},
{ sqlite: [] as string[] },
);
Object.values(schema.views).forEach((it) => {
imports.sqlite.push('sqliteView');
const columnImports = Object.values(it.columns)
.map((col) => {
return col.type;
})
.filter((type) => {
return sqliteImportsList.has(type);
});
imports.sqlite.push(...columnImports);
});
const tableStatements = Object.values(schema.tables).map((table) => {
const func = 'sqliteTable';
let statement = '';
if (imports.sqlite.includes(withCasing(table.name, casing))) {
statement = `// Table name is in conflict with ${
withCasing(
table.name,
casing,
)
} import.\n// Please change to any other name, that is not in imports list\n`;
}
statement += `export const ${withCasing(table.name, casing)} = ${func}("${table.name}", {\n`;
statement += createTableColumns(
Object.values(table.columns),
Object.values(table.foreignKeys),
casing,
);
statement += '}';
// more than 2 fields or self reference or cyclic
const filteredFKs = Object.values(table.foreignKeys).filter((it) => {
Domain
Subdomains
Defined In
Calls
Called By
Source
Frequently Asked Questions
What does schemaToTypeScript() do?
schemaToTypeScript() is a function in the drizzle-orm codebase, defined in drizzle-kit/src/introspect-sqlite.ts.
Where is schemaToTypeScript() defined?
schemaToTypeScript() is defined in drizzle-kit/src/introspect-sqlite.ts at line 73.
What does schemaToTypeScript() call?
schemaToTypeScript() calls 8 function(s): createTableChecks, createTableColumns, createTableFKs, createTableIndexes, createTablePKs, createTableUniques, isSelf, withCasing.
What calls schemaToTypeScript()?
schemaToTypeScript() is called by 1 function(s): sqliteIntrospect.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free