UNPKG

@prisma-extensions/factory

Version:

Factory enables you to easily create and build database records for testing or seeding purposes.

15 lines (14 loc) 962 B
import type { CreateOperation, OptionalKeys, RequiredKeys } from '@prisma-extensions/core'; import type { Prisma } from '@prisma/client'; export type ArgReturnType<T> = T extends () => infer R ? R : T; export type ExtractData<Model, Operation extends CreateOperation = 'create'> = Prisma.Args<Model, Operation>['data']; export type TransformKeys<Model, Data extends Prisma.Args<Model, Operation>['data'], Operation extends CreateOperation = 'create'> = { [Key in keyof Pick<Data, RequiredKeys<Data>>]: Data[Key] | (() => Data[Key]); } & { [Key in keyof Pick<Data, OptionalKeys<Data>>]?: Data[Key] | (() => Data[Key]); }; export type DefaultData<Model, Args> = Prisma.Exact<Args, TransformKeys<Model, ExtractData<Model>>>; export interface FactoryBuilder<Model, Data = ExtractData<Model>, Input = Partial<TransformKeys<Model, Data>>> { attributes: (data?: Input) => Data; create: (data?: Input) => Promise<Prisma.Result<Model, Data, 'create'>>; }