diff --git a/examples/example-prj/src/__generated__/fabbrica/index.js b/examples/example-prj/src/__generated__/fabbrica/index.js index f8f42db1..59750bcf 100644 --- a/examples/example-prj/src/__generated__/fabbrica/index.js +++ b/examples/example-prj/src/__generated__/fabbrica/index.js @@ -5,11 +5,27 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); exports.definePostFactory = exports.defineUserFactory = exports.resetSequence = exports.initialize = void 0; const clientHolder_1 = require("@quramy/prisma-fabbrica/lib/clientHolder"); +const relations_1 = require("@quramy/prisma-fabbrica/lib/relations"); const gen_1 = __importDefault(require("@quramy/prisma-fabbrica/lib/scalar/gen")); const helpers_1 = require("@quramy/prisma-fabbrica/lib/helpers"); var prisma_fabbrica_1 = require("@quramy/prisma-fabbrica"); Object.defineProperty(exports, "initialize", { enumerable: true, get: function () { return prisma_fabbrica_1.initialize; } }); Object.defineProperty(exports, "resetSequence", { enumerable: true, get: function () { return prisma_fabbrica_1.resetSequence; } }); +const modelFieldDefinitions = [{ + name: "User", + fields: [{ + name: "posts", + type: "Post", + relationName: "PostToUser" + }] + }, { + name: "Post", + fields: [{ + name: "author", + type: "User", + relationName: "PostToUser" + }] + }]; function autoGenerateUserScalarsOrEnums({ seq }) { return { id: gen_1.default.String({ modelName: "User", fieldName: "id", isId: true, isUnique: false, seq }), @@ -19,6 +35,7 @@ function autoGenerateUserScalarsOrEnums({ seq }) { function defineUserFactoryInternal({ defaultData: defaultDataResolver }) { const seqKey = {}; const getSeq = () => (0, helpers_1.getSequenceCounter)(seqKey); + const screen = (0, relations_1.createScreener)("User", modelFieldDefinitions); const buildCreateInput = async (inputData = {}) => { const seq = getSeq(); const requiredScalarData = autoGenerateUserScalarsOrEnums({ seq }); @@ -32,7 +49,7 @@ function defineUserFactoryInternal({ defaultData: defaultDataResolver }) { id: inputData.id }); const create = async (inputData = {}) => { - const data = await buildCreateInput(inputData); + const data = await buildCreateInput(inputData).then(screen); return await (0, clientHolder_1.getClient)().user.create({ data }); }; const createForConnect = (inputData = {}) => create(inputData).then(pickForConnect); @@ -60,6 +77,7 @@ function autoGeneratePostScalarsOrEnums({ seq }) { function definePostFactoryInternal({ defaultData: defaultDataResolver }) { const seqKey = {}; const getSeq = () => (0, helpers_1.getSequenceCounter)(seqKey); + const screen = (0, relations_1.createScreener)("Post", modelFieldDefinitions); const buildCreateInput = async (inputData = {}) => { const seq = getSeq(); const requiredScalarData = autoGeneratePostScalarsOrEnums({ seq }); @@ -77,7 +95,7 @@ function definePostFactoryInternal({ defaultData: defaultDataResolver }) { id: inputData.id }); const create = async (inputData = {}) => { - const data = await buildCreateInput(inputData); + const data = await buildCreateInput(inputData).then(screen); return await (0, clientHolder_1.getClient)().post.create({ data }); }; const createForConnect = (inputData = {}) => create(inputData).then(pickForConnect); diff --git a/examples/example-prj/src/sample.test.ts b/examples/example-prj/src/sample.test.ts index a7737143..a7832b57 100644 --- a/examples/example-prj/src/sample.test.ts +++ b/examples/example-prj/src/sample.test.ts @@ -23,6 +23,16 @@ describe("factories", () => { const user = await prisma.user.findUnique({ where: { id: "user001" } }); expect(user).toEqual({ id: "user001", name: "Quramy" }); }); + + it("creates record with children relation", async () => { + await UserFactory.create({ + posts: { + create: [await PostFactory.buildCreateInput()], + }, + }); + const created = await prisma.user.findFirst({ include: { posts: true } }); + expect(created?.posts.length).toBe(1); + }); }); describe("PostFactory", () => { diff --git a/packages/prisma-fabbrica/src/relations/index.ts b/packages/prisma-fabbrica/src/relations/index.ts index e69de29b..73498494 100644 --- a/packages/prisma-fabbrica/src/relations/index.ts +++ b/packages/prisma-fabbrica/src/relations/index.ts @@ -0,0 +1 @@ +export * from "./screen"; diff --git a/packages/prisma-fabbrica/src/templates/__snapshots__/getSourceFile.test.ts.snap b/packages/prisma-fabbrica/src/templates/__snapshots__/getSourceFile.test.ts.snap index 45341bf8..f3d266e0 100644 --- a/packages/prisma-fabbrica/src/templates/__snapshots__/getSourceFile.test.ts.snap +++ b/packages/prisma-fabbrica/src/templates/__snapshots__/getSourceFile.test.ts.snap @@ -5,12 +5,17 @@ exports[`getSourceFile generates TypeScript AST 1`] = ` import { Prisma } from "@prisma/client"; import type { PrismaClient } from "@prisma/client"; import { getClient } from "@quramy/prisma-fabbrica/lib/clientHolder"; +import { ModelWithFields, createScreener } from "@quramy/prisma-fabbrica/lib/relations"; import scalarFieldValueGenerator from "@quramy/prisma-fabbrica/lib/scalar/gen"; import { Resolver, normalizeResolver, getSequenceCounter } from "@quramy/prisma-fabbrica/lib/helpers"; export { initialize, resetSequence } from "@quramy/prisma-fabbrica"; type BuildDataOptions = { readonly seq: number; }; +const modelFieldDefinitions: ModelWithFields[] = [{ + name: "User", + fields: [] + }]; type UserScalarOrEnumFields = { id: number; name: string; @@ -33,6 +38,7 @@ function autoGenerateUserScalarsOrEnums({ seq }: { function defineUserFactoryInternal({ defaultData: defaultDataResolver }: UserFactoryDefineOptions) { const seqKey = {}; const getSeq = () => getSequenceCounter(seqKey); + const screen = createScreener("User", modelFieldDefinitions); const buildCreateInput = async (inputData: Partial = {}) => { const seq = getSeq(); const requiredScalarData = autoGenerateUserScalarsOrEnums({ seq }); @@ -46,7 +52,7 @@ function defineUserFactoryInternal({ defaultData: defaultDataResolver }: UserFac id: inputData.id }); const create = async (inputData: Partial = {}) => { - const data = await buildCreateInput(inputData); + const data = await buildCreateInput(inputData).then(screen); return await getClient().user.create({ data }); }; const createForConnect = (inputData: Partial = {}) => create(inputData).then(pickForConnect); diff --git a/packages/prisma-fabbrica/src/templates/index.ts b/packages/prisma-fabbrica/src/templates/index.ts index bde79108..3098457b 100644 --- a/packages/prisma-fabbrica/src/templates/index.ts +++ b/packages/prisma-fabbrica/src/templates/index.ts @@ -1,7 +1,8 @@ import { DMMF } from "@prisma/generator-helper"; import ts from "typescript"; import { template } from "talt"; -import { camelize, ast, byName } from "../helpers"; +import { camelize, ast, byName, createJSONLiteral } from "../helpers"; +import { createFieldDefinitions } from "../relations"; export function findPrsimaCreateInputTypeFromModelName(document: DMMF.Document, modelName: string) { const search = `${modelName}CreateInput`; @@ -64,6 +65,7 @@ export const header = (prismaClientModuleSpecifier: string) => import { Prisma } from ${() => ast.stringLiteral(prismaClientModuleSpecifier)}; import type { PrismaClient } from ${() => ast.stringLiteral(prismaClientModuleSpecifier)}; import { getClient } from "@quramy/prisma-fabbrica/lib/clientHolder"; + import { ModelWithFields, createScreener } from "@quramy/prisma-fabbrica/lib/relations"; import scalarFieldValueGenerator from "@quramy/prisma-fabbrica/lib/scalar/gen"; import { Resolver, normalizeResolver, getSequenceCounter } from "@quramy/prisma-fabbrica/lib/helpers"; export { initialize, resetSequence } from "@quramy/prisma-fabbrica"; @@ -78,6 +80,11 @@ export const importStatement = (specifier: string, prismaClientModuleSpecifier: import { ${() => ast.identifier(specifier)} } from ${() => ast.stringLiteral(prismaClientModuleSpecifier)}; `(); +export const modelFieldDefinitions = (models: DMMF.Model[]) => + template.statement` + const modelFieldDefinitions: ModelWithFields[] = ${() => createJSONLiteral(createFieldDefinitions(models))} +`(); + export const scalarFieldType = ( model: DMMF.Model, fieldName: string, @@ -263,6 +270,7 @@ export const defineModelFactoryInernal = (model: DMMF.Model, inputType: DMMF.Inp const seqKey = {}; const getSeq = () => getSequenceCounter(seqKey); + const screen = createScreener(${() => ast.stringLiteral(model.name)}, modelFieldDefinitions); const buildCreateInput = async ( inputData: Partial = {} @@ -305,7 +313,7 @@ export const defineModelFactoryInernal = (model: DMMF.Model, inputType: DMMF.Inp const create = async ( inputData: Partial = {} ) => { - const data = await buildCreateInput(inputData); + const data = await buildCreateInput(inputData).then(screen); return await getClient().MODEL_KEY.create({ data }); }; @@ -369,6 +377,7 @@ export function getSourceFile({ ...modelNames.map(modelName => importStatement(modelName, prismaClientModuleSpecifier)), ...enums.map(enumName => importStatement(enumName, prismaClientModuleSpecifier)), ...header(prismaClientModuleSpecifier).statements, + modelFieldDefinitions(document.datamodel.models), ...document.datamodel.models .map(model => ({ model, createInputType: findPrsimaCreateInputTypeFromModelName(document, model.name) })) .flatMap(({ model, createInputType }) => [ diff --git a/packages/ts-compile-testing/fixtures/field-variation/__generated__/fabbrica/index.ts b/packages/ts-compile-testing/fixtures/field-variation/__generated__/fabbrica/index.ts index 07085cde..1d944913 100644 --- a/packages/ts-compile-testing/fixtures/field-variation/__generated__/fabbrica/index.ts +++ b/packages/ts-compile-testing/fixtures/field-variation/__generated__/fabbrica/index.ts @@ -4,12 +4,20 @@ import { Role } from "./../client"; import { Prisma } from "./../client"; import type { PrismaClient } from "./../client"; import { getClient } from "@quramy/prisma-fabbrica/lib/clientHolder"; +import { ModelWithFields, createScreener } from "@quramy/prisma-fabbrica/lib/relations"; import scalarFieldValueGenerator from "@quramy/prisma-fabbrica/lib/scalar/gen"; import { Resolver, normalizeResolver, getSequenceCounter } from "@quramy/prisma-fabbrica/lib/helpers"; export { initialize, resetSequence } from "@quramy/prisma-fabbrica"; type BuildDataOptions = { readonly seq: number; }; +const modelFieldDefinitions: ModelWithFields[] = [{ + name: "User", + fields: [] + }, { + name: "ComplexIdModel", + fields: [] + }]; type UserScalarOrEnumFields = { id: string; role: Role; @@ -34,6 +42,7 @@ function autoGenerateUserScalarsOrEnums({ seq }: { function defineUserFactoryInternal({ defaultData: defaultDataResolver }: UserFactoryDefineOptions) { const seqKey = {}; const getSeq = () => getSequenceCounter(seqKey); + const screen = createScreener("User", modelFieldDefinitions); const buildCreateInput = async (inputData: Partial = {}) => { const seq = getSeq(); const requiredScalarData = autoGenerateUserScalarsOrEnums({ seq }); @@ -47,7 +56,7 @@ function defineUserFactoryInternal({ defaultData: defaultDataResolver }: UserFac id: inputData.id }); const create = async (inputData: Partial = {}) => { - const data = await buildCreateInput(inputData); + const data = await buildCreateInput(inputData).then(screen); return await getClient().user.create({ data }); }; const createForConnect = (inputData: Partial = {}) => create(inputData).then(pickForConnect); @@ -84,6 +93,7 @@ function autoGenerateComplexIdModelScalarsOrEnums({ seq }: { function defineComplexIdModelFactoryInternal({ defaultData: defaultDataResolver }: ComplexIdModelFactoryDefineOptions) { const seqKey = {}; const getSeq = () => getSequenceCounter(seqKey); + const screen = createScreener("ComplexIdModel", modelFieldDefinitions); const buildCreateInput = async (inputData: Partial = {}) => { const seq = getSeq(); const requiredScalarData = autoGenerateComplexIdModelScalarsOrEnums({ seq }); @@ -98,7 +108,7 @@ function defineComplexIdModelFactoryInternal({ defaultData: defaultDataResolver lastName: inputData.lastName }); const create = async (inputData: Partial = {}) => { - const data = await buildCreateInput(inputData); + const data = await buildCreateInput(inputData).then(screen); return await getClient().complexIdModel.create({ data }); }; const createForConnect = (inputData: Partial = {}) => create(inputData).then(pickForConnect); diff --git a/packages/ts-compile-testing/fixtures/relations-many-to-many/__generated__/fabbrica/index.ts b/packages/ts-compile-testing/fixtures/relations-many-to-many/__generated__/fabbrica/index.ts index 6c84c1e8..5e184126 100644 --- a/packages/ts-compile-testing/fixtures/relations-many-to-many/__generated__/fabbrica/index.ts +++ b/packages/ts-compile-testing/fixtures/relations-many-to-many/__generated__/fabbrica/index.ts @@ -3,12 +3,28 @@ import { Category } from "./../client"; import { Prisma } from "./../client"; import type { PrismaClient } from "./../client"; import { getClient } from "@quramy/prisma-fabbrica/lib/clientHolder"; +import { ModelWithFields, createScreener } from "@quramy/prisma-fabbrica/lib/relations"; import scalarFieldValueGenerator from "@quramy/prisma-fabbrica/lib/scalar/gen"; import { Resolver, normalizeResolver, getSequenceCounter } from "@quramy/prisma-fabbrica/lib/helpers"; export { initialize, resetSequence } from "@quramy/prisma-fabbrica"; type BuildDataOptions = { readonly seq: number; }; +const modelFieldDefinitions: ModelWithFields[] = [{ + name: "Post", + fields: [{ + name: "categories", + type: "Category", + relationName: "CategoryToPost" + }] + }, { + name: "Category", + fields: [{ + name: "posts", + type: "Post", + relationName: "CategoryToPost" + }] + }]; type PostScalarOrEnumFields = { id: string; title: string; @@ -32,6 +48,7 @@ function autoGeneratePostScalarsOrEnums({ seq }: { function definePostFactoryInternal({ defaultData: defaultDataResolver }: PostFactoryDefineOptions) { const seqKey = {}; const getSeq = () => getSequenceCounter(seqKey); + const screen = createScreener("Post", modelFieldDefinitions); const buildCreateInput = async (inputData: Partial = {}) => { const seq = getSeq(); const requiredScalarData = autoGeneratePostScalarsOrEnums({ seq }); @@ -45,7 +62,7 @@ function definePostFactoryInternal({ defaultData: defaultDataResolver }: PostFac id: inputData.id }); const create = async (inputData: Partial = {}) => { - const data = await buildCreateInput(inputData); + const data = await buildCreateInput(inputData).then(screen); return await getClient().post.create({ data }); }; const createForConnect = (inputData: Partial = {}) => create(inputData).then(pickForConnect); @@ -83,6 +100,7 @@ function autoGenerateCategoryScalarsOrEnums({ seq }: { function defineCategoryFactoryInternal({ defaultData: defaultDataResolver }: CategoryFactoryDefineOptions) { const seqKey = {}; const getSeq = () => getSequenceCounter(seqKey); + const screen = createScreener("Category", modelFieldDefinitions); const buildCreateInput = async (inputData: Partial = {}) => { const seq = getSeq(); const requiredScalarData = autoGenerateCategoryScalarsOrEnums({ seq }); @@ -96,7 +114,7 @@ function defineCategoryFactoryInternal({ defaultData: defaultDataResolver }: Cat id: inputData.id }); const create = async (inputData: Partial = {}) => { - const data = await buildCreateInput(inputData); + const data = await buildCreateInput(inputData).then(screen); return await getClient().category.create({ data }); }; const createForConnect = (inputData: Partial = {}) => create(inputData).then(pickForConnect); diff --git a/packages/ts-compile-testing/fixtures/relations-one-to-many/__generated__/fabbrica/index.ts b/packages/ts-compile-testing/fixtures/relations-one-to-many/__generated__/fabbrica/index.ts index 416e9b41..2ae79b4e 100644 --- a/packages/ts-compile-testing/fixtures/relations-one-to-many/__generated__/fabbrica/index.ts +++ b/packages/ts-compile-testing/fixtures/relations-one-to-many/__generated__/fabbrica/index.ts @@ -4,12 +4,47 @@ import { Review } from "./../client"; import { Prisma } from "./../client"; import type { PrismaClient } from "./../client"; import { getClient } from "@quramy/prisma-fabbrica/lib/clientHolder"; +import { ModelWithFields, createScreener } from "@quramy/prisma-fabbrica/lib/relations"; import scalarFieldValueGenerator from "@quramy/prisma-fabbrica/lib/scalar/gen"; import { Resolver, normalizeResolver, getSequenceCounter } from "@quramy/prisma-fabbrica/lib/helpers"; export { initialize, resetSequence } from "@quramy/prisma-fabbrica"; type BuildDataOptions = { readonly seq: number; }; +const modelFieldDefinitions: ModelWithFields[] = [{ + name: "User", + fields: [{ + name: "posts", + type: "Post", + relationName: "PostToUser" + }, { + name: "reviews", + type: "Review", + relationName: "ReviewToUser" + }] + }, { + name: "Post", + fields: [{ + name: "author", + type: "User", + relationName: "PostToUser" + }, { + name: "reviews", + type: "Review", + relationName: "PostToReview" + }] + }, { + name: "Review", + fields: [{ + name: "post", + type: "Post", + relationName: "PostToReview" + }, { + name: "reviewer", + type: "User", + relationName: "ReviewToUser" + }] + }]; type UserScalarOrEnumFields = { id: string; name: string; @@ -34,6 +69,7 @@ function autoGenerateUserScalarsOrEnums({ seq }: { function defineUserFactoryInternal({ defaultData: defaultDataResolver }: UserFactoryDefineOptions) { const seqKey = {}; const getSeq = () => getSequenceCounter(seqKey); + const screen = createScreener("User", modelFieldDefinitions); const buildCreateInput = async (inputData: Partial = {}) => { const seq = getSeq(); const requiredScalarData = autoGenerateUserScalarsOrEnums({ seq }); @@ -47,7 +83,7 @@ function defineUserFactoryInternal({ defaultData: defaultDataResolver }: UserFac id: inputData.id }); const create = async (inputData: Partial = {}) => { - const data = await buildCreateInput(inputData); + const data = await buildCreateInput(inputData).then(screen); return await getClient().user.create({ data }); }; const createForConnect = (inputData: Partial = {}) => create(inputData).then(pickForConnect); @@ -93,6 +129,7 @@ function autoGeneratePostScalarsOrEnums({ seq }: { function definePostFactoryInternal({ defaultData: defaultDataResolver }: PostFactoryDefineOptions) { const seqKey = {}; const getSeq = () => getSequenceCounter(seqKey); + const screen = createScreener("Post", modelFieldDefinitions); const buildCreateInput = async (inputData: Partial = {}) => { const seq = getSeq(); const requiredScalarData = autoGeneratePostScalarsOrEnums({ seq }); @@ -110,7 +147,7 @@ function definePostFactoryInternal({ defaultData: defaultDataResolver }: PostFac id: inputData.id }); const create = async (inputData: Partial = {}) => { - const data = await buildCreateInput(inputData); + const data = await buildCreateInput(inputData).then(screen); return await getClient().post.create({ data }); }; const createForConnect = (inputData: Partial = {}) => create(inputData).then(pickForConnect); @@ -163,6 +200,7 @@ function autoGenerateReviewScalarsOrEnums({ seq }: { function defineReviewFactoryInternal({ defaultData: defaultDataResolver }: ReviewFactoryDefineOptions) { const seqKey = {}; const getSeq = () => getSequenceCounter(seqKey); + const screen = createScreener("Review", modelFieldDefinitions); const buildCreateInput = async (inputData: Partial = {}) => { const seq = getSeq(); const requiredScalarData = autoGenerateReviewScalarsOrEnums({ seq }); @@ -183,7 +221,7 @@ function defineReviewFactoryInternal({ defaultData: defaultDataResolver }: Revie id: inputData.id }); const create = async (inputData: Partial = {}) => { - const data = await buildCreateInput(inputData); + const data = await buildCreateInput(inputData).then(screen); return await getClient().review.create({ data }); }; const createForConnect = (inputData: Partial = {}) => create(inputData).then(pickForConnect); diff --git a/packages/ts-compile-testing/fixtures/relations-one-to-one/__generated__/fabbrica/index.ts b/packages/ts-compile-testing/fixtures/relations-one-to-one/__generated__/fabbrica/index.ts index 2c0d90e7..41972426 100644 --- a/packages/ts-compile-testing/fixtures/relations-one-to-one/__generated__/fabbrica/index.ts +++ b/packages/ts-compile-testing/fixtures/relations-one-to-one/__generated__/fabbrica/index.ts @@ -3,12 +3,28 @@ import { Profile } from "./../client"; import { Prisma } from "./../client"; import type { PrismaClient } from "./../client"; import { getClient } from "@quramy/prisma-fabbrica/lib/clientHolder"; +import { ModelWithFields, createScreener } from "@quramy/prisma-fabbrica/lib/relations"; import scalarFieldValueGenerator from "@quramy/prisma-fabbrica/lib/scalar/gen"; import { Resolver, normalizeResolver, getSequenceCounter } from "@quramy/prisma-fabbrica/lib/helpers"; export { initialize, resetSequence } from "@quramy/prisma-fabbrica"; type BuildDataOptions = { readonly seq: number; }; +const modelFieldDefinitions: ModelWithFields[] = [{ + name: "User", + fields: [{ + name: "profile", + type: "Profile", + relationName: "ProfileToUser" + }] + }, { + name: "Profile", + fields: [{ + name: "user", + type: "User", + relationName: "ProfileToUser" + }] + }]; type UserScalarOrEnumFields = { id: string; name: string; @@ -39,6 +55,7 @@ function autoGenerateUserScalarsOrEnums({ seq }: { function defineUserFactoryInternal({ defaultData: defaultDataResolver }: UserFactoryDefineOptions) { const seqKey = {}; const getSeq = () => getSequenceCounter(seqKey); + const screen = createScreener("User", modelFieldDefinitions); const buildCreateInput = async (inputData: Partial = {}) => { const seq = getSeq(); const requiredScalarData = autoGenerateUserScalarsOrEnums({ seq }); @@ -56,7 +73,7 @@ function defineUserFactoryInternal({ defaultData: defaultDataResolver }: UserFac id: inputData.id }); const create = async (inputData: Partial = {}) => { - const data = await buildCreateInput(inputData); + const data = await buildCreateInput(inputData).then(screen); return await getClient().user.create({ data }); }; const createForConnect = (inputData: Partial = {}) => create(inputData).then(pickForConnect); @@ -98,6 +115,7 @@ function autoGenerateProfileScalarsOrEnums({ seq }: { function defineProfileFactoryInternal({ defaultData: defaultDataResolver }: ProfileFactoryDefineOptions) { const seqKey = {}; const getSeq = () => getSequenceCounter(seqKey); + const screen = createScreener("Profile", modelFieldDefinitions); const buildCreateInput = async (inputData: Partial = {}) => { const seq = getSeq(); const requiredScalarData = autoGenerateProfileScalarsOrEnums({ seq }); @@ -115,7 +133,7 @@ function defineProfileFactoryInternal({ defaultData: defaultDataResolver }: Prof id: inputData.id }); const create = async (inputData: Partial = {}) => { - const data = await buildCreateInput(inputData); + const data = await buildCreateInput(inputData).then(screen); return await getClient().profile.create({ data }); }; const createForConnect = (inputData: Partial = {}) => create(inputData).then(pickForConnect); diff --git a/packages/ts-compile-testing/fixtures/simple-model/__generated__/fabbrica/index.ts b/packages/ts-compile-testing/fixtures/simple-model/__generated__/fabbrica/index.ts index 13eff060..ec586ba9 100644 --- a/packages/ts-compile-testing/fixtures/simple-model/__generated__/fabbrica/index.ts +++ b/packages/ts-compile-testing/fixtures/simple-model/__generated__/fabbrica/index.ts @@ -2,12 +2,17 @@ import { User } from "./../client"; import { Prisma } from "./../client"; import type { PrismaClient } from "./../client"; import { getClient } from "@quramy/prisma-fabbrica/lib/clientHolder"; +import { ModelWithFields, createScreener } from "@quramy/prisma-fabbrica/lib/relations"; import scalarFieldValueGenerator from "@quramy/prisma-fabbrica/lib/scalar/gen"; import { Resolver, normalizeResolver, getSequenceCounter } from "@quramy/prisma-fabbrica/lib/helpers"; export { initialize, resetSequence } from "@quramy/prisma-fabbrica"; type BuildDataOptions = { readonly seq: number; }; +const modelFieldDefinitions: ModelWithFields[] = [{ + name: "User", + fields: [] + }]; type UserScalarOrEnumFields = { id: string; name: string; @@ -30,6 +35,7 @@ function autoGenerateUserScalarsOrEnums({ seq }: { function defineUserFactoryInternal({ defaultData: defaultDataResolver }: UserFactoryDefineOptions) { const seqKey = {}; const getSeq = () => getSequenceCounter(seqKey); + const screen = createScreener("User", modelFieldDefinitions); const buildCreateInput = async (inputData: Partial = {}) => { const seq = getSeq(); const requiredScalarData = autoGenerateUserScalarsOrEnums({ seq }); @@ -43,7 +49,7 @@ function defineUserFactoryInternal({ defaultData: defaultDataResolver }: UserFac id: inputData.id }); const create = async (inputData: Partial = {}) => { - const data = await buildCreateInput(inputData); + const data = await buildCreateInput(inputData).then(screen); return await getClient().user.create({ data }); }; const createForConnect = (inputData: Partial = {}) => create(inputData).then(pickForConnect);