Home / Function/ createTableIndexes() — drizzle-orm Function Reference

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

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