Skip to content

Commit

Permalink
fix: Remove unused classes when both noAtomicOperations and emitSingl…
Browse files Browse the repository at this point in the history
…e enabled

close: unlight#89
  • Loading branch information
unlight committed Mar 12, 2022
1 parent 7934b98 commit 41ce3c1
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 10 deletions.
3 changes: 1 addition & 2 deletions src/generate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { argsType } from './handlers/args-type';
import { combineScalarFilters } from './handlers/combine-scalar-filters';
import { createAggregateInput } from './handlers/create-aggregate-input';
import { emitSingle } from './handlers/emit-single';
import { beforeGenerateFiles, generateFiles } from './handlers/generate-files';
import { generateFiles } from './handlers/generate-files';
import { inputType } from './handlers/input-type';
import { modelData } from './handlers/model-data';
import { modelOutputType } from './handlers/model-output-type';
Expand Down Expand Up @@ -54,7 +54,6 @@ export async function generate(
eventEmitter.on('AggregateOutput', createAggregateInput);
eventEmitter.on('InputType', inputType);
eventEmitter.on('ArgsType', argsType);
eventEmitter.on('BeforeGenerateFiles', beforeGenerateFiles);
eventEmitter.on('GenerateFiles', generateFiles);

const config = createConfig(generator.config);
Expand Down
10 changes: 3 additions & 7 deletions src/handlers/generate-files.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@ import {
import { ImportDeclarationMap } from '../helpers/import-declaration-map';
import { EventArguments } from '../types';

export function beforeGenerateFiles(args: EventArguments) {
const { config, project, output } = args;
export async function generateFiles(args: EventArguments) {
const { project, config, output, eventEmitter } = args;

if (config.emitSingle) {
const rootDirectory =
project.getDirectory(output) || project.createDirectory(output);
const sourceFile =
rootDirectory.getSourceFile('index.ts') ||
rootDirectory.createSourceFile('index.ts');
rootDirectory.createSourceFile('index.ts', undefined, { overwrite: true });
const statements = project.getSourceFiles().flatMap(s => {
if (s === sourceFile) {
return [];
Expand Down Expand Up @@ -105,10 +105,6 @@ export function beforeGenerateFiles(args: EventArguments) {
statements: [...imports.toStatements(), ...enums, ...classes],
});
}
}

export async function generateFiles(args: EventArguments) {
const { project, config, output, eventEmitter } = args;

if (config.emitCompiled) {
project.compilerOptions.set({
Expand Down
5 changes: 4 additions & 1 deletion src/helpers/factory-get-source-file.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ export function factoryGetSourceFile(args: {
});
filePath = `${output}/${filePath}`;

return project.getSourceFile(filePath) || project.createSourceFile(filePath);
return (
project.getSourceFile(filePath) ||
project.createSourceFile(filePath, undefined, { overwrite: true })
);
};
}
29 changes: 29 additions & 0 deletions src/test/generate.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1090,6 +1090,35 @@ describe('get rid of atomic number operations', () => {
});
});

describe('noAtomicOperations with emitSingle and combineScalarFilters', () => {
before(async () => {
({ project, sourceFiles } = await testGenerate({
schema: `
model User {
id String @id
age Int
}
`,
options: [
`outputFilePattern = "{name}.{type}.ts"`,
`noAtomicOperations = true`,
`emitSingle = true`,
`combineScalarFilters = true`,
],
}));
});

it('FieldUpdateOperationsInput should not exists', () => {
const s = testSourceFile({
project,
file: 'index.ts',
});

const classDeclaration = s.sourceFile.getClass('IntFieldUpdateOperationsInput');
expect(classDeclaration).toBeUndefined();
});
});

describe('combine scalar filters', () => {
before(async () => {
({ project, sourceFiles } = await testGenerate({
Expand Down

0 comments on commit 41ce3c1

Please sign in to comment.