Home / Type/ GetValibotType Type — drizzle-orm Architecture

GetValibotType Type — drizzle-orm Architecture

Architecture documentation for the GetValibotType type/interface in column.types.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  ce799fd1_fc3a_7d03_280e_43267f739da5["GetValibotType"]
  8f030d4f_790e_1311_a4f1_f0509f0c2d44["column.types.ts"]
  ce799fd1_fc3a_7d03_280e_43267f739da5 -->|defined in| 8f030d4f_790e_1311_a4f1_f0509f0c2d44
  style ce799fd1_fc3a_7d03_280e_43267f739da5 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

drizzle-valibot/src/column.types.ts lines 42–88

export type GetValibotType<
	TData,
	TDataType extends string,
	TColumnType extends string,
	TEnumValues extends string[] | undefined,
	TBaseColumn extends Column | undefined,
	TAdditionalProperties extends Record<string, any>,
> = TColumnType extends 'PgHalfVector' | 'PgVector' ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<
			[v.ArraySchema<v.NumberSchema<undefined>, undefined>, GetLengthAction<TAdditionalProperties, number[]>]
		>
	: v.ArraySchema<v.NumberSchema<undefined>, undefined>
	: TColumnType extends 'PgUUID' ? v.SchemaWithPipe<[v.StringSchema<undefined>, v.UuidAction<string, undefined>]>
	: TColumnType extends 'PgBinaryVector' ? v.SchemaWithPipe<
			RemoveNeverElements<[
				v.StringSchema<undefined>,
				v.RegexAction<string, undefined>,
				TAdditionalProperties['max'] extends number ? GetLengthAction<TAdditionalProperties, string> : never,
			]>
		>
	: TBaseColumn extends Column ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<
				[
					GetArraySchema<Assume<TBaseColumn, Column>>,
					GetLengthAction<TAdditionalProperties, Assume<TBaseColumn, Column>['_']['data'][]>,
				]
			>
		: GetArraySchema<Assume<TBaseColumn, Column>>
	: IsEnumDefined<TEnumValues> extends true
		? v.EnumSchema<{ readonly [K in Assume<TEnumValues, [string, ...string[]]>[number]]: K }, undefined>
	: TColumnType extends 'PgGeometry' | 'PgPointTuple'
		? v.TupleSchema<[v.NumberSchema<undefined>, v.NumberSchema<undefined>], undefined>
	: TColumnType extends 'PgLine'
		? v.TupleSchema<[v.NumberSchema<undefined>, v.NumberSchema<undefined>, v.NumberSchema<undefined>], undefined>
	: TData extends Date ? v.DateSchema<undefined>
	: TData extends Buffer ? v.GenericSchema<Buffer>
	: TDataType extends 'array' ? v.ArraySchema<
			GetValibotPrimitiveType<Assume<TData, any[]>[number], '', { noPipe: true }>,
			undefined
		>
	: TData extends Record<string, any>
		? TColumnType extends 'PgJson' | 'PgJsonb' | 'MySqlJson' | 'SingleStoreJson' | 'SQLiteTextJson' | 'SQLiteBlobJson'
			? v.GenericSchema<TData>
		: v.ObjectSchema<
			{ readonly [K in keyof TData]: GetValibotPrimitiveType<TData[K], '', { noPipe: true }> },
			undefined
		>
	: TDataType extends 'json' ? v.GenericSchema<Json>
	: GetValibotPrimitiveType<TData, TColumnType, TAdditionalProperties>;

Frequently Asked Questions

What is the GetValibotType type?
GetValibotType is a type/interface in the drizzle-orm codebase, defined in drizzle-valibot/src/column.types.ts.
Where is GetValibotType defined?
GetValibotType is defined in drizzle-valibot/src/column.types.ts at line 42.

Analyze Your Own Codebase

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

Try Supermodel Free