createTableColumns() — drizzle-orm Function Reference
Architecture documentation for the createTableColumns() function in introspect-gel.ts from the drizzle-orm codebase.
Entity Profile
Dependency Diagram
graph TD eca90b4e_5154_72f2_c38f_cac24c3036e0["createTableColumns()"] ac795a29_c480_454a_c930_ea8898cad46c["introspect-gel.ts"] eca90b4e_5154_72f2_c38f_cac24c3036e0 -->|defined in| ac795a29_c480_454a_c930_ea8898cad46c d6ed66aa_aafe_f478_835c_7c02934633eb["schemaToTypeScript()"] d6ed66aa_aafe_f478_835c_7c02934633eb -->|calls| eca90b4e_5154_72f2_c38f_cac24c3036e0 88bf53ff_cff7_eb87_a692_a90b044f574b["isSelf()"] eca90b4e_5154_72f2_c38f_cac24c3036e0 -->|calls| 88bf53ff_cff7_eb87_a692_a90b044f574b 8ddd2375_b909_cbd3_328f_c35b691f8b65["column()"] eca90b4e_5154_72f2_c38f_cac24c3036e0 -->|calls| 8ddd2375_b909_cbd3_328f_c35b691f8b65 96c06032_0b9c_3be8_0918_ecaddf5bf39e["dimensionsInArray()"] eca90b4e_5154_72f2_c38f_cac24c3036e0 -->|calls| 96c06032_0b9c_3be8_0918_ecaddf5bf39e 2d45ec70_8e8a_7cb2_16e2_1b050ad1b5e0["mapDefault()"] eca90b4e_5154_72f2_c38f_cac24c3036e0 -->|calls| 2d45ec70_8e8a_7cb2_16e2_1b050ad1b5e0 dfcd25c0_458e_c669_27d0_463cf9a3a135["generateIdentityParams()"] eca90b4e_5154_72f2_c38f_cac24c3036e0 -->|calls| dfcd25c0_458e_c669_27d0_463cf9a3a135 a7f5c7a2_3cd7_5521_1f7d_dc2892c7fb5b["isCyclic()"] eca90b4e_5154_72f2_c38f_cac24c3036e0 -->|calls| a7f5c7a2_3cd7_5521_1f7d_dc2892c7fb5b 75b32510_d64f_63b3_5a7e_75ed201613df["paramNameFor()"] eca90b4e_5154_72f2_c38f_cac24c3036e0 -->|calls| 75b32510_d64f_63b3_5a7e_75ed201613df 13b884c4_04ee_3a07_de49_bfbf8819424d["withCasing()"] eca90b4e_5154_72f2_c38f_cac24c3036e0 -->|calls| 13b884c4_04ee_3a07_de49_bfbf8819424d style eca90b4e_5154_72f2_c38f_cac24c3036e0 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
drizzle-kit/src/introspect-gel.ts lines 834–921
const createTableColumns = (
tableName: string,
columns: Column[],
fks: ForeignKey[],
enumTypes: Set<string>,
schemas: Record<string, string>,
casing: Casing,
internals: GelKitInternals,
): 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) => {
const columnStatement = column(
tableName,
it.type,
it.name,
enumTypes,
it.typeSchema ?? 'public',
casing,
it.default,
internals,
);
statement += '\t';
statement += columnStatement;
// Provide just this in column function
if (internals?.tables[tableName]?.columns[it.name]?.isArray) {
statement += dimensionsInArray(internals?.tables[tableName]?.columns[it.name]?.dimensions);
}
statement += mapDefault(tableName, it.type, it.name, enumTypes, it.typeSchema ?? 'public', it.default, internals);
statement += it.primaryKey ? '.primaryKey()' : '';
statement += it.notNull && !it.identity ? '.notNull()' : '';
statement += it.identity ? generateIdentityParams(it.identity) : '';
statement += it.generated ? `.generatedAlwaysAs(sql\`${it.generated.as}\`)` : '';
// const fks = fkByColumnName[it.name];
// Andrii: I switched it off until we will get a custom naem setting in references
// 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) ? ': AnyGelColumn' : '';
// const paramsStr = objToStatement2(params);
// const tableSchema = schemas[it.schemaTo || ''];
// const paramName = paramNameFor(it.tableTo, tableSchema);
// if (paramsStr) {
// return `.references(()${typeSuffix} => ${
// withCasing(
// paramName,
// casing,
// )
// }.${withCasing(it.columnsTo[0], casing)}, ${paramsStr} )`;
// }
// return `.references(()${typeSuffix} => ${
// withCasing(
// paramName,
// casing,
// )
// }.${withCasing(it.columnsTo[0], casing)})`;
// })
// .join('');
// statement += fksStatement;
Domain
Subdomains
Defined In
Calls
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-gel.ts.
Where is createTableColumns() defined?
createTableColumns() is defined in drizzle-kit/src/introspect-gel.ts at line 834.
What does createTableColumns() call?
createTableColumns() calls 8 function(s): column, dimensionsInArray, generateIdentityParams, isCyclic, isSelf, mapDefault, paramNameFor, 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