drizzle-valibot 0.4.2 → 1.0.0-beta.2-e93475f

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/column.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import type { Column } from 'drizzle-orm';
1
+ import { type Column } from 'drizzle-orm';
2
2
  import * as v from 'valibot';
3
3
  import type { Json } from "./utils.cjs";
4
4
  export declare const literalSchema: v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>, v.BooleanSchema<undefined>, v.NullSchema<undefined>], undefined>;
package/column.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import type { Column } from 'drizzle-orm';
1
+ import { type Column } from 'drizzle-orm';
2
2
  import * as v from 'valibot';
3
3
  import type { Json } from "./utils.mjs";
4
4
  export declare const literalSchema: v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>, v.BooleanSchema<undefined>, v.NullSchema<undefined>], undefined>;
package/column.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { Column } from 'drizzle-orm';
1
+ import { type Column } from 'drizzle-orm';
2
2
  import * as v from 'valibot';
3
3
  import type { Json } from './utils.js';
4
4
  export declare const literalSchema: v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>, v.BooleanSchema<undefined>, v.NullSchema<undefined>], undefined>;
@@ -1,6 +1,7 @@
1
- import type { Assume, Column } from 'drizzle-orm';
1
+ import type { Assume, Column, ColumnDataConstraint, ColumnDataType, ColumnTypeData, ExtractColumnTypeData } from 'drizzle-orm';
2
2
  import type * as v from 'valibot';
