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
Defined In
Source
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