Skip to content

Commit

Permalink
Fix type refinement type mapping in drizzle-zod
Browse files Browse the repository at this point in the history
  • Loading branch information
L-Mario564 committed Dec 10, 2024
1 parent a9bb8ab commit 1686686
Showing 1 changed file with 12 additions and 6 deletions.
18 changes: 12 additions & 6 deletions drizzle-zod/src/schema.types.internal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,20 @@ export type BuildRefine<
: never;

type HandleRefinement<
TType extends 'select' | 'insert' | 'update',
TRefinement extends z.ZodTypeAny | ((schema: z.ZodTypeAny) => z.ZodTypeAny),
TColumn extends Column,
> = TRefinement extends (schema: z.ZodTypeAny) => z.ZodTypeAny
? TColumn['_']['notNull'] extends true ? ReturnType<TRefinement>
: z.ZodNullable<ReturnType<TRefinement>>
> = TRefinement extends (schema: any) => z.ZodTypeAny ? (TColumn['_']['notNull'] extends true ? ReturnType<TRefinement>
: z.ZodNullable<ReturnType<TRefinement>>) extends infer TSchema
? TType extends 'update' ? z.ZodOptional<Assume<TSchema, z.ZodTypeAny>> : TSchema
: z.ZodTypeAny
: TRefinement;

type IsRefinementDefined<TRefinements, TKey extends string> = TKey extends keyof TRefinements
? TRefinements[TKey] extends z.ZodTypeAny | ((schema: any) => any) ? true
: false
: false;

export type BuildSchema<
TType extends 'select' | 'insert' | 'update',
TColumns extends Record<string, any>,
Expand All @@ -56,9 +63,8 @@ export type BuildSchema<
{
[K in keyof TColumns]: TColumns[K] extends infer TColumn extends Column
? TRefinements extends object
? TRefinements[Assume<K, keyof TRefinements>] extends
infer TRefinement extends z.ZodTypeAny | ((schema: z.ZodTypeAny) => z.ZodTypeAny)
? HandleRefinement<TRefinement, TColumn>
? IsRefinementDefined<TRefinements, Assume<K, string>> extends true
? HandleRefinement<TType, TRefinements[Assume<K, keyof TRefinements>], TColumn>
: HandleColumn<TType, TColumn>
: HandleColumn<TType, TColumn>
: TColumns[K] extends infer TObject extends SelectedFieldsFlat<Column> | Table | View ? BuildSchema<
Expand Down

0 comments on commit 1686686

Please sign in to comment.