Skip to content

Commit 471c405

Browse files
committed
fix: Combine scalars option with nullable relation filter
1 parent 6a9cb7f commit 471c405

File tree

3 files changed

+37
-8
lines changed

3 files changed

+37
-8
lines changed

Taskfile

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,36 +25,36 @@ compatibilty_check() {
2525
set -x
2626
rm -rf ./@generated && npm run prisma:g && npm run tscheck
2727

28-
echo Check noAtomicOperations
28+
echo === Check noAtomicOperations ===
2929
sed -i 's/noAtomicOperations *= false/noAtomicOperations = true/g' prisma/schema.prisma
3030
rm -rf ./@generated && npm run prisma:g && npm run tscheck
3131
sed -i 's/noAtomicOperations *= true/noAtomicOperations = false/g' prisma/schema.prisma
3232

33-
echo Check combineScalarFilters
33+
echo === Check combineScalarFilters ===
3434
sed -i 's/combineScalarFilters *= false/combineScalarFilters = true/g' prisma/schema.prisma
3535
rm -rf ./@generated && npm run prisma:g && npm run tscheck
3636
sed -i 's/combineScalarFilters *= true/combineScalarFilters = false/g' prisma/schema.prisma
3737

38-
echo Check Switching reExport
38+
echo === Switching reExport ===
3939
sed -i 's/reExport *= None/reExport = All/g' prisma/schema.prisma
4040
rm -rf ./@generated && npm run prisma:g && npm run tscheck
4141
sed -i 's/reExport *= All/reExport = None/g' prisma/schema.prisma
4242

43-
echo Check emitSingle
43+
echo === Check emitSingle ===
4444
sed -i 's/emitSingle *= false/emitSingle = true/g' prisma/schema.prisma
4545
rm -rf ./@generated && npm run prisma:g
4646
npx tsc --noEmit --skipLibCheck --experimentalDecorators ./@generated/index.ts
4747
npx ts-node ./@generated/index.ts
4848

49-
echo Check emitCompiled
49+
echo === Check emitCompiled ===
5050
sed -i 's/emitCompiled *= false/emitCompiled = true/g' prisma/schema.prisma
5151
rm -rf ./@generated && npm run prisma:g
5252
node ./@generated/index.js
5353

5454
sed -i 's/emitCompiled *= true/emitCompiled = false/g' prisma/schema.prisma
5555
sed -i 's/emitSingle *= true/emitSingle = false/g' prisma/schema.prisma
5656

57-
echo Check requireSingleFieldsInWhereUniqueInput
57+
echo === Check requireSingleFieldsInWhereUniqueInput ===
5858
sed -i 's/requireSingleFieldsInWhereUniqueInput *= false/requireSingleFieldsInWhereUniqueInput = true/g' prisma/schema.prisma
5959
rm -rf ./@generated && npm run prisma:g && npm run tscheck
6060
sed -i 's/requireSingleFieldsInWhereUniqueInput *= true/requireSingleFieldsInWhereUniqueInput = false/g' prisma/schema.prisma

src/handlers/combine-scalar-filters.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ function beforeGenerateField(field: DMMF.SchemaArg): void {
4040
}
4141

4242
function replaceBogus(name: string) {
43-
return name.replaceAll(/(Nullable|Nested)/g, '');
43+
return name.replaceAll(/Nullable|Nested/g, '');
4444
}
4545

4646
function isContainBogus(name: string) {
@@ -66,7 +66,7 @@ function isScalarFilter(inputType: InputType) {
6666
}
6767

6868
function postBegin(args: EventArguments) {
69-
const { schema } = args;
69+
const { schema, modelNames } = args;
7070
const inputTypes = schema.inputObjectTypes.prisma;
7171
const enumTypes = schema.enumTypes.model || [];
7272
const types = [
@@ -117,5 +117,11 @@ function postBegin(args: EventArguments) {
117117
]);
118118
}
119119

120+
for (const modelName of modelNames) {
121+
replaceBogusFilters(`${modelName}RelationFilter`, [
122+
`${modelName}NullableRelationFilter`,
123+
]);
124+
}
125+
120126
remove(inputTypes, inputType => isContainBogus(inputType.name));
121127
}

src/test/combine-scalar-filters.spec.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,3 +235,26 @@ describe('combine scalar filters on array', () => {
235235
'no errors';
236236
});
237237
});
238+
239+
describe('empty relation filter input', () => {
240+
before(async () => {
241+
({ project, sourceFiles } = await testGenerate({
242+
schema: `
243+
model Article {
244+
id String @id @default(cuid())
245+
comments Comment[]
246+
}
247+
model Comment {
248+
id String @id @default(cuid())
249+
article Article? @relation(fields: [articleId], references: [id])
250+
articleId String?
251+
}
252+
`,
253+
options: [`combineScalarFilters = true`],
254+
}));
255+
});
256+
257+
it('smoke', () => {
258+
'no errors';
259+
});
260+
});

0 commit comments

Comments
 (0)