createTableColumns() — drizzle-orm Function Reference
Architecture documentation for the createTableColumns() function in introspect-sqlite.ts from the drizzle-orm codebase.
Entity Profile
Dependency Diagram
graph TD 154c5f90_2024_d20f_7338_69f47fcd8698["createTableColumns()"] c1c349dd_2e31_d056_728c_c034cebb41c0["introspect-sqlite.ts"] 154c5f90_2024_d20f_7338_69f47fcd8698 -->|defined in| c1c349dd_2e31_d056_728c_c034cebb41c0 5a8c82ee_a5ea_c82a_7f3f_71133b91a28a["schemaToTypeScript()"] 5a8c82ee_a5ea_c82a_7f3f_71133b91a28a -->|calls| 154c5f90_2024_d20f_7338_69f47fcd8698 5b76307c_ebf1_1efd_2cb6_5014e6794762["isSelf()"] 154c5f90_2024_d20f_7338_69f47fcd8698 -->|calls| 5b76307c_ebf1_1efd_2cb6_5014e6794762 faade615_b82c_cd55_c09a_a253918d8b88["column()"] 154c5f90_2024_d20f_7338_69f47fcd8698 -->|calls| faade615_b82c_cd55_c09a_a253918d8b88 a92fb3de_d403_ac05_21fd_84b5a596de3a["isCyclic()"] 154c5f90_2024_d20f_7338_69f47fcd8698 -->|calls| a92fb3de_d403_ac05_21fd_84b5a596de3a dc968f8c_7a30_c267_c13f_dae729c5abf9["objToStatement2()"] 154c5f90_2024_d20f_7338_69f47fcd8698 -->|calls| dc968f8c_7a30_c267_c13f_dae729c5abf9 d11905b4_a7b6_40f4_09ff_114b87f29eed["withCasing()"] 154c5f90_2024_d20f_7338_69f47fcd8698 -->|calls| d11905b4_a7b6_40f4_09ff_114b87f29eed style 154c5f90_2024_d20f_7338_69f47fcd8698 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
drizzle-kit/src/introspect-sqlite.ts lines 337–408
const createTableColumns = (
columns: Column[],
fks: ForeignKey[],
casing: Casing,
): string => {
let statement = '';
// no self refs and no cyclic
const oneColumnsFKs = Object.values(fks)
.filter((it) => {
return !isSelf(it);
})
.filter((it) => it.columnsFrom.length === 1);
const fkByColumnName = oneColumnsFKs.reduce((res, it) => {
const arr = res[it.columnsFrom[0]] || [];
arr.push(it);
res[it.columnsFrom[0]] = arr;
return res;
}, {} as Record<string, ForeignKey[]>);
columns.forEach((it) => {
statement += '\t';
statement += column(it.type, it.name, it.default, it.autoincrement, casing);
statement += it.primaryKey
? `.primaryKey(${it.autoincrement ? '{ autoIncrement: true }' : ''})`
: '';
statement += it.notNull ? '.notNull()' : '';
statement += it.generated
? `.generatedAlwaysAs(sql\`${
it.generated.as
.replace(/`/g, '\\`')
.slice(1, -1)
}\`, { mode: "${it.generated.type}" })`
: '';
const fks = fkByColumnName[it.name];
if (fks) {
const fksStatement = fks
.map((it) => {
const onDelete = it.onDelete && it.onDelete !== 'no action' ? it.onDelete : null;
const onUpdate = it.onUpdate && it.onUpdate !== 'no action' ? it.onUpdate : null;
const params = { onDelete, onUpdate };
const typeSuffix = isCyclic(it) ? ': AnySQLiteColumn' : '';
const paramsStr = objToStatement2(params);
if (paramsStr) {
return `.references(()${typeSuffix} => ${
withCasing(
it.tableTo,
casing,
)
}.${withCasing(it.columnsTo[0], casing)}, ${paramsStr} )`;
}
return `.references(()${typeSuffix} => ${
withCasing(
it.tableTo,
casing,
)
}.${withCasing(it.columnsTo[0], casing)})`;
})
.join('');
statement += fksStatement;
}
statement += ',\n';
});
return statement;
};
Domain
Subdomains
Defined In
Called By
Source
Frequently Asked Questions
What does createTableColumns() do?
createTableColumns() is a function in the drizzle-orm codebase, defined in drizzle-kit/src/introspect-sqlite.ts.
Where is createTableColumns() defined?
createTableColumns() is defined in drizzle-kit/src/introspect-sqlite.ts at line 337.
What does createTableColumns() call?
createTableColumns() calls 5 function(s): column, isCyclic, isSelf, objToStatement2, withCasing.
What calls createTableColumns()?
createTableColumns() is called by 1 function(s): schemaToTypeScript.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free