UNPKG

@prisma-extensions/factory

Version:

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

34 lines (30 loc) 994 B
import { Prisma } from '@prisma/client' import type { DefaultData, FactoryBuilder } from './types' import { buildIncludes, mergeData } from './utils' export const factoryExtension = Prisma.defineExtension((client) => { return client.$extends({ name: '@prisma-extensions/factory', model: { $allModels: { $factory<Model, Args extends object>( this: Model, defaultData: DefaultData<Model, Args>, ): FactoryBuilder<Model> { return { attributes(data = {}) { return mergeData<Model>(defaultData, data) }, create: async (data = {}) => { const mergedData = mergeData<Model>(defaultData, data) // @ts-expect-error: Requires more types from Prisma return await this.create({ data: mergedData, include: buildIncludes<Model>(mergedData), }) }, } }, }, }, }) })