Skip to content

Commit 4ed3fed

Browse files
authored
fix: Mandatory where filter typings
2 parents 169bf36 + 1355560 commit 4ed3fed

2 files changed

Lines changed: 20 additions & 7 deletions

File tree

src/bin/gqm/permissions.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,15 @@ export const generatePermissionTypes = (models: Models) => {
3131
sourceFile.addStatements((writer) =>
3232
writer.write(`export type ${model.name}Where = `).inlineBlock(() => {
3333
for (const field of model.fields.filter((field) => field.filterable)) {
34-
const optional = typeof field.filterable !== 'object' || field.filterable.nonNull !== true ? '?' : '';
3534
if (field.kind === 'relation') {
36-
writer.writeLine(`${field.name}${optional}: ${field.type}Where,`);
35+
writer.writeLine(`${field.name}?: ${field.type}Where,`);
3736
} else if (!field.kind || field.kind === 'primitive') {
38-
writer.writeLine(`${field.name}${optional}: ${PRIMITIVE_TYPES[field.type]} | ${PRIMITIVE_TYPES[field.type]}[],`);
37+
writer.writeLine(`${field.name}?: ${PRIMITIVE_TYPES[field.type]} | readonly ${PRIMITIVE_TYPES[field.type]}[],`);
3938
} else {
4039
if (field.kind === 'enum') {
4140
usedEnums.add(field.type);
4241
}
43-
writer.writeLine(`${field.name}${optional}: ${field.type} | ${field.type}[],`);
42+
writer.writeLine(`${field.name}?: ${field.type} | readonly ${field.type}[],`);
4443
}
4544
}
4645
}),

src/schema/generate.ts

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,13 @@ export const generateDefinitions = ({
5858
list: !field.toOne,
5959
nonNull: !field.toOne,
6060
args: [
61-
{ name: 'where', type: `${targetModel.name}Where` },
61+
{
62+
name: 'where',
63+
type: `${targetModel.name}Where`,
64+
nonNull: targetModel.fields.some(
65+
({ filterable }) => typeof filterable === 'object' && filterable.nonNull === true,
66+
),
67+
},
6268
...(targetModel.fields.some(({ searchable }) => searchable) ? [{ name: 'search', type: 'String' }] : []),
6369
...(targetModel.fields.some(({ orderable }) => orderable)
6470
? [{ name: 'orderBy', type: `${targetModel.name}OrderBy`, list: true }]
@@ -210,7 +216,11 @@ export const generateDefinitions = ({
210216
list: true,
211217
nonNull: true,
212218
args: [
213-
{ name: 'where', type: `${model.name}Where` },
219+
{
220+
name: 'where',
221+
type: `${model.name}Where`,
222+
nonNull: model.fields.some(({ filterable }) => typeof filterable === 'object' && filterable.nonNull === true),
223+
},
214224
...(model.fields.some(({ searchable }) => searchable) ? [{ name: 'search', type: 'String' }] : []),
215225
...(model.fields.some(({ orderable }) => orderable)
216226
? [{ name: 'orderBy', type: `${model.name}OrderBy`, list: true }]
@@ -227,7 +237,11 @@ export const generateDefinitions = ({
227237
type: `${model.name}Aggregate`,
228238
nonNull: true,
229239
args: [
230-
{ name: 'where', type: `${model.name}Where` },
240+
{
241+
name: 'where',
242+
type: `${model.name}Where`,
243+
nonNull: model.fields.some(({ filterable }) => typeof filterable === 'object' && filterable.nonNull === true),
244+
},
231245
...(model.fields.some(({ searchable }) => searchable) ? [{ name: 'search', type: 'String' }] : []),
232246
{ name: 'limit', type: 'Int' },
233247
{ name: 'offset', type: 'Int' },

0 commit comments

Comments
 (0)