From 94a187c09367eaedd52f45860bfa0312b6be4b40 Mon Sep 17 00:00:00 2001 From: JackCme Date: Tue, 2 Sep 2025 16:37:57 +0900 Subject: [PATCH 1/3] fix: Swagger Decorator to have relation Type --- package-lock.json | 16 ++-------------- src/helpers.ts | 4 ++++ tests/relation-splitting.test.ts | 2 +- tests/swagger-generation.test.ts | 1 + 4 files changed, 8 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index 94d0c37..0cd865b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "prisma-class-validator-generator", - "version": "5.0.0", + "version": "6.0.0-beta.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "prisma-class-validator-generator", - "version": "5.0.0", + "version": "6.0.0-beta.2", "license": "MIT", "dependencies": { "@prisma/client": "^6.12.0", @@ -24,7 +24,6 @@ "devDependencies": { "@types/node": "^24.0.15", "@types/pluralize": "0.0.33", - "@types/prettier": "^3.0.0", "@vitest/coverage-v8": "^3.2.4", "prisma": "^6.12.0", "typescript": "^5.8.3", @@ -1187,17 +1186,6 @@ "integrity": "sha512-JOqsl+ZoCpP4e8TDke9W79FDcSgPAR0l6pixx2JHkhnRjvShyYiAYw2LVsnA7K08Y6DeOnaU6ujmENO4os/cYg==", "dev": true }, - "node_modules/@types/prettier": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-3.0.0.tgz", - "integrity": "sha512-mFMBfMOz8QxhYVbuINtswBp9VL2b4Y0QqYHwqLz3YbgtfAcat2Dl6Y1o4e22S/OVE6Ebl9m7wWiMT2lSbAs1wA==", - "deprecated": "This is a stub types definition. prettier provides its own type definitions, so you do not need this installed.", - "dev": true, - "license": "MIT", - "dependencies": { - "prettier": "*" - } - }, "node_modules/@types/validator": { "version": "13.15.2", "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.15.2.tgz", diff --git a/src/helpers.ts b/src/helpers.ts index f6ce8b3..0130b0e 100644 --- a/src/helpers.ts +++ b/src/helpers.ts @@ -200,6 +200,10 @@ export const getSwaggerDecoratorByFieldType = (field: PrismaDMMF.Field) => { args.push(`enum: Object.values(${field.type})`); } + if (field.relationName) { + args.push(`type: () => ${field.type}`); + } + return { name: 'ApiProperty', arguments: args.length > 0 ? [`{ ${args.join(', ')} }`] : [], diff --git a/tests/relation-splitting.test.ts b/tests/relation-splitting.test.ts index 8594afd..5f64a94 100644 --- a/tests/relation-splitting.test.ts +++ b/tests/relation-splitting.test.ts @@ -80,7 +80,7 @@ describe('Relation Splitting Generation', () => { expect(userRelations).toContain('import { Post } from "./"'); // Should have decorators for relations - expect(userRelations).toContain('@ApiProperty({ isArray: true })'); + expect(userRelations).toContain('@ApiProperty({ isArray: true, type: () => Post })'); }); it('should generate combined User class extending base', () => { diff --git a/tests/swagger-generation.test.ts b/tests/swagger-generation.test.ts index 0d08d8b..b1c9ec3 100644 --- a/tests/swagger-generation.test.ts +++ b/tests/swagger-generation.test.ts @@ -32,6 +32,7 @@ describe('Swagger Generation', () => { expect(userModel).toContain('type: "string"'); expect(userModel).toContain('required: false'); expect(userModel).toContain('isArray: true'); + expect(userModel).toContain('type: () => Post'); }); it('should generate Post model with correct Swagger decorators', () => { From f93660f7901f19ad6e2b4863fa7428a3d64ff09d Mon Sep 17 00:00:00 2001 From: JackCme Date: Tue, 2 Sep 2025 16:39:24 +0900 Subject: [PATCH 2/3] revert: package-lock.json --- package-lock.json | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0cd865b..94d0c37 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "prisma-class-validator-generator", - "version": "6.0.0-beta.2", + "version": "5.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "prisma-class-validator-generator", - "version": "6.0.0-beta.2", + "version": "5.0.0", "license": "MIT", "dependencies": { "@prisma/client": "^6.12.0", @@ -24,6 +24,7 @@ "devDependencies": { "@types/node": "^24.0.15", "@types/pluralize": "0.0.33", + "@types/prettier": "^3.0.0", "@vitest/coverage-v8": "^3.2.4", "prisma": "^6.12.0", "typescript": "^5.8.3", @@ -1186,6 +1187,17 @@ "integrity": "sha512-JOqsl+ZoCpP4e8TDke9W79FDcSgPAR0l6pixx2JHkhnRjvShyYiAYw2LVsnA7K08Y6DeOnaU6ujmENO4os/cYg==", "dev": true }, + "node_modules/@types/prettier": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-3.0.0.tgz", + "integrity": "sha512-mFMBfMOz8QxhYVbuINtswBp9VL2b4Y0QqYHwqLz3YbgtfAcat2Dl6Y1o4e22S/OVE6Ebl9m7wWiMT2lSbAs1wA==", + "deprecated": "This is a stub types definition. prettier provides its own type definitions, so you do not need this installed.", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier": "*" + } + }, "node_modules/@types/validator": { "version": "13.15.2", "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.15.2.tgz", From 141de62db1b6948d0e5565bac38464efd404285f Mon Sep 17 00:00:00 2001 From: JackCme Date: Wed, 3 Sep 2025 07:34:21 +0900 Subject: [PATCH 3/3] fix prettier format --- tests/relation-splitting.test.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/relation-splitting.test.ts b/tests/relation-splitting.test.ts index 5f64a94..d0dcd1b 100644 --- a/tests/relation-splitting.test.ts +++ b/tests/relation-splitting.test.ts @@ -80,7 +80,9 @@ describe('Relation Splitting Generation', () => { expect(userRelations).toContain('import { Post } from "./"'); // Should have decorators for relations - expect(userRelations).toContain('@ApiProperty({ isArray: true, type: () => Post })'); + expect(userRelations).toContain( + '@ApiProperty({ isArray: true, type: () => Post })', + ); }); it('should generate combined User class extending base', () => {