import type { Assume, Column } from 'drizzle-orm'; import type { z } from 'zod'; import type { ArrayHasAtLeastOneValue, ColumnIsGeneratedAlwaysAs, IsNever, Json } from "./utils.mjs"; export type GetEnumValuesFromColumn = TColumn['_'] extends { enumValues: [string, ...string[]]; } ? TColumn['_']['enumValues'] : undefined; export type GetBaseColumn = TColumn['_'] extends { baseColumn: Column | never | undefined; } ? IsNever extends false ? TColumn['_']['baseColumn'] : undefined : undefined; export type GetZodType = TBaseColumn extends Column ? z.ZodArray, GetBaseColumn>> : ArrayHasAtLeastOneValue extends true ? z.ZodEnum> : TData extends infer TTuple extends [any, ...any[]] ? z.ZodTuple; }, [any, ...any[]]>> : TData extends Date ? z.ZodDate : TData extends Buffer ? z.ZodType : TDataType extends 'array' ? z.ZodArray[number], string, undefined, undefined>> : TData extends infer TDict extends Record ? z.ZodObject<{ [K in keyof TDict]: GetZodType; }, 'strip'> : TDataType extends 'json' ? z.ZodType : TData extends number ? z.ZodNumber : TData extends bigint ? z.ZodBigInt : TData extends boolean ? z.ZodBoolean : TData extends string ? z.ZodString : z.ZodTypeAny; type HandleSelectColumn = TColumn['_']['notNull'] extends true ? TSchema : z.ZodNullable; type HandleInsertColumn = ColumnIsGeneratedAlwaysAs extends true ? never : TColumn['_']['notNull'] extends true ? TColumn['_']['hasDefault'] extends true ? z.ZodOptional : TSchema : z.ZodOptional>; type HandleUpdateColumn = ColumnIsGeneratedAlwaysAs extends true ? never : TColumn['_']['notNull'] extends true ? z.ZodOptional : z.ZodOptional>; export type HandleColumn = GetZodType, GetBaseColumn> extends infer TSchema extends z.ZodTypeAny ? TSchema extends z.ZodAny ? z.ZodAny : TType extends 'select' ? HandleSelectColumn : TType extends 'insert' ? HandleInsertColumn : TType extends 'update' ? HandleUpdateColumn : TSchema : z.ZodAny; export {};