UNPKG

@prisma-extensions/factory

Version:

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

31 lines (25 loc) 973 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'>> }