Home / File/ column.types.ts — drizzle-orm Source File

column.types.ts — drizzle-orm Source File

Architecture documentation for column.types.ts, a typescript file in the drizzle-orm codebase. 3 imports, 2 dependents.

File typescript ValidationAdapters 3 imports 2 dependents

Entity Profile

Dependency Diagram

graph LR
  8f030d4f_790e_1311_a4f1_f0509f0c2d44["column.types.ts"]
  a0d71e56_fdeb_c568_64e9_fb247617a17c["utils.ts"]
  8f030d4f_790e_1311_a4f1_f0509f0c2d44 --> a0d71e56_fdeb_c568_64e9_fb247617a17c
  690f7dfc_0aea_9ee8_d6e7_26bbb3689031["drizzle-orm"]
  8f030d4f_790e_1311_a4f1_f0509f0c2d44 --> 690f7dfc_0aea_9ee8_d6e7_26bbb3689031
  a9e31838_d52b_02c1_2b9d_c4354b2ad2fa["valibot"]
  8f030d4f_790e_1311_a4f1_f0509f0c2d44 --> a9e31838_d52b_02c1_2b9d_c4354b2ad2fa
  8beb3c26_f68c_2b02_ad7a_a436848c5635["schema.types.internal.ts"]
  8beb3c26_f68c_2b02_ad7a_a436848c5635 --> 8f030d4f_790e_1311_a4f1_f0509f0c2d44
  e918a77e_1e35_56b9_adb6_5727c2a5b3ad["schema.types.ts"]
  e918a77e_1e35_56b9_adb6_5727c2a5b3ad --> 8f030d4f_790e_1311_a4f1_f0509f0c2d44
  style 8f030d4f_790e_1311_a4f1_f0509f0c2d44 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import type { Assume, Column } from 'drizzle-orm';
import type * as v from 'valibot';
import type { ColumnIsGeneratedAlwaysAs, IsEnumDefined, IsNever, Json, RemoveNeverElements } from './utils.ts';

export type HasBaseColumn<TColumn> = TColumn extends { _: { baseColumn: Column | undefined } }
	? IsNever<TColumn['_']['baseColumn']> extends false ? true
	: false
	: false;

export type EnumValuesToEnum<TEnumValues extends [string, ...string[]]> = { readonly [K in TEnumValues[number]]: K };

export type ExtractAdditionalProperties<TColumn extends Column> = {
	max: TColumn['_']['columnType'] extends 'PgVarchar' | 'SQLiteText' | 'PgChar' | 'MySqlChar' | 'SingleStoreChar'
		? Assume<TColumn['_'], { length: number | undefined }>['length']
		: TColumn['_']['columnType'] extends 'MySqlText' | 'MySqlVarChar' | 'SingleStoreText' | 'SingleStoreVarChar'
			? number
		: TColumn['_']['columnType'] extends 'PgBinaryVector' | 'PgHalfVector' | 'PgVector'
			? Assume<TColumn['_'], { dimensions: number }>['dimensions']
		: TColumn['_']['columnType'] extends 'PgArray' ? Assume<TColumn['_'], { size: number | undefined }>['size']
		: undefined;
	fixedLength: TColumn['_']['columnType'] extends
		'PgChar' | 'PgHalfVector' | 'PgVector' | 'PgArray' | 'MySqlChar' | 'SingleStoreChar' ? true
		: false;
};

type GetLengthAction<T extends Record<string, any>, TType extends string | ArrayLike<unknown>> =
	T['fixedLength'] extends true ? v.LengthAction<TType, number, undefined>
		: v.MaxLengthAction<TType, number, undefined>;

type GetArraySchema<T extends Column> = v.ArraySchema<
	GetValibotType<
		T['_']['data'],
		T['_']['dataType'],
		T['_']['columnType'],
		T['_']['enumValues'],
		HasBaseColumn<T> extends true ? Assume<T['_']['baseColumn'], Column> : undefined,
		ExtractAdditionalProperties<T>
	>,
	undefined
>;

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,
			]>
		>
// ... (109 more lines)

Dependencies

Frequently Asked Questions

What does column.types.ts do?
column.types.ts is a source file in the drizzle-orm codebase, written in typescript. It belongs to the ValidationAdapters domain.
What does column.types.ts depend on?
column.types.ts imports 3 module(s): drizzle-orm, utils.ts, valibot.
What files import column.types.ts?
column.types.ts is imported by 2 file(s): schema.types.internal.ts, schema.types.ts.
Where is column.types.ts in the architecture?
column.types.ts is located at drizzle-valibot/src/column.types.ts (domain: ValidationAdapters, directory: drizzle-valibot/src).

Analyze Your Own Codebase

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

Try Supermodel Free