MCPcopy
hub / github.com/drizzle-team/drizzle-orm / columnToSchema

Function columnToSchema

drizzle-valibot/src/column.ts:73–126  ·  view source on GitHub ↗
(column: Column)

Source from the content-addressed store, hash-verified

71}
72
73export function columnToSchema(column: Column): v.GenericSchema {
74 let schema!: v.GenericSchema;
75
76 if (isWithEnum(column)) {
77 schema = column.enumValues.length ? v.enum(mapEnumValues(column.enumValues)) : v.string();
78 }
79
80 if (!schema) {
81 // Handle specific types
82 if (isColumnType<PgGeometry<any> | PgPointTuple<any>>(column, ['PgGeometry', 'PgPointTuple'])) {
83 schema = v.tuple([v.number(), v.number()]);
84 } else if (
85 isColumnType<PgPointObject<any> | PgGeometryObject<any>>(column, ['PgGeometryObject', 'PgPointObject'])
86 ) {
87 schema = v.object({ x: v.number(), y: v.number() });
88 } else if (isColumnType<PgHalfVector<any> | PgVector<any>>(column, ['PgHalfVector', 'PgVector'])) {
89 schema = v.array(v.number());
90 schema = column.dimensions ? v.pipe(schema as v.ArraySchema<any, any>, v.length(column.dimensions)) : schema;
91 } else if (isColumnType<PgLineTuple<any>>(column, ['PgLine'])) {
92 schema = v.tuple([v.number(), v.number(), v.number()]);
93 v.array(v.array(v.number()));
94 } else if (isColumnType<PgLineABC<any>>(column, ['PgLineABC'])) {
95 schema = v.object({ a: v.number(), b: v.number(), c: v.number() });
96 } // Handle other types
97 else if (isColumnType<PgArray<any, any>>(column, ['PgArray'])) {
98 schema = v.array(columnToSchema(column.baseColumn));
99 schema = column.size ? v.pipe(schema as v.ArraySchema<any, any>, v.length(column.size)) : schema;
100 } else if (column.dataType === 'array') {
101 schema = v.array(v.any());
102 } else if (column.dataType === 'number') {
103 schema = numberColumnToSchema(column);
104 } else if (column.dataType === 'bigint') {
105 schema = bigintColumnToSchema(column);
106 } else if (column.dataType === 'boolean') {
107 schema = v.boolean();
108 } else if (column.dataType === 'date') {
109 schema = v.date();
110 } else if (column.dataType === 'string') {
111 schema = stringColumnToSchema(column);
112 } else if (column.dataType === 'json') {
113 schema = jsonSchema;
114 } else if (column.dataType === 'custom') {
115 schema = v.any();
116 } else if (column.dataType === 'buffer') {
117 schema = bufferSchema;
118 }
119 }
120
121 if (!schema) {
122 schema = v.any();
123 }
124
125 return schema;
126}
127
128function numberColumnToSchema(column: Column): v.GenericSchema {
129 let unsigned = column.getSQLType().includes('unsigned');

Callers 1

handleColumnsFunction · 0.90

Calls 7

isWithEnumFunction · 0.90
isColumnTypeFunction · 0.90
enumMethod · 0.80
mapEnumValuesFunction · 0.70
numberColumnToSchemaFunction · 0.70
bigintColumnToSchemaFunction · 0.70
stringColumnToSchemaFunction · 0.70

Tested by

no test coverage detected