diff --git a/packages/query-graphql/src/types/create-many-args.type.ts b/packages/query-graphql/src/types/create-many-args.type.ts index f85b20aed..b9c19530b 100644 --- a/packages/query-graphql/src/types/create-many-args.type.ts +++ b/packages/query-graphql/src/types/create-many-args.type.ts @@ -1,5 +1,7 @@ import { Class } from '@nestjs-query/core'; -import { Field, ArgsType } from 'type-graphql'; +import { Type } from 'class-transformer'; +import { ValidateNested } from 'class-validator'; +import { ArgsType, Field } from 'type-graphql'; export interface CreateManyArgsType { input: C[]; @@ -8,6 +10,8 @@ export interface CreateManyArgsType { export function CreateManyArgsType(ItemClass: Class): Class> { @ArgsType() class CreateManyArgs implements CreateManyArgsType { + @Type(() => ItemClass) + @ValidateNested({ each: true }) @Field(() => [ItemClass], { description: 'Array of records to create' }) input!: C[]; } diff --git a/packages/query-graphql/src/types/create-one-args.type.ts b/packages/query-graphql/src/types/create-one-args.type.ts index e1c379f79..46b62abc2 100644 --- a/packages/query-graphql/src/types/create-one-args.type.ts +++ b/packages/query-graphql/src/types/create-one-args.type.ts @@ -1,5 +1,7 @@ import { Class } from '@nestjs-query/core'; -import { Field, ArgsType } from 'type-graphql'; +import { Type } from 'class-transformer'; +import { ValidateNested } from 'class-validator'; +import { ArgsType, Field } from 'type-graphql'; export interface CreateOneArgsType { input: C; @@ -8,6 +10,8 @@ export interface CreateOneArgsType { export function CreateOneArgsType(ItemClass: Class): Class> { @ArgsType() class CreateOneArgs implements CreateOneArgsType { + @Type(() => ItemClass) + @ValidateNested() @Field(() => ItemClass, { description: 'The record to create' }) input!: C; } diff --git a/packages/query-graphql/src/types/delete-many-args.type.ts b/packages/query-graphql/src/types/delete-many-args.type.ts index aef3d3203..192135602 100644 --- a/packages/query-graphql/src/types/delete-many-args.type.ts +++ b/packages/query-graphql/src/types/delete-many-args.type.ts @@ -9,8 +9,8 @@ export interface DeleteManyArgsType { export function DeleteManyArgsType(FilterType: Class>): Class> { @ArgsType() class DeleteManyArgs implements DeleteManyArgsType { - @Field(() => FilterType, { description: 'Filter to find records to delete' }) @IsNotEmptyObject() + @Field(() => FilterType, { description: 'Filter to find records to delete' }) input!: Filter; } return DeleteManyArgs; diff --git a/packages/query-graphql/src/types/delete-one-args.type.ts b/packages/query-graphql/src/types/delete-one-args.type.ts index e98a2f208..98fc33fb7 100644 --- a/packages/query-graphql/src/types/delete-one-args.type.ts +++ b/packages/query-graphql/src/types/delete-one-args.type.ts @@ -1,5 +1,6 @@ import { Class } from '@nestjs-query/core'; import { Field, ID, ArgsType } from 'type-graphql'; +import { IsNotEmpty } from 'class-validator'; export interface DeleteOneArgsType { id: string | number; @@ -13,6 +14,7 @@ export function DeleteOneArgsType(): Class { } @ArgsType() class DeleteOneArgs implements DeleteOneArgsType { + @IsNotEmpty() @Field(() => ID, { description: 'The id of the record to delete.' }) id!: string | number; } diff --git a/packages/query-graphql/src/types/update-many-args.type.ts b/packages/query-graphql/src/types/update-many-args.type.ts index 2bb28c666..3f512e979 100644 --- a/packages/query-graphql/src/types/update-many-args.type.ts +++ b/packages/query-graphql/src/types/update-many-args.type.ts @@ -1,6 +1,7 @@ import { DeepPartial, Filter, Class } from '@nestjs-query/core'; import { Field, ArgsType } from 'type-graphql'; -import { IsNotEmptyObject } from 'class-validator'; +import { IsNotEmptyObject, ValidateNested } from 'class-validator'; +import { Type } from 'class-transformer'; export interface UpdateManyArgsType> { filter: Filter; @@ -13,10 +14,12 @@ export function UpdateManyArgsType>( ): Class> { @ArgsType() class UpdateManyArgs implements UpdateManyArgsType { - @Field(() => FilterType, { description: 'Filter used to find fields to update' }) @IsNotEmptyObject() + @Field(() => FilterType, { description: 'Filter used to find fields to update' }) filter!: Filter; + @Type(() => UpdateType) + @ValidateNested() @Field(() => UpdateType, { description: 'The update to apply to all records found using the filter' }) input!: U; } diff --git a/packages/query-graphql/src/types/update-one-args.type.ts b/packages/query-graphql/src/types/update-one-args.type.ts index 5b70ba6c4..ca57399ae 100644 --- a/packages/query-graphql/src/types/update-one-args.type.ts +++ b/packages/query-graphql/src/types/update-one-args.type.ts @@ -1,5 +1,7 @@ import { DeepPartial, Class } from '@nestjs-query/core'; import { Field, ID, ArgsType } from 'type-graphql'; +import { IsNotEmpty, ValidateNested } from 'class-validator'; +import { Type } from 'class-transformer'; export interface UpdateOneArgsType> { id: string | number; @@ -9,9 +11,12 @@ export interface UpdateOneArgsType> { export function UpdateOneArgsType>(UpdateType: Class): Class> { @ArgsType() class UpdateOneArgs implements UpdateOneArgsType { + @IsNotEmpty() @Field(() => ID, { description: 'The id of the record to update' }) id!: string | number; + @Type(() => UpdateType) + @ValidateNested() @Field(() => UpdateType, { description: 'The update to apply.' }) input!: U; }