Home / Class/ CreatePgIndexConvertor Class — drizzle-orm Architecture

CreatePgIndexConvertor Class — drizzle-orm Architecture

Architecture documentation for the CreatePgIndexConvertor class in sqlgenerator.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  3f2e6799_507b_5eb0_221f_3831c6af98de["CreatePgIndexConvertor"]
  fe4174c7_3b9c_5b26_98a0_b2395ca21939["sqlgenerator.ts"]
  3f2e6799_507b_5eb0_221f_3831c6af98de -->|defined in| fe4174c7_3b9c_5b26_98a0_b2395ca21939
  92bd8135_8a96_d641_fe19_9bab24313ed7["can()"]
  3f2e6799_507b_5eb0_221f_3831c6af98de -->|method| 92bd8135_8a96_d641_fe19_9bab24313ed7
  21b55a3d_8627_2267_717b_91015a7ab6ef["convert()"]
  3f2e6799_507b_5eb0_221f_3831c6af98de -->|method| 21b55a3d_8627_2267_717b_91015a7ab6ef

Relationship Graph

Source Code

drizzle-kit/src/sqlgenerator.ts lines 3498–3551

class CreatePgIndexConvertor extends Convertor {
	can(statement: JsonStatement, dialect: Dialect): boolean {
		return statement.type === 'create_index_pg' && dialect === 'postgresql';
	}

	convert(statement: JsonPgCreateIndexStatement): string {
		const {
			name,
			columns,
			isUnique,
			concurrently,
			with: withMap,
			method,
			where,
		} = statement.data;
		// // since postgresql 9.5
		const indexPart = isUnique ? 'UNIQUE INDEX' : 'INDEX';
		const value = columns
			.map(
				(it) =>
					`${it.isExpression ? it.expression : `"${it.expression}"`}${
						it.opclass ? ` ${it.opclass}` : it.asc ? '' : ' DESC'
					}${
						(it.asc && it.nulls && it.nulls === 'last') || it.opclass
							? ''
							: ` NULLS ${it.nulls!.toUpperCase()}`
					}`,
			)
			.join(',');

		const tableNameWithSchema = statement.schema
			? `"${statement.schema}"."${statement.tableName}"`
			: `"${statement.tableName}"`;

		function reverseLogic(mappedWith: Record<string, string>): string {
			let reversedString = '';
			for (const key in mappedWith) {
				if (mappedWith.hasOwnProperty(key)) {
					reversedString += `${key}=${mappedWith[key]},`;
				}
			}
			reversedString = reversedString.slice(0, -1);
			return reversedString;
		}

		return `CREATE ${indexPart}${
			concurrently ? ' CONCURRENTLY' : ''
		} "${name}" ON ${tableNameWithSchema} USING ${method} (${value})${
			Object.keys(withMap!).length !== 0
				? ` WITH (${reverseLogic(withMap!)})`
				: ''
		}${where ? ` WHERE ${where}` : ''};`;
	}
}

Domain

Frequently Asked Questions

What is the CreatePgIndexConvertor class?
CreatePgIndexConvertor is a class in the drizzle-orm codebase, defined in drizzle-kit/src/sqlgenerator.ts.
Where is CreatePgIndexConvertor defined?
CreatePgIndexConvertor is defined in drizzle-kit/src/sqlgenerator.ts at line 3498.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free