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

pgTableWithSchema() — drizzle-orm Function Reference

Architecture documentation for the pgTableWithSchema() function in table.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  dae5654f_1fee_289f_bc31_bb7199ac008e["pgTableWithSchema()"]
  2d5c8884_973c_561c_def6_5e394ea36d1a["table.ts"]
  dae5654f_1fee_289f_bc31_bb7199ac008e -->|defined in| 2d5c8884_973c_561c_def6_5e394ea36d1a
  cb98271f_26ce_30a5_c69f_b167a0a9c063["pgTable()"]
  cb98271f_26ce_30a5_c69f_b167a0a9c063 -->|calls| dae5654f_1fee_289f_bc31_bb7199ac008e
  acb44198_384a_c886_4234_b308c98c05c6["pgTableCreator()"]
  acb44198_384a_c886_4234_b308c98c05c6 -->|calls| dae5654f_1fee_289f_bc31_bb7199ac008e
  ea1ef90c_4d8f_98dc_2d20_4e57f6ad3e71["getPgColumnBuilders()"]
  dae5654f_1fee_289f_bc31_bb7199ac008e -->|calls| ea1ef90c_4d8f_98dc_2d20_4e57f6ad3e71
  style dae5654f_1fee_289f_bc31_bb7199ac008e fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

drizzle-orm/src/pg-core/table.ts lines 71–137

export function pgTableWithSchema<
	TTableName extends string,
	TSchemaName extends string | undefined,
	TColumnsMap extends Record<string, PgColumnBuilderBase>,
>(
	name: TTableName,
	columns: TColumnsMap | ((columnTypes: PgColumnsBuilders) => TColumnsMap),
	extraConfig:
		| ((self: BuildExtraConfigColumns<TTableName, TColumnsMap, 'pg'>) => PgTableExtraConfig | PgTableExtraConfigValue[])
		| undefined,
	schema: TSchemaName,
	baseName = name,
): PgTableWithColumns<{
	name: TTableName;
	schema: TSchemaName;
	columns: BuildColumns<TTableName, TColumnsMap, 'pg'>;
	dialect: 'pg';
}> {
	const rawTable = new PgTable<{
		name: TTableName;
		schema: TSchemaName;
		columns: BuildColumns<TTableName, TColumnsMap, 'pg'>;
		dialect: 'pg';
	}>(name, schema, baseName);

	const parsedColumns: TColumnsMap = typeof columns === 'function' ? columns(getPgColumnBuilders()) : columns;

	const builtColumns = Object.fromEntries(
		Object.entries(parsedColumns).map(([name, colBuilderBase]) => {
			const colBuilder = colBuilderBase as PgColumnBuilder;
			colBuilder.setName(name);
			const column = colBuilder.build(rawTable);
			rawTable[InlineForeignKeys].push(...colBuilder.buildForeignKeys(column, rawTable));
			return [name, column];
		}),
	) as unknown as BuildColumns<TTableName, TColumnsMap, 'pg'>;

	const builtColumnsForExtraConfig = Object.fromEntries(
		Object.entries(parsedColumns).map(([name, colBuilderBase]) => {
			const colBuilder = colBuilderBase as PgColumnBuilder;
			colBuilder.setName(name);
			const column = colBuilder.buildExtraConfigColumn(rawTable);
			return [name, column];
		}),
	) as unknown as BuildExtraConfigColumns<TTableName, TColumnsMap, 'pg'>;

	const table = Object.assign(rawTable, builtColumns);

	table[Table.Symbol.Columns] = builtColumns;
	table[Table.Symbol.ExtraConfigColumns] = builtColumnsForExtraConfig;

	if (extraConfig) {
		table[PgTable.Symbol.ExtraConfigBuilder] = extraConfig as any;
	}

	return Object.assign(table, {
		enableRLS: () => {
			table[PgTable.Symbol.EnableRLS] = true;
			return table as PgTableWithColumns<{
				name: TTableName;
				schema: TSchemaName;
				columns: BuildColumns<TTableName, TColumnsMap, 'pg'>;
				dialect: 'pg';
			}>;
		},
	});
}

Domain

Subdomains

Frequently Asked Questions

What does pgTableWithSchema() do?
pgTableWithSchema() is a function in the drizzle-orm codebase, defined in drizzle-orm/src/pg-core/table.ts.
Where is pgTableWithSchema() defined?
pgTableWithSchema() is defined in drizzle-orm/src/pg-core/table.ts at line 71.
What does pgTableWithSchema() call?
pgTableWithSchema() calls 1 function(s): getPgColumnBuilders.
What calls pgTableWithSchema()?
pgTableWithSchema() is called by 2 function(s): pgTable, pgTableCreator.

Analyze Your Own Codebase

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

Try Supermodel Free