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

createTableColumns() — drizzle-orm Function Reference

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

Entity Profile

Dependency Diagram

graph TD
  66cb9854_27ce_f964_9c23_6dd6fd021ba0["createTableColumns()"]
  1198bdc6_ac5c_88c0_dda6_b8caf0f5d9fa["introspect-mysql.ts"]
  66cb9854_27ce_f964_9c23_6dd6fd021ba0 -->|defined in| 1198bdc6_ac5c_88c0_dda6_b8caf0f5d9fa
  194539cf_d577_ab5e_4ea9_ec2fd5ee230b["schemaToTypeScript()"]
  194539cf_d577_ab5e_4ea9_ec2fd5ee230b -->|calls| 66cb9854_27ce_f964_9c23_6dd6fd021ba0
  6f3dbbc9_96f5_0c1c_51a1_967c5c835786["isSelf()"]
  66cb9854_27ce_f964_9c23_6dd6fd021ba0 -->|calls| 6f3dbbc9_96f5_0c1c_51a1_967c5c835786
  ab820e0b_412e_ee12_13bc_dbb2e64f13bb["column()"]
  66cb9854_27ce_f964_9c23_6dd6fd021ba0 -->|calls| ab820e0b_412e_ee12_13bc_dbb2e64f13bb
  ebb79cf5_a507_ad19_ebbe_4a56a47233dc["isCyclic()"]
  66cb9854_27ce_f964_9c23_6dd6fd021ba0 -->|calls| ebb79cf5_a507_ad19_ebbe_4a56a47233dc
  b62c36d5_1539_5473_9c71_9de637a9a74c["objToStatement2()"]
  66cb9854_27ce_f964_9c23_6dd6fd021ba0 -->|calls| b62c36d5_1539_5473_9c71_9de637a9a74c
  style 66cb9854_27ce_f964_9c23_6dd6fd021ba0 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

drizzle-kit/src/introspect-mysql.ts lines 818–899

const createTableColumns = (
	columns: Column[],
	fks: ForeignKey[],
	casing: (val: string) => string,
	rawCasing: Casing,
	tableName: string,
	schema: MySqlSchemaInternal,
): 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) => {
		statement += '\t';
		statement += column(
			it.type,
			it.name,
			casing,
			rawCasing,
			it.default,
			it.autoincrement,
			it.onUpdate,
			schema.internal?.tables![tableName]?.columns[it.name]
				?.isDefaultAnExpression ?? false,
		);
		statement += it.primaryKey ? '.primaryKey()' : '';
		statement += it.notNull ? '.notNull()' : '';

		statement += it.generated
			? `.generatedAlwaysAs(sql\`${
				it.generated.as.replace(
					/`/g,
					'\\`',
				)
			}\`, { mode: "${it.generated.type}" })`
			: '';

		const fks = fkByColumnName[it.name];
		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) ? ': AnyMySqlColumn' : '';

					const paramsStr = objToStatement2(params);
					if (paramsStr) {
						return `.references(()${typeSuffix} => ${
							casing(
								it.tableTo,
							)
						}.${casing(it.columnsTo[0])}, ${paramsStr} )`;
					}
					return `.references(()${typeSuffix} => ${casing(it.tableTo)}.${
						casing(
							it.columnsTo[0],
						)
					})`;
				})
				.join('');
			statement += fksStatement;
		}

		statement += ',\n';
	});

	return statement;

Domain

Subdomains

Frequently Asked Questions

What does createTableColumns() do?
createTableColumns() is a function in the drizzle-orm codebase, defined in drizzle-kit/src/introspect-mysql.ts.
Where is createTableColumns() defined?
createTableColumns() is defined in drizzle-kit/src/introspect-mysql.ts at line 818.
What does createTableColumns() call?
createTableColumns() calls 4 function(s): column, isCyclic, isSelf, objToStatement2.
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