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

handleColumns() — drizzle-orm Function Reference

Architecture documentation for the handleColumns() function in schema.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  13946ad5_6a5e_4778_cacd_6820ecd398d1["handleColumns()"]
  a1e9a186_355d_5f4f_7cf0_889804754896["schema.ts"]
  13946ad5_6a5e_4778_cacd_6820ecd398d1 -->|defined in| a1e9a186_355d_5f4f_7cf0_889804754896
  45e60f26_0ea4_9369_3f26_4b3753318c50["createSelectSchema()"]
  45e60f26_0ea4_9369_3f26_4b3753318c50 -->|calls| 13946ad5_6a5e_4778_cacd_6820ecd398d1
  51053726_b279_4246_4a15_cb3178d277ca["createInsertSchema()"]
  51053726_b279_4246_4a15_cb3178d277ca -->|calls| 13946ad5_6a5e_4778_cacd_6820ecd398d1
  ff828040_c22f_bd9a_5984_1e794793f7f8["createUpdateSchema()"]
  ff828040_c22f_bd9a_5984_1e794793f7f8 -->|calls| 13946ad5_6a5e_4778_cacd_6820ecd398d1
  13cc8910_95ed_8a5c_5430_cbe853d889a2["getColumns()"]
  13946ad5_6a5e_4778_cacd_6820ecd398d1 -->|calls| 13cc8910_95ed_8a5c_5430_cbe853d889a2
  c3d8e5a3_48ae_8877_650c_206534a04c0c["columnToSchema()"]
  13946ad5_6a5e_4778_cacd_6820ecd398d1 -->|calls| c3d8e5a3_48ae_8877_650c_206534a04c0c
  style 13946ad5_6a5e_4778_cacd_6820ecd398d1 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

drizzle-valibot/src/schema.ts lines 14–56

function handleColumns(
	columns: Record<string, any>,
	refinements: Record<string, any>,
	conditions: Conditions,
): v.GenericSchema {
	const columnSchemas: Record<string, v.GenericSchema> = {};

	for (const [key, selected] of Object.entries(columns)) {
		if (!is(selected, Column) && !is(selected, SQL) && !is(selected, SQL.Aliased) && typeof selected === 'object') {
			const columns = isTable(selected) || isView(selected) ? getColumns(selected) : selected;
			columnSchemas[key] = handleColumns(columns, refinements[key] ?? {}, conditions);
			continue;
		}

		const refinement = refinements[key];
		if (refinement !== undefined && typeof refinement !== 'function') {
			columnSchemas[key] = refinement;
			continue;
		}

		const column = is(selected, Column) ? selected : undefined;
		const schema = column ? columnToSchema(column) : v.any();
		const refined = typeof refinement === 'function' ? refinement(schema) : schema;

		if (conditions.never(column)) {
			continue;
		} else {
			columnSchemas[key] = refined;
		}

		if (column) {
			if (conditions.nullable(column)) {
				columnSchemas[key] = v.nullable(columnSchemas[key]!);
			}

			if (conditions.optional(column)) {
				columnSchemas[key] = v.optional(columnSchemas[key]!);
			}
		}
	}

	return v.object(columnSchemas) as any;
}

Subdomains

Frequently Asked Questions

What does handleColumns() do?
handleColumns() is a function in the drizzle-orm codebase, defined in drizzle-valibot/src/schema.ts.
Where is handleColumns() defined?
handleColumns() is defined in drizzle-valibot/src/schema.ts at line 14.
What does handleColumns() call?
handleColumns() calls 2 function(s): columnToSchema, getColumns.
What calls handleColumns()?
handleColumns() is called by 3 function(s): createInsertSchema, createSelectSchema, createUpdateSchema.

Analyze Your Own Codebase

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

Try Supermodel Free