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 c3d8e5a3_48ae_8877_650c_206534a04c0c["columnToSchema()"] 04df2f9f_a1ec_55a9_5392_86b92a0e6555["column.ts"] c3d8e5a3_48ae_8877_650c_206534a04c0c -->|defined in| 04df2f9f_a1ec_55a9_5392_86b92a0e6555 13946ad5_6a5e_4778_cacd_6820ecd398d1["handleColumns()"] 13946ad5_6a5e_4778_cacd_6820ecd398d1 -->|calls| c3d8e5a3_48ae_8877_650c_206534a04c0c 1a39b08e_8a1b_7db5_3757_5f7d6e60601e["isWithEnum()"] c3d8e5a3_48ae_8877_650c_206534a04c0c -->|calls| 1a39b08e_8a1b_7db5_3757_5f7d6e60601e b867e693_1ca4_ac0a_0989_d20dce8c0520["mapEnumValues()"] c3d8e5a3_48ae_8877_650c_206534a04c0c -->|calls| b867e693_1ca4_ac0a_0989_d20dce8c0520 265f5c6f_fc43_a51c_a5cf_4949fb963824["numberColumnToSchema()"] c3d8e5a3_48ae_8877_650c_206534a04c0c -->|calls| 265f5c6f_fc43_a51c_a5cf_4949fb963824 13d59763_25cd_3965_26ea_67e08989c85d["bigintColumnToSchema()"] c3d8e5a3_48ae_8877_650c_206534a04c0c -->|calls| 13d59763_25cd_3965_26ea_67e08989c85d 9ce7dd2e_3029_ff13_c7f5_a5bcb7c9349d["stringColumnToSchema()"] c3d8e5a3_48ae_8877_650c_206534a04c0c -->|calls| 9ce7dd2e_3029_ff13_c7f5_a5bcb7c9349d style c3d8e5a3_48ae_8877_650c_206534a04c0c fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
drizzle-valibot/src/column.ts lines 73–126
export function columnToSchema(column: Column): v.GenericSchema {
let schema!: v.GenericSchema;
if (isWithEnum(column)) {
schema = column.enumValues.length ? v.enum(mapEnumValues(column.enumValues)) : v.string();
}
if (!schema) {
// Handle specific types
if (isColumnType<PgGeometry<any> | PgPointTuple<any>>(column, ['PgGeometry', 'PgPointTuple'])) {
schema = v.tuple([v.number(), v.number()]);
} else if (
isColumnType<PgPointObject<any> | PgGeometryObject<any>>(column, ['PgGeometryObject', 'PgPointObject'])
) {
schema = v.object({ x: v.number(), y: v.number() });
} else if (isColumnType<PgHalfVector<any> | PgVector<any>>(column, ['PgHalfVector', 'PgVector'])) {
schema = v.array(v.number());
schema = column.dimensions ? v.pipe(schema as v.ArraySchema<any, any>, v.length(column.dimensions)) : schema;
} else if (isColumnType<PgLineTuple<any>>(column, ['PgLine'])) {
schema = v.tuple([v.number(), v.number(), v.number()]);
v.array(v.array(v.number()));
} else if (isColumnType<PgLineABC<any>>(column, ['PgLineABC'])) {
schema = v.object({ a: v.number(), b: v.number(), c: v.number() });
} // Handle other types
else if (isColumnType<PgArray<any, any>>(column, ['PgArray'])) {
schema = v.array(columnToSchema(column.baseColumn));
schema = column.size ? v.pipe(schema as v.ArraySchema<any, any>, v.length(column.size)) : schema;
} else if (column.dataType === 'array') {
schema = v.array(v.any());
} else if (column.dataType === 'number') {
schema = numberColumnToSchema(column);
} else if (column.dataType === 'bigint') {
schema = bigintColumnToSchema(column);
} else if (column.dataType === 'boolean') {
schema = v.boolean();
} else if (column.dataType === 'date') {
schema = v.date();
} else if (column.dataType === 'string') {
schema = stringColumnToSchema(column);
} else if (column.dataType === 'json') {
schema = jsonSchema;
} else if (column.dataType === 'custom') {
schema = v.any();
} else if (column.dataType === 'buffer') {
schema = bufferSchema;
}
}
if (!schema) {
schema = v.any();
}
return schema;
}
Domain
Subdomains
Defined In
Called By
Source
Frequently Asked Questions
What does columnToSchema() do?
columnToSchema() is a function in the drizzle-orm codebase, defined in drizzle-valibot/src/column.ts.
Where is columnToSchema() defined?
columnToSchema() is defined in drizzle-valibot/src/column.ts at line 73.
What does columnToSchema() call?
columnToSchema() calls 5 function(s): bigintColumnToSchema, isWithEnum, mapEnumValues, 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