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

columnToSchema() — drizzle-orm Function Reference

Architecture documentation for the columnToSchema() function in column.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  85adcc4b_0e8e_a2e6_a538_afbe19c96304["columnToSchema()"]
  d3d3a2d1_4197_a39b_12f9_f9c7be54febc["column.ts"]
  85adcc4b_0e8e_a2e6_a538_afbe19c96304 -->|defined in| d3d3a2d1_4197_a39b_12f9_f9c7be54febc
  af586672_33cc_3a35_8f1d_b940b9fbdc63["handleColumns()"]
  af586672_33cc_3a35_8f1d_b940b9fbdc63 -->|calls| 85adcc4b_0e8e_a2e6_a538_afbe19c96304
  57767d5a_1294_4fb1_695c_85ee400edf79["isWithEnum()"]
  85adcc4b_0e8e_a2e6_a538_afbe19c96304 -->|calls| 57767d5a_1294_4fb1_695c_85ee400edf79
  69a6b543_31b2_91b6_44db_f5820af9a346["numberColumnToSchema()"]
  85adcc4b_0e8e_a2e6_a538_afbe19c96304 -->|calls| 69a6b543_31b2_91b6_44db_f5820af9a346
  44cb6f82_4017_dd83_eb46_d80b623fef5d["bigintColumnToSchema()"]
  85adcc4b_0e8e_a2e6_a538_afbe19c96304 -->|calls| 44cb6f82_4017_dd83_eb46_d80b623fef5d
  99a086c8_b913_2bf5_4ffe_aec1d7ef74f8["stringColumnToSchema()"]
  85adcc4b_0e8e_a2e6_a538_afbe19c96304 -->|calls| 99a086c8_b913_2bf5_4ffe_aec1d7ef74f8
  style 85adcc4b_0e8e_a2e6_a538_afbe19c96304 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

drizzle-zod/src/column.ts lines 70–135

export function columnToSchema(
	column: Column,
	factory:
		| CreateSchemaFactoryOptions<
			Partial<Record<'bigint' | 'boolean' | 'date' | 'number' | 'string', true>> | true | undefined
		>
		| undefined,
): zod.ZodType {
	const z: typeof zod = factory?.zodInstance ?? zod;
	const coerce = factory?.coerce ?? {};
	let schema!: zod.ZodType;

	if (isWithEnum(column)) {
		schema = column.enumValues.length ? z.enum(column.enumValues) : z.string();
	}

	if (!schema) {
		// Handle specific types
		if (isColumnType<PgGeometry<any> | PgPointTuple<any>>(column, ['PgGeometry', 'PgPointTuple'])) {
			schema = z.tuple([z.number(), z.number()]);
		} else if (
			isColumnType<PgPointObject<any> | PgGeometryObject<any>>(column, ['PgGeometryObject', 'PgPointObject'])
		) {
			schema = z.object({ x: z.number(), y: z.number() });
		} else if (isColumnType<PgHalfVector<any> | PgVector<any>>(column, ['PgHalfVector', 'PgVector'])) {
			schema = z.array(z.number());
			schema = column.dimensions ? (schema as zod.ZodArray<any>).length(column.dimensions) : schema;
		} else if (isColumnType<PgLineTuple<any>>(column, ['PgLine'])) {
			schema = z.tuple([z.number(), z.number(), z.number()]);
		} else if (isColumnType<PgLineABC<any>>(column, ['PgLineABC'])) {
			schema = z.object({
				a: z.number(),
				b: z.number(),
				c: z.number(),
			});
		} // Handle other types
		else if (isColumnType<PgArray<any, any>>(column, ['PgArray'])) {
			schema = z.array(columnToSchema(column.baseColumn, factory));
			schema = column.size ? (schema as zod.ZodArray<any>).length(column.size) : schema;
		} else if (column.dataType === 'array') {
			schema = z.array(z.any());
		} else if (column.dataType === 'number') {
			schema = numberColumnToSchema(column, z, coerce);
		} else if (column.dataType === 'bigint') {
			schema = bigintColumnToSchema(column, z, coerce);
		} else if (column.dataType === 'boolean') {
			schema = coerce === true || coerce.boolean ? z.coerce.boolean() : z.boolean();
		} else if (column.dataType === 'date') {
			schema = coerce === true || coerce.date ? z.coerce.date() : z.date();
		} else if (column.dataType === 'string') {
			schema = stringColumnToSchema(column, z, coerce);
		} else if (column.dataType === 'json') {
			schema = jsonSchema;
		} else if (column.dataType === 'custom') {
			schema = z.any();
		} else if (column.dataType === 'buffer') {
			schema = bufferSchema;
		}
	}

	if (!schema) {
		schema = z.any();
	}

	return schema;
}

Subdomains

Called By

Frequently Asked Questions

What does columnToSchema() do?
columnToSchema() is a function in the drizzle-orm codebase, defined in drizzle-zod/src/column.ts.
Where is columnToSchema() defined?
columnToSchema() is defined in drizzle-zod/src/column.ts at line 70.
What does columnToSchema() call?
columnToSchema() calls 4 function(s): bigintColumnToSchema, isWithEnum, numberColumnToSchema, stringColumnToSchema.
What calls columnToSchema()?
columnToSchema() is called by 1 function(s): handleColumns.

Analyze Your Own Codebase

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

Try Supermodel Free