diff --git a/src/handlers/input-type.ts b/src/handlers/input-type.ts index bb2c11a5..79356e65 100644 --- a/src/handlers/input-type.ts +++ b/src/handlers/input-type.ts @@ -56,6 +56,8 @@ export function inputType( const modelFieldSettings = model && fieldSettings.get(model.name); const moduleSpecifier = '@nestjs/graphql'; + // console.log('sourceFile.getBaseName()', sourceFile.getBaseName()); + importDeclarations .set('Field', { namedImports: [{ name: 'Field' }], @@ -77,6 +79,12 @@ export function inputType( eventEmitter.emitSync('BeforeGenerateField', field, args); const { inputTypes, isRequired, name } = field; + + if (inputTypes.length === 0) { + // No types + continue; + } + const usePattern = useInputType?.ALL || useInputType?.[name]; const graphqlInputType = getGraphqlInputType(inputTypes, usePattern); const { isList, location, type } = graphqlInputType; diff --git a/src/test/generate.spec.ts b/src/test/generate.spec.ts index 3936f123..39a128f9 100644 --- a/src/test/generate.spec.ts +++ b/src/test/generate.spec.ts @@ -2557,3 +2557,26 @@ describe('configuration custom scalars', () => { }); }); }); + +describe('single model and field mongodb', () => { + before(async () => { + ({ project, sourceFiles } = await testGenerate({ + provider: 'mongodb', + schema: ` + model Product { + id String @id @default(auto()) @map("_id") @db.ObjectId + } + `, + options: [`outputFilePattern = "{name}.{type}.ts"`], + })); + }); + + it('example input update type', () => { + const s = testSourceFile({ + project, + file: 'update-one-product.args.ts', + }); + // data field is missing because of single id field + expect(s.classFile.getProperties()).toHaveLength(1); + }); +}); diff --git a/src/test/test-generate.ts b/src/test/test-generate.ts index 7d915558..468ffa75 100644 --- a/src/test/test-generate.ts +++ b/src/test/test-generate.ts @@ -19,6 +19,7 @@ const { '@prisma/generator-helper': generatorVersion } = export async function testGenerate(args: { schema: string; options?: string[]; + provider?: 'postgresql' | 'mongodb'; createSouceFile?: { text: string; name: string; @@ -26,7 +27,7 @@ export async function testGenerate(args: { }; onConnect?: (emitter: AwaitEventEmitter) => void; }) { - const { schema, options, createSouceFile, onConnect } = args; + const { schema, options, provider, createSouceFile, onConnect } = args; let project: Project | undefined; const connectCallback = (emitter: AwaitEventEmitter) => { onConnect && onConnect(emitter); @@ -53,7 +54,7 @@ export async function testGenerate(args: { }); }; await generate({ - ...(await createGeneratorOptions(schema, options)), + ...(await createGeneratorOptions(schema, options, provider)), skipAddOutputSourceFiles: true, connectCallback, }); @@ -119,10 +120,11 @@ export async function testGenerate(args: { async function createGeneratorOptions( schema: string, options?: string[], + provider: 'postgresql' | 'mongodb' = 'postgresql', ): Promise { const schemaHeader = ` datasource db { - provider = "postgresql" + provider = "${provider}" url = env("DATABASE_URL") } generator client {