3
- import type { IsEnumDefined, IsNever, Json, RemoveNeverElements } from "./utils.cjs";
3
+ import type { bigintStringModeSchema, unsignedBigintStringModeSchema } from "./column.cjs";
4
+ import type { IsNever, Json, RemoveNeverElements } from "./utils.cjs";
4
5
  export type HasBaseColumn<TColumn> = TColumn extends {
5
6
  _: {
6
7
  baseColumn: Column | undefined;
@@ -10,48 +11,47 @@ export type EnumValuesToEnum<TEnumValues extends [string, ...string[]]> = {
10
11
  readonly [K in TEnumValues[number]]: K;
11
12
  };
12
13
  export type ExtractAdditionalProperties<TColumn extends Column> = {
13
- max: TColumn['_']['columnType'] extends 'PgVarchar' | 'SQLiteText' | 'PgChar' | 'MySqlChar' | 'SingleStoreChar' ? Assume<TColumn['_'], {
14
- length: number | undefined;
15
- }>['length'] : TColumn['_']['columnType'] extends 'MySqlText' | 'MySqlVarChar' | 'SingleStoreText' | 'SingleStoreVarChar' ? number : TColumn['_']['columnType'] extends 'PgBinaryVector' | 'PgHalfVector' | 'PgVector' ? Assume<TColumn['_'], {
16
- dimensions: number;
17
- }>['dimensions'] : TColumn['_']['columnType'] extends 'PgArray' ? Assume<TColumn['_'], {
18
- size: number | undefined;
19
- }>['size'] : undefined;
20
- fixedLength: TColumn['_']['columnType'] extends 'PgChar' | 'PgHalfVector' | 'PgVector' | 'PgArray' | 'MySqlChar' | 'SingleStoreChar' ? true : false;
14
+ max: TColumn['length'];
15
+ fixedLength: TColumn['isLengthExact'] extends true ? true : false;
21
16
  };
22
17
  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>;
23
- 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>;
24
- 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<[
18
+ type GetArraySchema<TColumn extends Column, TType extends ColumnTypeData = ExtractColumnTypeData<TColumn['_']['dataType']>> = GetValibotType<TColumn['_']['data'], TType['type'], TType['constraint'], TColumn['_']['enumValues'], HasBaseColumn<TColumn> extends true ? Assume<TColumn['_'], {
19
+ baseColumn: Column;
20
+ }>['baseColumn'] : undefined, ExtractAdditionalProperties<TColumn>>;
21
+ export type GetValibotType<TData, TColumnType extends ColumnDataType, TConstraint extends ColumnDataConstraint | undefined, TEnum extends string[] | undefined, TBaseColumn extends Column | undefined, TAdditionalProperties extends Record<string, any>> = TColumnType extends 'array' ? TConstraint extends 'vector' | 'halfvector' ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[
25
22
  v.ArraySchema<v.NumberSchema<undefined>, undefined>,
26
23
  GetLengthAction<TAdditionalProperties, number[]>
27
- ]> : v.ArraySchema<v.NumberSchema<undefined>, undefined> : TColumnType extends 'PgUUID' ? v.SchemaWithPipe<[v.StringSchema<undefined>, v.UuidAction<string, undefined>]> : TColumnType extends 'PgBinaryVector' ? v.SchemaWithPipe<RemoveNeverElements<[
28
- v.StringSchema<undefined>,
29
- v.RegexAction<string, undefined>,
30
- TAdditionalProperties['max'] extends number ? GetLengthAction<TAdditionalProperties, string> : never
31
- ]>> : TBaseColumn extends Column ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[
32
- GetArraySchema<Assume<TBaseColumn, Column>>,
33
- GetLengthAction<TAdditionalProperties, Assume<TBaseColumn, Column>['_']['data'][]>
34
- ]> : GetArraySchema<Assume<TBaseColumn, Column>> : IsEnumDefined<TEnumValues> extends true ? v.EnumSchema<{
35
- readonly [K in Assume<TEnumValues, [string, ...string[]]>[number]]: K;
36
- }, 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], '', {
37
- noPipe: true;
38
- }>, undefined> : TData extends Record<string, any> ? TColumnType extends 'PgJson' | 'PgJsonb' | 'MySqlJson' | 'SingleStoreJson' | 'SQLiteTextJson' | 'SQLiteBlobJson' ? v.GenericSchema<TData> : v.ObjectSchema<{
39
- readonly [K in keyof TData]: GetValibotPrimitiveType<TData[K], '', {
40
- noPipe: true;
41
- }>;
42
- }, undefined> : TDataType extends 'json' ? v.GenericSchema<Json> : GetValibotPrimitiveType<TData, TColumnType, TAdditionalProperties>;
43
- type GetValibotPrimitiveType<TData, TColumnType, TAdditionalProperties extends Record<string, any>> = TData extends number ? TAdditionalProperties['noPipe'] extends true ? v.NumberSchema<undefined> : v.SchemaWithPipe<RemoveNeverElements<[
24
+ ]> : v.ArraySchema<v.NumberSchema<undefined>, undefined> : TConstraint extends 'int64vector' ? v.ArraySchema<v.BigintSchema<undefined>, undefined> : TConstraint extends 'geometry' | 'point' ? v.TupleSchema<[v.NumberSchema<undefined>, v.NumberSchema<undefined>], undefined> : TConstraint extends 'line' ? v.TupleSchema<[v.NumberSchema<undefined>, v.NumberSchema<undefined>, v.NumberSchema<undefined>], undefined> : TConstraint extends 'basecolumn' ? TBaseColumn extends Column ? (GetArraySchema<TBaseColumn> extends infer ArrInternals extends v.BaseSchema<any, any, v.BaseIssue<any>> ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[
25
+ v.ArraySchema<ArrInternals, undefined>,
26
+ GetLengthAction<TAdditionalProperties, Assume<TData, string | ArrayLike<unknown>>>
27
+ ]> : v.ArraySchema<ArrInternals, undefined> : v.AnySchema) : v.ArraySchema<v.AnySchema, undefined> : v.ArraySchema<v.AnySchema, undefined> : TColumnType extends 'object' ? TConstraint extends 'geometry' | 'point' ? v.ObjectSchema<{
28
+ readonly x: v.NumberSchema<undefined>;
29
+ readonly y: v.NumberSchema<undefined>;
30
+ }, undefined> : TConstraint extends 'line' ? v.ObjectSchema<{
31
+ readonly a: v.NumberSchema<undefined>;
32
+ readonly b: v.NumberSchema<undefined>;
33
+ readonly c: v.NumberSchema<undefined>;
34
+ }, undefined> : TConstraint extends 'date' ? v.DateSchema<undefined> : TConstraint extends 'buffer' ? v.GenericSchema<Buffer> : TConstraint extends 'json' ? v.GenericSchema<TData extends Record<string, any> ? TData : Json> : v.LooseObjectSchema<{}, undefined> : TColumnType extends 'custom' ? v.AnySchema : TColumnType extends 'number' ? v.SchemaWithPipe<RemoveNeverElements<[
44
35
  v.NumberSchema<undefined>,
45
36
  v.MinValueAction<number, number, undefined>,
46
37
  v.MaxValueAction<number, number, undefined>,
47
- TColumnType extends 'MySqlTinyInt' | 'SingleStoreTinyInt' | 'PgSmallInt' | 'PgSmallSerial' | 'MySqlSmallInt' | 'MySqlMediumInt' | 'SingleStoreSmallInt' | 'SingleStoreMediumInt' | 'PgInteger' | 'PgSerial' | 'MySqlInt' | 'SingleStoreInt' | 'PgBigInt53' | 'PgBigSerial53' | 'MySqlBigInt53' | 'MySqlSerial' | 'SingleStoreBigInt53' | 'SingleStoreSerial' | 'SQLiteInteger' | 'MySqlYear' | 'SingleStoreYear' ? v.IntegerAction<number, undefined> : never
48
- ]>> : TData extends bigint ? TAdditionalProperties['noPipe'] extends true ? v.BigintSchema<undefined> : v.SchemaWithPipe<[
38
+ TConstraint extends 'int8' | 'int16' | 'int24' | 'int32' | 'int53' | 'uint8' | 'uint16' | 'uint24' | 'uint32' | 'uint53' | 'year' ? v.IntegerAction<number, undefined> : never
39
+ ]>> : TColumnType extends 'bigint' ? TConstraint extends 'int64' | 'uint64' ? v.SchemaWithPipe<[
49
40
  v.BigintSchema<undefined>,
50
41
  v.MinValueAction<bigint, bigint, undefined>,
51
42
  v.MaxValueAction<bigint, bigint, undefined>
52
- ]> : TData extends boolean ? v.BooleanSchema<undefined> : TData extends string ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[v.StringSchema<undefined>, GetLengthAction<TAdditionalProperties, string>]> : v.StringSchema<undefined> : v.AnySchema;
43
+ ]> : v.BigintSchema<undefined> : TColumnType extends 'boolean' ? v.BooleanSchema<undefined> : TColumnType extends 'string' ? TConstraint extends 'uuid' ? v.SchemaWithPipe<[v.StringSchema<undefined>, v.UuidAction<string, undefined>]> : TConstraint extends 'enum' ? v.EnumSchema<{
44
+ readonly [K in Assume<TEnum, string[]>[number]]: K;
45
+ }, undefined> : TConstraint extends 'int64' ? typeof bigintStringModeSchema : TConstraint extends 'uint64' ? typeof unsignedBigintStringModeSchema : TConstraint extends 'binary' ? v.SchemaWithPipe<RemoveNeverElements<[
46
+ v.StringSchema<undefined>,
47
+ v.RegexAction<string, undefined>,
48
+ TAdditionalProperties['max'] extends number ? GetLengthAction<TAdditionalProperties, string> : never
49
+ ]>> : TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[v.StringSchema<undefined>, GetLengthAction<TAdditionalProperties, string>]> : v.StringSchema<undefined> : v.AnySchema;
50
+ export type GetValibotTypeFromColumn<TColumn extends Column, TDataType extends ColumnTypeData = ExtractColumnTypeData<TColumn['_']['dataType']>> = GetValibotType<TColumn['_']['data'], TDataType['type'], TDataType['constraint'], TColumn['_']['enumValues'], HasBaseColumn<TColumn> extends true ? Assume<TColumn['_'], {
51
+ baseColumn: Column;
52
+ }>['baseColumn'] : undefined, ExtractAdditionalProperties<TColumn>>;
53
53
  type HandleSelectColumn<TSchema extends v.GenericSchema, TColumn extends Column> = TColumn['_']['notNull'] extends true ? TSchema : v.NullableSchema<TSchema, undefined>;
54
54
  type HandleInsertColumn<TSchema extends v.GenericSchema, TColumn extends Column> = TColumn['_']['notNull'] extends true ? TColumn['_']['hasDefault'] extends true ? v.OptionalSchema<TSchema, undefined> : TSchema : v.OptionalSchema<v.NullableSchema<TSchema, undefined>, undefined>;
55
55
  type HandleUpdateColumn<TSchema extends v.GenericSchema, TColumn extends Column> = TColumn['_']['notNull'] extends true ? v.OptionalSchema<TSchema, undefined> : v.OptionalSchema<v.NullableSchema<TSchema, undefined>, undefined>;
56
- export type HandleColumn<TType extends 'select' | 'insert' | 'update', TColumn extends Column> = GetValibotType<TColumn['_']['data'], TColumn['_']['dataType'], TColumn['_']['columnType'], TColumn['_']['enumValues'], HasBaseColumn<TColumn> extends true ? Assume<TColumn['_']['baseColumn'], Column> : undefined, ExtractAdditionalProperties<TColumn>> extends infer TSchema extends v.GenericSchema ? TSchema extends v.AnySchema ? v.AnySchema : TType extends 'select' ? HandleSelectColumn<TSchema, TColumn> : TType extends 'insert' ? HandleInsertColumn<TSchema, TColumn> : TType extends 'update' ? HandleUpdateColumn<TSchema, TColumn> : TSchema : v.AnySchema;
56
+ export type HandleColumn<TType extends 'select' | 'insert' | 'update', TColumn extends Column> = GetValibotTypeFromColumn<TColumn> extends infer TSchema extends v.GenericSchema ? TSchema extends v.AnySchema ? v.AnySchema : TType extends 'select' ? HandleSelectColumn<TSchema, TColumn> : TType extends 'insert' ? HandleInsertColumn<TSchema, TColumn> : TType extends 'update' ? HandleUpdateColumn<TSchema, TColumn> : TSchema : v.AnySchema;
57
57
  export {};
@@ -1,6 +1,7 @@
1
- import type { Assume, Column } from 'drizzle-orm';
1
+ import type { Assume, Column, ColumnDataConstraint, ColumnDataType, ColumnTypeData, ExtractColumnTypeData } from 'drizzle-orm';
2
2
  import type * as v from 'valibot';
3
- import type { IsEnumDefined, IsNever, Json, RemoveNeverElements } from "./utils.mjs";
3
+ import type { bigintStringModeSchema, unsignedBigintStringModeSchema } from "./column.mjs";
4
+ import type { IsNever, Json, RemoveNeverElements } from "./utils.mjs";
4
5
  export type HasBaseColumn<TColumn> = TColumn extends {
5
6
  _: {
6
7
  baseColumn: Column | undefined;
@@ -10,48 +11,47 @@ export type EnumValuesToEnum<TEnumValues extends [string, ...string[]]> = {
10
11
  readonly [K in TEnumValues[number]]: K;
11
12
  };
12
13
  export type ExtractAdditionalProperties<TColumn extends Column> = {
13
- max: TColumn['_']['columnType'] extends 'PgVarchar' | 'SQLiteText' | 'PgChar' | 'MySqlChar' | 'SingleStoreChar' ? Assume<TColumn['_'], {
14
- length: number | undefined;
15
- }>['length'] : TColumn['_']['columnType'] extends 'MySqlText' | 'MySqlVarChar' | 'SingleStoreText' | 'SingleStoreVarChar' ? number : TColumn['_']['columnType'] extends 'PgBinaryVector' | 'PgHalfVector' | 'PgVector' ? Assume<TColumn['_'], {
16
- dimensions: number;
17
- }>['dimensions'] : TColumn['_']['columnType'] extends 'PgArray' ? Assume<TColumn['_'], {
18
- size: number | undefined;
19
- }>['size'] : undefined;
20
- fixedLength: TColumn['_']['columnType'] extends 'PgChar' | 'PgHalfVector' | 'PgVector' | 'PgArray' | 'MySqlChar' | 'SingleStoreChar' ? true : false;
14
+ max: TColumn['length'];
15
+ fixedLength: TColumn['isLengthExact'] extends true ? true : false;
21
16
  };
22
17
  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>;
23
- 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>;
24
- 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<[
18
+ type GetArraySchema<TColumn extends Column, TType extends ColumnTypeData = ExtractColumnTypeData<TColumn['_']['dataType']>> = GetValibotType<TColumn['_']['data'], TType['type'], TType['constraint'], TColumn['_']['enumValues'], HasBaseColumn<TColumn> extends true ? Assume<TColumn['_'], {
19
+ baseColumn: Column;
20
+ }>['baseColumn'] : undefined, ExtractAdditionalProperties<TColumn>>;
21
+ export type GetValibotType<TData, TColumnType extends ColumnDataType, TConstraint extends ColumnDataConstraint | undefined, TEnum extends string[] | undefined, TBaseColumn extends Column | undefined, TAdditionalProperties extends Record<string, any>> = TColumnType extends 'array' ? TConstraint extends 'vector' | 'halfvector' ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[
25
22
  v.ArraySchema<v.NumberSchema<undefined>, undefined>,
26
23
  GetLengthAction<TAdditionalProperties, number[]>
27
- ]> : v.ArraySchema<v.NumberSchema<undefined>, undefined> : TColumnType extends 'PgUUID' ? v.SchemaWithPipe<[v.StringSchema<undefined>, v.UuidAction<string, undefined>]> : TColumnType extends 'PgBinaryVector' ? v.SchemaWithPipe<RemoveNeverElements<[
28
- v.StringSchema<undefined>,
29
- v.RegexAction<string, undefined>,
30
- TAdditionalProperties['max'] extends number ? GetLengthAction<TAdditionalProperties, string> : never
31
- ]>> : TBaseColumn extends Column ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[
32
- GetArraySchema<Assume<TBaseColumn, Column>>,
33
- GetLengthAction<TAdditionalProperties, Assume<TBaseColumn, Column>['_']['data'][]>
34
- ]> : GetArraySchema<Assume<TBaseColumn, Column>> : IsEnumDefined<TEnumValues> extends true ? v.EnumSchema<{
35
- readonly [K in Assume<TEnumValues, [string, ...string[]]>[number]]: K;
36
- }, 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], '', {
37
- noPipe: true;
38
- }>, undefined> : TData extends Record<string, any> ? TColumnType extends 'PgJson' | 'PgJsonb' | 'MySqlJson' | 'SingleStoreJson' | 'SQLiteTextJson' | 'SQLiteBlobJson' ? v.GenericSchema<TData> : v.ObjectSchema<{
39
- readonly [K in keyof TData]: GetValibotPrimitiveType<TData[K], '', {
40
- noPipe: true;
41
- }>;
42
- }, undefined> : TDataType extends 'json' ? v.GenericSchema<Json> : GetValibotPrimitiveType<TData, TColumnType, TAdditionalProperties>;
43
- type GetValibotPrimitiveType<TData, TColumnType, TAdditionalProperties extends Record<string, any>> = TData extends number ? TAdditionalProperties['noPipe'] extends true ? v.NumberSchema<undefined> : v.SchemaWithPipe<RemoveNeverElements<[
24
+ ]> : v.ArraySchema<v.NumberSchema<undefined>, undefined> : TConstraint extends 'int64vector' ? v.ArraySchema<v.BigintSchema<undefined>, undefined> : TConstraint extends 'geometry' | 'point' ? v.TupleSchema<[v.NumberSchema<undefined>, v.NumberSchema<undefined>], undefined> : TConstraint extends 'line' ? v.TupleSchema<[v.NumberSchema<undefined>, v.NumberSchema<undefined>, v.NumberSchema<undefined>], undefined> : TConstraint extends 'basecolumn' ? TBaseColumn extends Column ? (GetArraySchema<TBaseColumn> extends infer ArrInternals extends v.BaseSchema<any, any, v.BaseIssue<any>> ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[
25
+ v.ArraySchema<ArrInternals, undefined>,
26
+ GetLengthAction<TAdditionalProperties, Assume<TData, string | ArrayLike<unknown>>>
27
+ ]> : v.ArraySchema<ArrInternals, undefined> : v.AnySchema) : v.ArraySchema<v.AnySchema, undefined> : v.ArraySchema<v.AnySchema, undefined> : TColumnType extends 'object' ? TConstraint extends 'geometry' | 'point' ? v.ObjectSchema<{
28
+ readonly x: v.NumberSchema<undefined>;
29
+ readonly y: v.NumberSchema<undefined>;
30
+ }, undefined> : TConstraint extends 'line' ? v.ObjectSchema<{
31
+ readonly a: v.NumberSchema<undefined>;
32
+ readonly b: v.NumberSchema<undefined>;
33
+ readonly c: v.NumberSchema<undefined>;
34
+ }, undefined> : TConstraint extends 'date' ? v.DateSchema<undefined> : TConstraint extends 'buffer' ? v.GenericSchema<Buffer> : TConstraint extends 'json' ? v.GenericSchema<TData extends Record<string, any> ? TData : Json> : v.LooseObjectSchema<{}, undefined> : TColumnType extends 'custom' ? v.AnySchema : TColumnType extends 'number' ? v.SchemaWithPipe<RemoveNeverElements<[
44
35
  v.NumberSchema<undefined>,
45
36
  v.MinValueAction<number, number, undefined>,
46
37
  v.MaxValueAction<number, number, undefined>,
47
- TColumnType extends 'MySqlTinyInt' | 'SingleStoreTinyInt' | 'PgSmallInt' | 'PgSmallSerial' | 'MySqlSmallInt' | 'MySqlMediumInt' | 'SingleStoreSmallInt' | 'SingleStoreMediumInt' | 'PgInteger' | 'PgSerial' | 'MySqlInt' | 'SingleStoreInt' | 'PgBigInt53' | 'PgBigSerial53' | 'MySqlBigInt53' | 'MySqlSerial' | 'SingleStoreBigInt53' | 'SingleStoreSerial' | 'SQLiteInteger' | 'MySqlYear' | 'SingleStoreYear' ? v.IntegerAction<number, undefined> : never
48
- ]>> : TData extends bigint ? TAdditionalProperties['noPipe'] extends true ? v.BigintSchema<undefined> : v.SchemaWithPipe<[
38
+ TConstraint extends 'int8' | 'int16' | 'int24' | 'int32' | 'int53' | 'uint8' | 'uint16' | 'uint24' | 'uint32' | 'uint53' | 'year' ? v.IntegerAction<number, undefined> : never
39
+ ]>> : TColumnType extends 'bigint' ? TConstraint extends 'int64' | 'uint64' ? v.SchemaWithPipe<[
49
40
  v.BigintSchema<undefined>,
50
41
  v.MinValueAction<bigint, bigint, undefined>,
51
42
  v.MaxValueAction<bigint, bigint, undefined>
52
- ]> : TData extends boolean ? v.BooleanSchema<undefined> : TData extends string ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[v.StringSchema<undefined>, GetLengthAction<TAdditionalProperties, string>]> : v.StringSchema<undefined> : v.AnySchema;
43
+ ]> : v.BigintSchema<undefined> : TColumnType extends 'boolean' ? v.BooleanSchema<undefined> : TColumnType extends 'string' ? TConstraint extends 'uuid' ? v.SchemaWithPipe<[v.StringSchema<undefined>, v.UuidAction<string, undefined>]> : TConstraint extends 'enum' ? v.EnumSchema<{
44
+ readonly [K in Assume<TEnum, string[]>[number]]: K;
45
+ }, undefined> : TConstraint extends 'int64' ? typeof bigintStringModeSchema : TConstraint extends 'uint64' ? typeof unsignedBigintStringModeSchema : TConstraint extends 'binary' ? v.SchemaWithPipe<RemoveNeverElements<[
46
+ v.StringSchema<undefined>,
47
+ v.RegexAction<string, undefined>,
48
+ TAdditionalProperties['max'] extends number ? GetLengthAction<TAdditionalProperties, string> : never
49
+ ]>> : TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[v.StringSchema<undefined>, GetLengthAction<TAdditionalProperties, string>]> : v.StringSchema<undefined> : v.AnySchema;
50
+ export type GetValibotTypeFromColumn<TColumn extends Column, TDataType extends ColumnTypeData = ExtractColumnTypeData<TColumn['_']['dataType']>> = GetValibotType<TColumn['_']['data'], TDataType['type'], TDataType['constraint'], TColumn['_']['enumValues'], HasBaseColumn<TColumn> extends true ? Assume<TColumn['_'], {
51
+ baseColumn: Column;
52
+ }>['baseColumn'] : undefined, ExtractAdditionalProperties<TColumn>>;
53
53
  type HandleSelectColumn<TSchema extends v.GenericSchema, TColumn extends Column> = TColumn['_']['notNull'] extends true ? TSchema : v.NullableSchema<TSchema, undefined>;
54
54
  type HandleInsertColumn<TSchema extends v.GenericSchema, TColumn extends Column> = TColumn['_']['notNull'] extends true ? TColumn['_']['hasDefault'] extends true ? v.OptionalSchema<TSchema, undefined> : TSchema : v.OptionalSchema<v.NullableSchema<TSchema, undefined>, undefined>;
55
55
  type HandleUpdateColumn<TSchema extends v.GenericSchema, TColumn extends Column> = TColumn['_']['notNull'] extends true ? v.OptionalSchema<TSchema, undefined> : v.OptionalSchema<v.NullableSchema<TSchema, undefined>, undefined>;
56
- export type HandleColumn<TType extends 'select' | 'insert' | 'update', TColumn extends Column> = GetValibotType<TColumn['_']['data'], TColumn['_']['dataType'], TColumn['_']['columnType'], TColumn['_']['enumValues'], HasBaseColumn<TColumn> extends true ? Assume<TColumn['_']['baseColumn'], Column> : undefined, ExtractAdditionalProperties<TColumn>> extends infer TSchema extends v.GenericSchema ? TSchema extends v.AnySchema ? v.AnySchema : TType extends 'select' ? HandleSelectColumn<TSchema, TColumn> : TType extends 'insert' ? HandleInsertColumn<TSchema, TColumn> : TType extends 'update' ? HandleUpdateColumn<TSchema, TColumn> : TSchema : v.AnySchema;
56
+ export type HandleColumn<TType extends 'select' | 'insert' | 'update', TColumn extends Column> = GetValibotTypeFromColumn<TColumn> extends infer TSchema extends v.GenericSchema ? TSchema extends v.AnySchema ? v.AnySchema : TType extends 'select' ? HandleSelectColumn<TSchema, TColumn> : TType extends 'insert' ? HandleInsertColumn<TSchema, TColumn> : TType extends 'update' ? HandleUpdateColumn<TSchema, TColumn> : TSchema : v.AnySchema;
57
57
  export {};
package/column.types.d.ts CHANGED
@@ -1,6 +1,7 @@
1
- import type { Assume, Column } from 'drizzle-orm';
1
+ import type { Assume, Column, ColumnDataConstraint, ColumnDataType, ColumnTypeData, ExtractColumnTypeData } from 'drizzle-orm';
2
2
  import type * as v from 'valibot';
3
- import type { IsEnumDefined, IsNever, Json, RemoveNeverElements } from './utils.js';
3
+ import type { bigintStringModeSchema, unsignedBigintStringModeSchema } from './column.js';
4
+ import type { IsNever, Json, RemoveNeverElements } from './utils.js';
4
5
  export type HasBaseColumn<TColumn> = TColumn extends {
5
6
  _: {
6
7
  baseColumn: Column | undefined;
@@ -10,48 +11,47 @@ export type EnumValuesToEnum<TEnumValues extends [string, ...string[]]> = {
10
11
  readonly [K in TEnumValues[number]]: K;
11
12
  };
12
13
  export type ExtractAdditionalProperties<TColumn extends Column> = {
13
- max: TColumn['_']['columnType'] extends 'PgVarchar' | 'SQLiteText' | 'PgChar' | 'MySqlChar' | 'SingleStoreChar' ? Assume<TColumn['_'], {
14
- length: number | undefined;
15
- }>['length'] : TColumn['_']['columnType'] extends 'MySqlText' | 'MySqlVarChar' | 'SingleStoreText' | 'SingleStoreVarChar' ? number : TColumn['_']['columnType'] extends 'PgBinaryVector' | 'PgHalfVector' | 'PgVector' ? Assume<TColumn['_'], {
16
- dimensions: number;
17
- }>['dimensions'] : TColumn['_']['columnType'] extends 'PgArray' ? Assume<TColumn['_'], {
18
- size: number | undefined;
19
- }>['size'] : undefined;
20
- fixedLength: TColumn['_']['columnType'] extends 'PgChar' | 'PgHalfVector' | 'PgVector' | 'PgArray' | 'MySqlChar' | 'SingleStoreChar' ? true : false;
14
+ max: TColumn['length'];
15
+ fixedLength: TColumn['isLengthExact'] extends true ? true : false;
21
16
  };
22
17
  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>;
23
- 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>;
24
- 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<[
18
+ type GetArraySchema<TColumn extends Column, TType extends ColumnTypeData = ExtractColumnTypeData<TColumn['_']['dataType']>> = GetValibotType<TColumn['_']['data'], TType['type'], TType['constraint'], TColumn['_']['enumValues'], HasBaseColumn<TColumn> extends true ? Assume<TColumn['_'], {
19
+ baseColumn: Column;
20
+ }>['baseColumn'] : undefined, ExtractAdditionalProperties<TColumn>>;
21
+ export type GetValibotType<TData, TColumnType extends ColumnDataType, TConstraint extends ColumnDataConstraint | undefined, TEnum extends string[] | undefined, TBaseColumn extends Column | undefined, TAdditionalProperties extends Record<string, any>> = TColumnType extends 'array' ? TConstraint extends 'vector' | 'halfvector' ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[
25
22
  v.ArraySchema<v.NumberSchema<undefined>, undefined>,
26
23
  GetLengthAction<TAdditionalProperties, number[]>
27
- ]> : v.ArraySchema<v.NumberSchema<undefined>, undefined> : TColumnType extends 'PgUUID' ? v.SchemaWithPipe<[v.StringSchema<undefined>, v.UuidAction<string, undefined>]> : TColumnType extends 'PgBinaryVector' ? v.SchemaWithPipe<RemoveNeverElements<[
28
- v.StringSchema<undefined>,
29
- v.RegexAction<string, undefined>,
30
- TAdditionalProperties['max'] extends number ? GetLengthAction<TAdditionalProperties, string> : never
31
- ]>> : TBaseColumn extends Column ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[
32
- GetArraySchema<Assume<TBaseColumn, Column>>,
33
- GetLengthAction<TAdditionalProperties, Assume<TBaseColumn, Column>['_']['data'][]>
34
- ]> : GetArraySchema<Assume<TBaseColumn, Column>> : IsEnumDefined<TEnumValues> extends true ? v.EnumSchema<{
35
- readonly [K in Assume<TEnumValues, [string, ...string[]]>[number]]: K;
36
- }, 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], '', {
37
- noPipe: true;
38
- }>, undefined> : TData extends Record<string, any> ? TColumnType extends 'PgJson' | 'PgJsonb' | 'MySqlJson' | 'SingleStoreJson' | 'SQLiteTextJson' | 'SQLiteBlobJson' ? v.GenericSchema<TData> : v.ObjectSchema<{
39
- readonly [K in keyof TData]: GetValibotPrimitiveType<TData[K], '', {
40
- noPipe: true;
41
- }>;
42
- }, undefined> : TDataType extends 'json' ? v.GenericSchema<Json> : GetValibotPrimitiveType<TData, TColumnType, TAdditionalProperties>;
43
- type GetValibotPrimitiveType<TData, TColumnType, TAdditionalProperties extends Record<string, any>> = TData extends number ? TAdditionalProperties['noPipe'] extends true ? v.NumberSchema<undefined> : v.SchemaWithPipe<RemoveNeverElements<[
24
+ ]> : v.ArraySchema<v.NumberSchema<undefined>, undefined> : TConstraint extends 'int64vector' ? v.ArraySchema<v.BigintSchema<undefined>, undefined> : TConstraint extends 'geometry' | 'point' ? v.TupleSchema<[v.NumberSchema<undefined>, v.NumberSchema<undefined>], undefined> : TConstraint extends 'line' ? v.TupleSchema<[v.NumberSchema<undefined>, v.NumberSchema<undefined>, v.NumberSchema<undefined>], undefined> : TConstraint extends 'basecolumn' ? TBaseColumn extends Column ? (GetArraySchema<TBaseColumn> extends infer ArrInternals extends v.BaseSchema<any, any, v.BaseIssue<any>> ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[
25
+ v.ArraySchema<ArrInternals, undefined>,
26
+ GetLengthAction<TAdditionalProperties, Assume<TData, string | ArrayLike<unknown>>>
27
+ ]> : v.ArraySchema<ArrInternals, undefined> : v.AnySchema) : v.ArraySchema<v.AnySchema, undefined> : v.ArraySchema<v.AnySchema, undefined> : TColumnType extends 'object' ? TConstraint extends 'geometry' | 'point' ? v.ObjectSchema<{
28
+ readonly x: v.NumberSchema<undefined>;
29
+ readonly y: v.NumberSchema<undefined>;
30
+ }, undefined> : TConstraint extends 'line' ? v.ObjectSchema<{
31
+ readonly a: v.NumberSchema<undefined>;
32
+ readonly b: v.NumberSchema<undefined>;
33
+ readonly c: v.NumberSchema<undefined>;
34
+ }, undefined> : TConstraint extends 'date' ? v.DateSchema<undefined> : TConstraint extends 'buffer' ? v.GenericSchema<Buffer> : TConstraint extends 'json' ? v.GenericSchema<TData extends Record<string, any> ? TData : Json> : v.LooseObjectSchema<{}, undefined> : TColumnType extends 'custom' ? v.AnySchema : TColumnType extends 'number' ? v.SchemaWithPipe<RemoveNeverElements<[
44
35
  v.NumberSchema<undefined>,
45
36
  v.MinValueAction<number, number, undefined>,
46
37
  v.MaxValueAction<number, number, undefined>,
47
- TColumnType extends 'MySqlTinyInt' | 'SingleStoreTinyInt' | 'PgSmallInt' | 'PgSmallSerial' | 'MySqlSmallInt' | 'MySqlMediumInt' | 'SingleStoreSmallInt' | 'SingleStoreMediumInt' | 'PgInteger' | 'PgSerial' | 'MySqlInt' | 'SingleStoreInt' | 'PgBigInt53' | 'PgBigSerial53' | 'MySqlBigInt53' | 'MySqlSerial' | 'SingleStoreBigInt53' | 'SingleStoreSerial' | 'SQLiteInteger' | 'MySqlYear' | 'SingleStoreYear' ? v.IntegerAction<number, undefined> : never
48
- ]>> : TData extends bigint ? TAdditionalProperties['noPipe'] extends true ? v.BigintSchema<undefined> : v.SchemaWithPipe<[
38
+ TConstraint extends 'int8' | 'int16' | 'int24' | 'int32' | 'int53' | 'uint8' | 'uint16' | 'uint24' | 'uint32' | 'uint53' | 'year' ? v.IntegerAction<number, undefined> : never
39
+ ]>> : TColumnType extends 'bigint' ? TConstraint extends 'int64' | 'uint64' ? v.SchemaWithPipe<[
49
40
  v.BigintSchema<undefined>,
50
41
  v.MinValueAction<bigint, bigint, undefined>,
51
42
  v.MaxValueAction<bigint, bigint, undefined>
52
- ]> : TData extends boolean ? v.BooleanSchema<undefined> : TData extends string ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[v.StringSchema<undefined>, GetLengthAction<TAdditionalProperties, string>]> : v.StringSchema<undefined> : v.AnySchema;
43
+ ]> : v.BigintSchema<undefined> : TColumnType extends 'boolean' ? v.BooleanSchema<undefined> : TColumnType extends 'string' ? TConstraint extends 'uuid' ? v.SchemaWithPipe<[v.StringSchema<undefined>, v.UuidAction<string, undefined>]> : TConstraint extends 'enum' ? v.EnumSchema<{
44
+ readonly [K in Assume<TEnum, string[]>[number]]: K;
45
+ }, undefined> : TConstraint extends 'int64' ? typeof bigintStringModeSchema : TConstraint extends 'uint64' ? typeof unsignedBigintStringModeSchema : TConstraint extends 'binary' ? v.SchemaWithPipe<RemoveNeverElements<[
46
+ v.StringSchema<undefined>,
47
+ v.RegexAction<string, undefined>,
48
+ TAdditionalProperties['max'] extends number ? GetLengthAction<TAdditionalProperties, string> : never
49
+ ]>> : TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[v.StringSchema<undefined>, GetLengthAction<TAdditionalProperties, string>]> : v.StringSchema<undefined> : v.AnySchema;
50
+ export type GetValibotTypeFromColumn<TColumn extends Column, TDataType extends ColumnTypeData = ExtractColumnTypeData<TColumn['_']['dataType']>> = GetValibotType<TColumn['_']['data'], TDataType['type'], TDataType['constraint'], TColumn['_']['enumValues'], HasBaseColumn<TColumn> extends true ? Assume<TColumn['_'], {
51
+ baseColumn: Column;
52
+ }>['baseColumn'] : undefined, ExtractAdditionalProperties<TColumn>>;
53
53
  type HandleSelectColumn<TSchema extends v.GenericSchema, TColumn extends Column> = TColumn['_']['notNull'] extends true ? TSchema : v.NullableSchema<TSchema, undefined>;
54
54
  type HandleInsertColumn<TSchema extends v.GenericSchema, TColumn extends Column> = TColumn['_']['notNull'] extends true ? TColumn['_']['hasDefault'] extends true ? v.OptionalSchema<TSchema, undefined> : TSchema : v.OptionalSchema<v.NullableSchema<TSchema, undefined>, undefined>;
55
55
  type HandleUpdateColumn<TSchema extends v.GenericSchema, TColumn extends Column> = TColumn['_']['notNull'] extends true ? v.OptionalSchema<TSchema, undefined> : v.OptionalSchema<v.NullableSchema<TSchema, undefined>, undefined>;
56
- export type HandleColumn<TType extends 'select' | 'insert' | 'update', TColumn extends Column> = GetValibotType<TColumn['_']['data'], TColumn['_']['dataType'], TColumn['_']['columnType'], TColumn['_']['enumValues'], HasBaseColumn<TColumn> extends true ? Assume<TColumn['_']['baseColumn'], Column> : undefined, ExtractAdditionalProperties<TColumn>> extends infer TSchema extends v.GenericSchema ? TSchema extends v.AnySchema ? v.AnySchema : TType extends 'select' ? HandleSelectColumn<TSchema, TColumn> : TType extends 'insert' ? HandleInsertColumn<TSchema, TColumn> : TType extends 'update' ? HandleUpdateColumn<TSchema, TColumn> : TSchema : v.AnySchema;
56
+ export type HandleColumn<TType extends 'select' | 'insert' | 'update', TColumn extends Column> = GetValibotTypeFromColumn<TColumn> extends infer TSchema extends v.GenericSchema ? TSchema extends v.AnySchema ? v.AnySchema : TType extends 'select' ? HandleSelectColumn<TSchema, TColumn> : TType extends 'insert' ? HandleInsertColumn<TSchema, TColumn> : TType extends 'update' ? HandleUpdateColumn<TSchema, TColumn> : TSchema : v.AnySchema;
57
57
  export {};