Skip to content

Commit 45fd4de

Browse files
authored
Merge pull request #98 from prisma-idb/fix-filter-types
fix: update filter types to conditionally include Prisma filters based on field requirements
2 parents 81aa5c0 + 10f969a commit 45fd4de

File tree

6 files changed

+32
-7
lines changed

6 files changed

+32
-7
lines changed

packages/generator/src/fileCreators/idb-utils/filters/BigIntFilter.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,13 @@ export function addBigIntFilter(utilsFile: SourceFile, models: readonly Model[])
55
const bigIntFields = models.flatMap(({ fields }) => fields).filter((field) => field.type === "BigInt");
66
if (bigIntFields.length === 0) return;
77

8+
const nonNullableBigIntFieldPresent = bigIntFields.some(({ isRequired }) => isRequired);
89
const nullableBigIntFieldPresent = bigIntFields.some(({ isRequired }) => !isRequired);
9-
let filterType = "undefined | number | bigint | Prisma.BigIntFilter<unknown>";
10+
11+
let filterType = "undefined | number | bigint";
12+
if (nonNullableBigIntFieldPresent) {
13+
filterType += " | Prisma.BigIntFilter<unknown>";
14+
}
1015
if (nullableBigIntFieldPresent) {
1116
filterType += " | null | Prisma.BigIntNullableFilter<unknown>";
1217
}

packages/generator/src/fileCreators/idb-utils/filters/BoolFilter.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,13 @@ export function addBoolFilter(utilsFile: SourceFile, models: readonly Model[]) {
55
const booleanFields = models.flatMap(({ fields }) => fields).filter((field) => field.type === "Boolean");
66
if (booleanFields.length === 0) return;
77

8+
const nonNullableBooleanFieldPresent = booleanFields.some(({ isRequired }) => isRequired);
89
const nullableBooleanFieldPresent = booleanFields.some(({ isRequired }) => !isRequired);
9-
let filterType = "undefined | boolean | Prisma.BoolFilter<unknown>";
10+
11+
let filterType = "undefined | boolean";
12+
if (nonNullableBooleanFieldPresent) {
13+
filterType += " | Prisma.BoolFilter<unknown>";
14+
}
1015
if (nullableBooleanFieldPresent) {
1116
filterType += " | null | Prisma.BoolNullableFilter<unknown>";
1217
}

packages/generator/src/fileCreators/idb-utils/filters/BytesFilter.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,13 @@ export function addBytesFilter(utilsFile: SourceFile, models: readonly Model[])
55
const bytesFields = models.flatMap(({ fields }) => fields).filter((field) => field.type === "Bytes");
66
if (bytesFields.length === 0) return;
77

8+
const nonNullableBytesFieldPresent = bytesFields.some(({ isRequired }) => isRequired);
89
const nullableBytesFieldPresent = bytesFields.some(({ isRequired }) => !isRequired);
9-
let filterType = "undefined | Uint8Array | Prisma.BytesFilter<unknown>";
10+
11+
let filterType = "undefined | Uint8Array";
12+
if (nonNullableBytesFieldPresent) {
13+
filterType += " | Prisma.BytesFilter<unknown>";
14+
}
1015
if (nullableBytesFieldPresent) {
1116
filterType += " | null | Prisma.BytesNullableFilter<unknown>";
1217
}

packages/generator/src/fileCreators/idb-utils/filters/DateTimeFilter.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,13 @@ export function addDateTimeFilter(utilsFile: SourceFile, models: readonly Model[
55
const dateTimeFields = models.flatMap(({ fields }) => fields).filter((field) => field.type === "DateTime");
66
if (dateTimeFields.length === 0) return;
77

8+
const nonNullableDateTimeFieldPresent = dateTimeFields.some(({ isRequired }) => isRequired);
89
const nullableDateTimeFieldPresent = dateTimeFields.some(({ isRequired }) => !isRequired);
9-
let filterType = "undefined | Date | string | Prisma.DateTimeFilter<unknown>";
10+
11+
let filterType = "undefined | Date | string";
12+
if (nonNullableDateTimeFieldPresent) {
13+
filterType += " | Prisma.DateTimeFilter<unknown>";
14+
}
1015
if (nullableDateTimeFieldPresent) {
1116
filterType += " | null | Prisma.DateTimeNullableFilter<unknown>";
1217
}

packages/generator/src/fileCreators/idb-utils/filters/NumberFilter.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ export function addNumberFilter(utilsFile: SourceFile, models: readonly Model[])
99
if (intFields.length + floatFields.length === 0) return;
1010
let filterType = "undefined | number";
1111

12-
if (intFields.length) filterType += "| Prisma.IntFilter<unknown>";
13-
if (floatFields.length) filterType += "| Prisma.FloatFilter<unknown>";
12+
if (intFields.some(({ isRequired }) => isRequired)) filterType += "| Prisma.IntFilter<unknown>";
13+
if (floatFields.some(({ isRequired }) => isRequired)) filterType += "| Prisma.FloatFilter<unknown>";
1414

1515
if (intFields.some(({ isRequired }) => !isRequired)) filterType += "| Prisma.IntNullableFilter<unknown>";
1616
if (floatFields.some(({ isRequired }) => !isRequired)) filterType += "| Prisma.FloatNullableFilter<unknown>";

packages/generator/src/fileCreators/idb-utils/filters/StringFilter.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,13 @@ export function addStringFilter(utilsFile: SourceFile, models: readonly Model[])
55
const stringFields = models.flatMap(({ fields }) => fields).filter((field) => field.type === "String");
66
if (stringFields.length === 0) return;
77

8+
const nonNullableStringFieldPresent = stringFields.some(({ isRequired }) => isRequired);
89
const nullableStringFieldPresent = stringFields.some(({ isRequired }) => !isRequired);
9-
let filterType = "undefined | string | Prisma.StringFilter<unknown>";
10+
11+
let filterType = "undefined | string";
12+
if (nonNullableStringFieldPresent) {
13+
filterType += " | Prisma.StringFilter<unknown>";
14+
}
1015
if (nullableStringFieldPresent) {
1116
filterType += " | null | Prisma.StringNullableFilter<unknown>";
1217
}

0 commit comments

Comments
 (0)