PgCreateTableConvertor Class — drizzle-orm Architecture
Architecture documentation for the PgCreateTableConvertor class in sqlgenerator.ts from the drizzle-orm codebase.
Entity Profile
Dependency Diagram
graph TD 09c8a9b0_6dfa_e0d0_8ff5_e29638efe258["PgCreateTableConvertor"] fe4174c7_3b9c_5b26_98a0_b2395ca21939["sqlgenerator.ts"] 09c8a9b0_6dfa_e0d0_8ff5_e29638efe258 -->|defined in| fe4174c7_3b9c_5b26_98a0_b2395ca21939 85d76ead_1e3b_ef64_9aeb_45907633beb9["can()"] 09c8a9b0_6dfa_e0d0_8ff5_e29638efe258 -->|method| 85d76ead_1e3b_ef64_9aeb_45907633beb9 0c0075d1_721b_7330_13f9_51cb37ea219c["convert()"] 09c8a9b0_6dfa_e0d0_8ff5_e29638efe258 -->|method| 0c0075d1_721b_7330_13f9_51cb37ea219c
Relationship Graph
Source Code
drizzle-kit/src/sqlgenerator.ts lines 385–495
class PgCreateTableConvertor extends Convertor {
can(statement: JsonStatement, dialect: Dialect): boolean {
return statement.type === 'create_table' && dialect === 'postgresql';
}
convert(st: JsonCreateTableStatement) {
const { tableName, schema, columns, compositePKs, uniqueConstraints, checkConstraints, policies, isRLSEnabled } =
st;
let statement = '';
const name = schema ? `"${schema}"."${tableName}"` : `"${tableName}"`;
statement += `CREATE TABLE ${name} (\n`;
for (let i = 0; i < columns.length; i++) {
const column = columns[i];
const primaryKeyStatement = column.primaryKey ? ' PRIMARY KEY' : '';
const notNullStatement = column.notNull && !column.identity ? ' NOT NULL' : '';
const defaultStatement = column.default !== undefined ? ` DEFAULT ${column.default}` : '';
const uniqueConstraint = column.isUnique
? ` CONSTRAINT "${column.uniqueName}" UNIQUE${column.nullsNotDistinct ? ' NULLS NOT DISTINCT' : ''}`
: '';
const schemaPrefix = column.typeSchema && column.typeSchema !== 'public'
? `"${column.typeSchema}".`
: '';
const type = parseType(schemaPrefix, column.type);
const generated = column.generated;
const generatedStatement = generated ? ` GENERATED ALWAYS AS (${generated?.as}) STORED` : '';
const unsquashedIdentity = column.identity
? PgSquasher.unsquashIdentity(column.identity)
: undefined;
const identityWithSchema = schema
? `"${schema}"."${unsquashedIdentity?.name}"`
: `"${unsquashedIdentity?.name}"`;
const identity = unsquashedIdentity
? ` GENERATED ${
unsquashedIdentity.type === 'always' ? 'ALWAYS' : 'BY DEFAULT'
} AS IDENTITY (sequence name ${identityWithSchema}${
unsquashedIdentity.increment
? ` INCREMENT BY ${unsquashedIdentity.increment}`
: ''
}${
unsquashedIdentity.minValue
? ` MINVALUE ${unsquashedIdentity.minValue}`
: ''
}${
unsquashedIdentity.maxValue
? ` MAXVALUE ${unsquashedIdentity.maxValue}`
: ''
}${
unsquashedIdentity.startWith
? ` START WITH ${unsquashedIdentity.startWith}`
: ''
}${unsquashedIdentity.cache ? ` CACHE ${unsquashedIdentity.cache}` : ''}${
unsquashedIdentity.cycle ? ` CYCLE` : ''
})`
: '';
statement += '\t'
+ `"${column.name}" ${type}${primaryKeyStatement}${defaultStatement}${generatedStatement}${notNullStatement}${uniqueConstraint}${identity}`;
statement += i === columns.length - 1 ? '' : ',\n';
}
if (typeof compositePKs !== 'undefined' && compositePKs.length > 0) {
statement += ',\n';
const compositePK = PgSquasher.unsquashPK(compositePKs[0]);
statement += `\tCONSTRAINT "${st.compositePkName}" PRIMARY KEY(\"${compositePK.columns.join(`","`)}\")`;
// statement += `\n`;
}
if (
typeof uniqueConstraints !== 'undefined'
&& uniqueConstraints.length > 0
) {
Domain
Defined In
Source
Frequently Asked Questions
What is the PgCreateTableConvertor class?
PgCreateTableConvertor is a class in the drizzle-orm codebase, defined in drizzle-kit/src/sqlgenerator.ts.
Where is PgCreateTableConvertor defined?
PgCreateTableConvertor is defined in drizzle-kit/src/sqlgenerator.ts at line 385.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free