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

createTableColumns() — drizzle-orm Function Reference

Architecture documentation for the createTableColumns() function in introspect-pg.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  d060c9b2_d1df_37e7_df71_422307a42ed6["createTableColumns()"]
  71516551_23e3_bf30_27c9_000fb046ef71["introspect-pg.ts"]
  d060c9b2_d1df_37e7_df71_422307a42ed6 -->|defined in| 71516551_23e3_bf30_27c9_000fb046ef71
  ae4bc88a_1e24_ce7b_ea80_728e39b829ef["schemaToTypeScript()"]
  ae4bc88a_1e24_ce7b_ea80_728e39b829ef -->|calls| d060c9b2_d1df_37e7_df71_422307a42ed6
  1e52ac37_0af2_3896_4314_dd91a737f67d["isSelf()"]
  d060c9b2_d1df_37e7_df71_422307a42ed6 -->|calls| 1e52ac37_0af2_3896_4314_dd91a737f67d
  7e9ab2b5_7980_e5af_4e4d_69d8d084e595["column()"]
  d060c9b2_d1df_37e7_df71_422307a42ed6 -->|calls| 7e9ab2b5_7980_e5af_4e4d_69d8d084e595
  c01fb033_cc3d_fd47_784d_2fc400d7cd03["dimensionsInArray()"]
  d060c9b2_d1df_37e7_df71_422307a42ed6 -->|calls| c01fb033_cc3d_fd47_784d_2fc400d7cd03
  f3c4f27e_519e_55a5_f4bc_bca97865abec["mapDefault()"]
  d060c9b2_d1df_37e7_df71_422307a42ed6 -->|calls| f3c4f27e_519e_55a5_f4bc_bca97865abec
  8642c18c_17cd_9f6a_3538_48fe742e050e["generateIdentityParams()"]
  d060c9b2_d1df_37e7_df71_422307a42ed6 -->|calls| 8642c18c_17cd_9f6a_3538_48fe742e050e
  7920a2b5_4791_abeb_cbd1_adae59f54b93["isCyclic()"]
  d060c9b2_d1df_37e7_df71_422307a42ed6 -->|calls| 7920a2b5_4791_abeb_cbd1_adae59f54b93
  17aaf236_8366_89c4_db23_4925d3c2eaf8["objToStatement2()"]
  d060c9b2_d1df_37e7_df71_422307a42ed6 -->|calls| 17aaf236_8366_89c4_db23_4925d3c2eaf8
  9033c8cf_1cd9_c420_437a_01e7a84a9869["paramNameFor()"]
  d060c9b2_d1df_37e7_df71_422307a42ed6 -->|calls| 9033c8cf_1cd9_c420_437a_01e7a84a9869
  968467a1_c4a6_11cb_5fbc_8854071f9af4["withCasing()"]
  d060c9b2_d1df_37e7_df71_422307a42ed6 -->|calls| 968467a1_c4a6_11cb_5fbc_8854071f9af4
  style d060c9b2_d1df_37e7_df71_422307a42ed6 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

drizzle-kit/src/introspect-pg.ts lines 1112–1199

const createTableColumns = (
	tableName: string,
	columns: Column[],
	fks: ForeignKey[],
	enumTypes: Set<string>,
	schemas: Record<string, string>,
	casing: Casing,
	internals: PgKitInternals,
): string => {
	let statement = '';

	// no self refs and no cyclic
	const oneColumnsFKs = Object.values(fks)
		.filter((it) => {
			return !isSelf(it);
		})
		.filter((it) => it.columnsFrom.length === 1);

	const fkByColumnName = oneColumnsFKs.reduce((res, it) => {
		const arr = res[it.columnsFrom[0]] || [];
		arr.push(it);
		res[it.columnsFrom[0]] = arr;
		return res;
	}, {} as Record<string, ForeignKey[]>);

	columns.forEach((it) => {
		const columnStatement = column(
			tableName,
			it.type,
			it.name,
			enumTypes,
			it.typeSchema ?? 'public',
			casing,
			it.default,
			internals,
		);
		statement += '\t';
		statement += columnStatement;
		// Provide just this in column function
		if (internals?.tables[tableName]?.columns[it.name]?.isArray) {
			statement += dimensionsInArray(internals?.tables[tableName]?.columns[it.name]?.dimensions);
		}
		statement += mapDefault(tableName, it.type, it.name, enumTypes, it.typeSchema ?? 'public', it.default, internals);
		statement += it.primaryKey ? '.primaryKey()' : '';
		statement += it.notNull && !it.identity ? '.notNull()' : '';

		statement += it.identity ? generateIdentityParams(it.identity) : '';

		statement += it.generated ? `.generatedAlwaysAs(sql\`${it.generated.as}\`)` : '';

		// const fks = fkByColumnName[it.name];
		// Andrii: I switched it off until we will get a custom naem setting in references
		// if (fks) {
		// 	const fksStatement = fks
		// 		.map((it) => {
		// 			const onDelete = it.onDelete && it.onDelete !== 'no action' ? it.onDelete : null;
		// 			const onUpdate = it.onUpdate && it.onUpdate !== 'no action' ? it.onUpdate : null;
		// 			const params = { onDelete, onUpdate };

		// 			const typeSuffix = isCyclic(it) ? ': AnyPgColumn' : '';

		// 			const paramsStr = objToStatement2(params);
		// 			const tableSchema = schemas[it.schemaTo || ''];
		// 			const paramName = paramNameFor(it.tableTo, tableSchema);
		// 			if (paramsStr) {
		// 				return `.references(()${typeSuffix} => ${
		// 					withCasing(
		// 						paramName,
		// 						casing,
		// 					)
		// 				}.${withCasing(it.columnsTo[0], casing)}, ${paramsStr} )`;
		// 			}
		// 			return `.references(()${typeSuffix} => ${
		// 				withCasing(
		// 					paramName,
		// 					casing,
		// 				)
		// 			}.${withCasing(it.columnsTo[0], casing)})`;
		// 		})
		// 		.join('');
		// 	statement += fksStatement;

Domain

Subdomains

Frequently Asked Questions

What does createTableColumns() do?
createTableColumns() is a function in the drizzle-orm codebase, defined in drizzle-kit/src/introspect-pg.ts.
Where is createTableColumns() defined?
createTableColumns() is defined in drizzle-kit/src/introspect-pg.ts at line 1112.
What does createTableColumns() call?
createTableColumns() calls 9 function(s): column, dimensionsInArray, generateIdentityParams, isCyclic, isSelf, mapDefault, objToStatement2, paramNameFor, and 1 more.
What calls createTableColumns()?
createTableColumns() 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