Skip to content

Commit dc3e268

Browse files
committed
feat: Generate commented class if re-export found
1 parent e7a2b1f commit dc3e268

File tree

7 files changed

+53
-8
lines changed

7 files changed

+53
-8
lines changed

src/example/user/user.resolver.ts

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Args, Info, Mutation, Query, Resolver } from '@nestjs/graphql';
22
import { PrismaSelect } from '@paljs/plugins';
33
import { PrismaClient } from '@prisma/client';
4-
import * as Prisma from '@prisma/client';
4+
import { GraphQLResolveInfo } from 'graphql';
55

66
import { AggregateUserArgs } from '../../@generated/user/aggregate-user.args';
77
import { AggregateUser } from '../../@generated/user/aggregate-user.output';
@@ -33,7 +33,7 @@ export class UserResolver {
3333
* Query for single user.
3434
*/
3535
@Query(() => [User])
36-
async users(@Args('where') where: UserWhereInput, @Info() info) {
36+
async users(@Args('where') where: UserWhereInput, @Info() info: GraphQLResolveInfo) {
3737
const select = new PrismaSelect(info).value;
3838
// console.log('select', select);
3939
return await prisma.user.findMany({ where, ...select });
@@ -45,10 +45,7 @@ export class UserResolver {
4545
}
4646

4747
@Query(() => AggregateUser)
48-
async userAggregate(@Args() args: AggregateUserArgs, @Info() info) {
49-
console.log('args', args);
50-
const result = await prisma.user.aggregate(args as Prisma.AggregateUserArgs);
51-
console.log('result', result);
52-
return result;
48+
userAggregate(@Args() args: AggregateUserArgs) {
49+
return prisma.user.aggregate(args);
5350
}
5451
}

src/generate-input/generate-input.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { DecoratorPropertyType, generateClass } from '../generate-class';
44
import { generateImport, generateProjectImport } from '../generate-import';
55
import { Field, generateProperty } from '../generate-property';
66
import { GeneratorConfiguration, PrismaDMMF } from '../types';
7-
import { fieldLocationToKind, toPropertyType } from '../utils';
7+
import { checkExport, fieldLocationToKind, toPropertyType } from '../utils';
88
import { getMatchingInputType } from './get-matching-input-type';
99

1010
type GenerateInputArgs = {
@@ -68,4 +68,6 @@ export function generateInput(args: GenerateInputArgs) {
6868
config,
6969
});
7070
}
71+
72+
checkExport({ name: className, sourceFile, classDeclaration });
7173
}

src/generate-model/generate-model.spec.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,4 +268,21 @@ describe('generate models', () => {
268268
specifier: 'decimal.js',
269269
});
270270
});
271+
272+
it('generated commented class if reexport found', async () => {
273+
await getResult({
274+
schema: `model User {
275+
id String @id
276+
}`,
277+
sourceFileText: `
278+
export { User } from 'src/user/model'
279+
export { User as UserModel } from 'src/user2/model'
280+
`,
281+
});
282+
sourceText = sourceFile.getText();
283+
const sourceClass = sourceFile.getClasses();
284+
expect(sourceClass).toHaveLength(0);
285+
expect(sourceText).toContain(`export { User } from 'src/user/model'`);
286+
expect(sourceText).toContain(`// export class User`);
287+
});
271288
});

src/generate-model/generate-model.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { generateClass } from '../generate-class';
44
import { generateImport } from '../generate-import';
55
import { generateProperty } from '../generate-property';
66
import { GeneratorConfiguration, PrismaDMMF } from '../types';
7+
import { checkExport } from '../utils';
78

89
type GenerateModelArgs = {
910
model: PrismaDMMF.Model;
@@ -37,4 +38,5 @@ export function generateModel(args: GenerateModelArgs) {
3738
config,
3839
});
3940
});
41+
checkExport({ name: model.name, classDeclaration, sourceFile });
4042
}

src/generate-object.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { generateClass } from './generate-class';
44
import { generateImport } from './generate-import';
55
import { generateProperty, Model } from './generate-property';
66
import { GeneratorConfiguration } from './types';
7+
import { checkExport } from './utils';
78

89
type GenerateObjectArgs = {
910
sourceFile: SourceFile;
@@ -37,4 +38,6 @@ export function generateObject(args: GenerateObjectArgs) {
3738
config,
3839
});
3940
});
41+
42+
checkExport({ name: model.name, sourceFile, classDeclaration });
4043
}

src/utils/check-export.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { ClassDeclaration, SourceFile } from 'ts-morph';
2+
3+
type CommentArgs = {
4+
sourceFile: SourceFile;
5+
name: string;
6+
classDeclaration: ClassDeclaration;
7+
};
8+
9+
export function checkExport(args: CommentArgs) {
10+
const { sourceFile, name, classDeclaration } = args;
11+
const exportDeclaration = sourceFile.getExportDeclaration((d) => {
12+
return Boolean(d.getNamedExports().find((x) => x.getNameNode().getText() === name));
13+
});
14+
if (exportDeclaration) {
15+
const commentedText = classDeclaration
16+
.getText()
17+
.split('\n')
18+
.map((x) => `// ${x}`);
19+
classDeclaration.remove();
20+
sourceFile.addStatements(['\n', ...commentedText]);
21+
}
22+
}

src/utils/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ export { createConfig } from './create-config';
44
import { ObjectLiteralExpression, PropertyAssignment, StructureKind } from 'ts-morph';
55

66
import { PrismaDMMF, TypeRecord } from '../types';
7+
export { checkExport } from './check-export';
8+
79
export { generateFileName } from './generate-file-name';
810

911
type ToGraphqlImportTypeArgs = {

0 commit comments

Comments
 (0)