createTableIndexes() — drizzle-orm Function Reference
Architecture documentation for the createTableIndexes() function in introspect-gel.ts from the drizzle-orm codebase.
Entity Profile
Dependency Diagram
graph TD a67e3b98_8cdf_2b03_13e5_11238cda3b65["createTableIndexes()"] ac795a29_c480_454a_c930_ea8898cad46c["introspect-gel.ts"] a67e3b98_8cdf_2b03_13e5_11238cda3b65 -->|defined in| ac795a29_c480_454a_c930_ea8898cad46c d6ed66aa_aafe_f478_835c_7c02934633eb["schemaToTypeScript()"] d6ed66aa_aafe_f478_835c_7c02934633eb -->|calls| a67e3b98_8cdf_2b03_13e5_11238cda3b65 13b884c4_04ee_3a07_de49_bfbf8819424d["withCasing()"] a67e3b98_8cdf_2b03_13e5_11238cda3b65 -->|calls| 13b884c4_04ee_3a07_de49_bfbf8819424d df20eaf7_cb8a_0fa8_5dba_f71d57f9b8b1["indexName()"] a67e3b98_8cdf_2b03_13e5_11238cda3b65 -->|calls| df20eaf7_cb8a_0fa8_5dba_f71d57f9b8b1 style a67e3b98_8cdf_2b03_13e5_11238cda3b65 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
drizzle-kit/src/introspect-gel.ts lines 923–979
const createTableIndexes = (tableName: string, idxs: Index[], casing: Casing): string => {
let statement = '';
idxs.forEach((it) => {
// we have issue when index is called as table called
let idxKey = it.name.startsWith(tableName) && it.name !== tableName ? it.name.slice(tableName.length + 1) : it.name;
idxKey = idxKey.endsWith('_index') ? idxKey.slice(0, -'_index'.length) + '_idx' : idxKey;
idxKey = withCasing(idxKey, casing);
const indexGeneratedName = indexName(
tableName,
it.columns.map((it) => it.expression),
);
const escapedIndexName = indexGeneratedName === it.name ? '' : `"${it.name}"`;
statement += `\n\t`;
statement += it.isUnique ? 'uniqueIndex(' : 'index(';
statement += `${escapedIndexName})`;
statement += `${it.concurrently ? `.concurrently()` : ''}`;
statement += `.using("${it.method}", ${
it.columns
.map((it) => {
if (it.isExpression) {
return `sql\`${it.expression}\``;
} else {
return `table.${withCasing(it.expression, casing)}${it.asc ? '.asc()' : '.desc()'}${
it.nulls === 'first' ? '.nullsFirst()' : '.nullsLast()'
}${
it.opclass
? `.op("${it.opclass}")`
: ''
}`;
}
})
.join(', ')
})`;
statement += it.where ? `.where(sql\`${it.where}\`)` : '';
function reverseLogic(mappedWith: Record<string, string>): string {
let reversedString = '{';
for (const key in mappedWith) {
if (mappedWith.hasOwnProperty(key)) {
reversedString += `${key}: "${mappedWith[key]}",`;
}
}
reversedString = reversedString.length > 1 ? reversedString.slice(0, reversedString.length - 1) : reversedString;
return `${reversedString}}`;
}
statement += it.with && Object.keys(it.with).length > 0 ? `.with(${reverseLogic(it.with)})` : '';
statement += `,`;
});
return statement;
};
Domain
Subdomains
Defined In
Calls
Called By
Source
Frequently Asked Questions
What does createTableIndexes() do?
createTableIndexes() is a function in the drizzle-orm codebase, defined in drizzle-kit/src/introspect-gel.ts.
Where is createTableIndexes() defined?
createTableIndexes() is defined in drizzle-kit/src/introspect-gel.ts at line 923.
What does createTableIndexes() call?
createTableIndexes() calls 2 function(s): indexName, withCasing.
What calls createTableIndexes()?
createTableIndexes() 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