From 763534ff45a386ea79d55cd9e1a1ea24ea25c6ae Mon Sep 17 00:00:00 2001 From: Charles Bochet Date: Thu, 15 Jun 2023 12:08:13 +0200 Subject: [PATCH] Add update, create and delete pipelineProgress endpoints (#297) --- front/src/generated/graphql.tsx | 61 +++++++++++++++++++ ...d-one-without-pipeline-progresses.input.ts | 13 ++-- ...ithout-pipeline-progresses-nested.input.ts | 23 ++----- ...d-one-without-pipeline-progresses.input.ts | 11 ++-- ...ithout-pipeline-progresses-nested.input.ts | 17 ++---- .../resolvers/pipeline-progress.resolver.ts | 44 ++++++++++++- server/src/database/schema.prisma | 26 ++++++++ 7 files changed, 150 insertions(+), 45 deletions(-) diff --git a/front/src/generated/graphql.tsx b/front/src/generated/graphql.tsx index 3b694e9ce..80feb937c 100644 --- a/front/src/generated/graphql.tsx +++ b/front/src/generated/graphql.tsx @@ -361,6 +361,10 @@ export type EnumCommentableTypeFilter = { notIn?: InputMaybe>; }; +export type EnumPipelineProgressableTypeFieldUpdateOperationsInput = { + set?: InputMaybe; +}; + export type EnumPipelineProgressableTypeFilter = { equals?: InputMaybe; in?: InputMaybe>; @@ -401,10 +405,13 @@ export type Mutation = { createOneCommentThread: CommentThread; createOneCompany: Company; createOnePerson: Person; + createOnePipelineProgress: PipelineProgress; deleteManyCompany: AffectedRows; deleteManyPerson: AffectedRows; + deleteManyPipelineProgress: AffectedRows; updateOneCompany?: Maybe; updateOnePerson?: Maybe; + updateOnePipelineProgress?: Maybe; }; @@ -428,6 +435,11 @@ export type MutationCreateOnePersonArgs = { }; +export type MutationCreateOnePipelineProgressArgs = { + data: PipelineProgressCreateInput; +}; + + export type MutationDeleteManyCompanyArgs = { where?: InputMaybe; }; @@ -438,6 +450,11 @@ export type MutationDeleteManyPersonArgs = { }; +export type MutationDeleteManyPipelineProgressArgs = { + where?: InputMaybe; +}; + + export type MutationUpdateOneCompanyArgs = { data: CompanyUpdateInput; where: CompanyWhereUniqueInput; @@ -449,6 +466,12 @@ export type MutationUpdateOnePersonArgs = { where: PersonWhereUniqueInput; }; + +export type MutationUpdateOnePipelineProgressArgs = { + data: PipelineProgressUpdateInput; + where: PipelineProgressWhereUniqueInput; +}; + export type NestedBoolFilter = { equals?: InputMaybe; not?: InputMaybe; @@ -664,6 +687,10 @@ export type Pipeline = { updatedAt: Scalars['DateTime']; }; +export type PipelineCreateNestedOneWithoutPipelineProgressesInput = { + connect?: InputMaybe; +}; + export type PipelineOrderByWithRelationInput = { createdAt?: InputMaybe; deletedAt?: InputMaybe; @@ -689,6 +716,17 @@ export type PipelineProgress = { updatedAt: Scalars['DateTime']; }; +export type PipelineProgressCreateInput = { + createdAt?: InputMaybe; + deletedAt?: InputMaybe; + id: Scalars['String']; + pipeline: PipelineCreateNestedOneWithoutPipelineProgressesInput; + pipelineStage: PipelineStageCreateNestedOneWithoutPipelineProgressesInput; + progressableId: Scalars['String']; + progressableType: PipelineProgressableType; + updatedAt?: InputMaybe; +}; + export type PipelineProgressListRelationFilter = { every?: InputMaybe; none?: InputMaybe; @@ -724,6 +762,17 @@ export enum PipelineProgressScalarFieldEnum { WorkspaceId = 'workspaceId' } +export type PipelineProgressUpdateInput = { + createdAt?: InputMaybe; + deletedAt?: InputMaybe; + id?: InputMaybe; + pipeline?: InputMaybe; + pipelineStage?: InputMaybe; + progressableId?: InputMaybe; + progressableType?: InputMaybe; + updatedAt?: InputMaybe; +}; + export type PipelineProgressWhereInput = { AND?: InputMaybe>; NOT?: InputMaybe>; @@ -778,6 +827,10 @@ export type PipelineStage = { updatedAt: Scalars['DateTime']; }; +export type PipelineStageCreateNestedOneWithoutPipelineProgressesInput = { + connect?: InputMaybe; +}; + export type PipelineStageListRelationFilter = { every?: InputMaybe; none?: InputMaybe; @@ -818,6 +871,10 @@ export enum PipelineStageScalarFieldEnum { WorkspaceId = 'workspaceId' } +export type PipelineStageUpdateOneRequiredWithoutPipelineProgressesNestedInput = { + connect?: InputMaybe; +}; + export type PipelineStageWhereInput = { AND?: InputMaybe>; NOT?: InputMaybe>; @@ -838,6 +895,10 @@ export type PipelineStageWhereUniqueInput = { id?: InputMaybe; }; +export type PipelineUpdateOneRequiredWithoutPipelineProgressesNestedInput = { + connect?: InputMaybe; +}; + export type PipelineWhereInput = { AND?: InputMaybe>; NOT?: InputMaybe>; diff --git a/server/src/api/@generated/pipeline-stage/pipeline-stage-create-nested-one-without-pipeline-progresses.input.ts b/server/src/api/@generated/pipeline-stage/pipeline-stage-create-nested-one-without-pipeline-progresses.input.ts index ae2cccfed..74fbdcdae 100644 --- a/server/src/api/@generated/pipeline-stage/pipeline-stage-create-nested-one-without-pipeline-progresses.input.ts +++ b/server/src/api/@generated/pipeline-stage/pipeline-stage-create-nested-one-without-pipeline-progresses.input.ts @@ -1,22 +1,17 @@ import { Field } from '@nestjs/graphql'; import { InputType } from '@nestjs/graphql'; import { PipelineStageCreateWithoutPipelineProgressesInput } from './pipeline-stage-create-without-pipeline-progresses.input'; -import { Type } from 'class-transformer'; +import { HideField } from '@nestjs/graphql'; import { PipelineStageCreateOrConnectWithoutPipelineProgressesInput } from './pipeline-stage-create-or-connect-without-pipeline-progresses.input'; import { PipelineStageWhereUniqueInput } from './pipeline-stage-where-unique.input'; +import { Type } from 'class-transformer'; @InputType() export class PipelineStageCreateNestedOneWithoutPipelineProgressesInput { - @Field(() => PipelineStageCreateWithoutPipelineProgressesInput, { - nullable: true, - }) - @Type(() => PipelineStageCreateWithoutPipelineProgressesInput) + @HideField() create?: PipelineStageCreateWithoutPipelineProgressesInput; - @Field(() => PipelineStageCreateOrConnectWithoutPipelineProgressesInput, { - nullable: true, - }) - @Type(() => PipelineStageCreateOrConnectWithoutPipelineProgressesInput) + @HideField() connectOrCreate?: PipelineStageCreateOrConnectWithoutPipelineProgressesInput; @Field(() => PipelineStageWhereUniqueInput, { nullable: true }) diff --git a/server/src/api/@generated/pipeline-stage/pipeline-stage-update-one-required-without-pipeline-progresses-nested.input.ts b/server/src/api/@generated/pipeline-stage/pipeline-stage-update-one-required-without-pipeline-progresses-nested.input.ts index f44f45686..59755e648 100644 --- a/server/src/api/@generated/pipeline-stage/pipeline-stage-update-one-required-without-pipeline-progresses-nested.input.ts +++ b/server/src/api/@generated/pipeline-stage/pipeline-stage-update-one-required-without-pipeline-progresses-nested.input.ts @@ -1,39 +1,28 @@ import { Field } from '@nestjs/graphql'; import { InputType } from '@nestjs/graphql'; import { PipelineStageCreateWithoutPipelineProgressesInput } from './pipeline-stage-create-without-pipeline-progresses.input'; -import { Type } from 'class-transformer'; +import { HideField } from '@nestjs/graphql'; import { PipelineStageCreateOrConnectWithoutPipelineProgressesInput } from './pipeline-stage-create-or-connect-without-pipeline-progresses.input'; import { PipelineStageUpsertWithoutPipelineProgressesInput } from './pipeline-stage-upsert-without-pipeline-progresses.input'; import { PipelineStageWhereUniqueInput } from './pipeline-stage-where-unique.input'; +import { Type } from 'class-transformer'; import { PipelineStageUpdateWithoutPipelineProgressesInput } from './pipeline-stage-update-without-pipeline-progresses.input'; @InputType() export class PipelineStageUpdateOneRequiredWithoutPipelineProgressesNestedInput { - @Field(() => PipelineStageCreateWithoutPipelineProgressesInput, { - nullable: true, - }) - @Type(() => PipelineStageCreateWithoutPipelineProgressesInput) + @HideField() create?: PipelineStageCreateWithoutPipelineProgressesInput; - @Field(() => PipelineStageCreateOrConnectWithoutPipelineProgressesInput, { - nullable: true, - }) - @Type(() => PipelineStageCreateOrConnectWithoutPipelineProgressesInput) + @HideField() connectOrCreate?: PipelineStageCreateOrConnectWithoutPipelineProgressesInput; - @Field(() => PipelineStageUpsertWithoutPipelineProgressesInput, { - nullable: true, - }) - @Type(() => PipelineStageUpsertWithoutPipelineProgressesInput) + @HideField() upsert?: PipelineStageUpsertWithoutPipelineProgressesInput; @Field(() => PipelineStageWhereUniqueInput, { nullable: true }) @Type(() => PipelineStageWhereUniqueInput) connect?: PipelineStageWhereUniqueInput; - @Field(() => PipelineStageUpdateWithoutPipelineProgressesInput, { - nullable: true, - }) - @Type(() => PipelineStageUpdateWithoutPipelineProgressesInput) + @HideField() update?: PipelineStageUpdateWithoutPipelineProgressesInput; } diff --git a/server/src/api/@generated/pipeline/pipeline-create-nested-one-without-pipeline-progresses.input.ts b/server/src/api/@generated/pipeline/pipeline-create-nested-one-without-pipeline-progresses.input.ts index 5478ee64b..e579d4de5 100644 --- a/server/src/api/@generated/pipeline/pipeline-create-nested-one-without-pipeline-progresses.input.ts +++ b/server/src/api/@generated/pipeline/pipeline-create-nested-one-without-pipeline-progresses.input.ts @@ -1,20 +1,17 @@ import { Field } from '@nestjs/graphql'; import { InputType } from '@nestjs/graphql'; import { PipelineCreateWithoutPipelineProgressesInput } from './pipeline-create-without-pipeline-progresses.input'; -import { Type } from 'class-transformer'; +import { HideField } from '@nestjs/graphql'; import { PipelineCreateOrConnectWithoutPipelineProgressesInput } from './pipeline-create-or-connect-without-pipeline-progresses.input'; import { PipelineWhereUniqueInput } from './pipeline-where-unique.input'; +import { Type } from 'class-transformer'; @InputType() export class PipelineCreateNestedOneWithoutPipelineProgressesInput { - @Field(() => PipelineCreateWithoutPipelineProgressesInput, { nullable: true }) - @Type(() => PipelineCreateWithoutPipelineProgressesInput) + @HideField() create?: PipelineCreateWithoutPipelineProgressesInput; - @Field(() => PipelineCreateOrConnectWithoutPipelineProgressesInput, { - nullable: true, - }) - @Type(() => PipelineCreateOrConnectWithoutPipelineProgressesInput) + @HideField() connectOrCreate?: PipelineCreateOrConnectWithoutPipelineProgressesInput; @Field(() => PipelineWhereUniqueInput, { nullable: true }) diff --git a/server/src/api/@generated/pipeline/pipeline-update-one-required-without-pipeline-progresses-nested.input.ts b/server/src/api/@generated/pipeline/pipeline-update-one-required-without-pipeline-progresses-nested.input.ts index ed6de095a..3c55233a0 100644 --- a/server/src/api/@generated/pipeline/pipeline-update-one-required-without-pipeline-progresses-nested.input.ts +++ b/server/src/api/@generated/pipeline/pipeline-update-one-required-without-pipeline-progresses-nested.input.ts @@ -1,33 +1,28 @@ import { Field } from '@nestjs/graphql'; import { InputType } from '@nestjs/graphql'; import { PipelineCreateWithoutPipelineProgressesInput } from './pipeline-create-without-pipeline-progresses.input'; -import { Type } from 'class-transformer'; +import { HideField } from '@nestjs/graphql'; import { PipelineCreateOrConnectWithoutPipelineProgressesInput } from './pipeline-create-or-connect-without-pipeline-progresses.input'; import { PipelineUpsertWithoutPipelineProgressesInput } from './pipeline-upsert-without-pipeline-progresses.input'; import { PipelineWhereUniqueInput } from './pipeline-where-unique.input'; +import { Type } from 'class-transformer'; import { PipelineUpdateWithoutPipelineProgressesInput } from './pipeline-update-without-pipeline-progresses.input'; @InputType() export class PipelineUpdateOneRequiredWithoutPipelineProgressesNestedInput { - @Field(() => PipelineCreateWithoutPipelineProgressesInput, { nullable: true }) - @Type(() => PipelineCreateWithoutPipelineProgressesInput) + @HideField() create?: PipelineCreateWithoutPipelineProgressesInput; - @Field(() => PipelineCreateOrConnectWithoutPipelineProgressesInput, { - nullable: true, - }) - @Type(() => PipelineCreateOrConnectWithoutPipelineProgressesInput) + @HideField() connectOrCreate?: PipelineCreateOrConnectWithoutPipelineProgressesInput; - @Field(() => PipelineUpsertWithoutPipelineProgressesInput, { nullable: true }) - @Type(() => PipelineUpsertWithoutPipelineProgressesInput) + @HideField() upsert?: PipelineUpsertWithoutPipelineProgressesInput; @Field(() => PipelineWhereUniqueInput, { nullable: true }) @Type(() => PipelineWhereUniqueInput) connect?: PipelineWhereUniqueInput; - @Field(() => PipelineUpdateWithoutPipelineProgressesInput, { nullable: true }) - @Type(() => PipelineUpdateWithoutPipelineProgressesInput) + @HideField() update?: PipelineUpdateWithoutPipelineProgressesInput; } diff --git a/server/src/api/resolvers/pipeline-progress.resolver.ts b/server/src/api/resolvers/pipeline-progress.resolver.ts index ebb0f1e93..9f7123725 100644 --- a/server/src/api/resolvers/pipeline-progress.resolver.ts +++ b/server/src/api/resolvers/pipeline-progress.resolver.ts @@ -1,4 +1,4 @@ -import { Resolver, Args, Query } from '@nestjs/graphql'; +import { Resolver, Args, Query, Mutation } from '@nestjs/graphql'; import { UseGuards } from '@nestjs/common'; import { JwtAuthGuard } from 'src/auth/guards/jwt.auth.guard'; import { PrismaService } from 'src/database/prisma.service'; @@ -7,6 +7,11 @@ import { AuthWorkspace } from './decorators/auth-workspace.decorator'; import { ArgsService } from './services/args.service'; import { FindManyPipelineProgressArgs } from '../@generated/pipeline-progress/find-many-pipeline-progress.args'; import { PipelineProgress } from '../@generated/pipeline-progress/pipeline-progress.model'; +import { UpdateOnePipelineProgressArgs } from '../@generated/pipeline-progress/update-one-pipeline-progress.args'; +import { Prisma } from '@prisma/client'; +import { AffectedRows } from '../@generated/prisma/affected-rows.output'; +import { DeleteManyPipelineProgressArgs } from '../@generated/pipeline-progress/delete-many-pipeline-progress.args'; +import { CreateOnePipelineProgressArgs } from '../@generated/pipeline-progress/create-one-pipeline-progress.args'; @UseGuards(JwtAuthGuard) @Resolver(() => PipelineProgress) @@ -28,4 +33,41 @@ export class PipelineProgressResolver { ); return this.prismaService.pipelineProgress.findMany(preparedArgs); } + + @Mutation(() => PipelineProgress, { + nullable: true, + }) + async updateOnePipelineProgress( + @Args() args: UpdateOnePipelineProgressArgs, + ): Promise { + return this.prismaService.pipelineProgress.update({ + ...args, + } satisfies UpdateOnePipelineProgressArgs as Prisma.PipelineProgressUpdateArgs); + } + + @Mutation(() => AffectedRows, { + nullable: false, + }) + async deleteManyPipelineProgress( + @Args() args: DeleteManyPipelineProgressArgs, + ): Promise { + return this.prismaService.pipelineProgress.deleteMany({ + ...args, + }); + } + + @Mutation(() => PipelineProgress, { + nullable: false, + }) + async createOnePipelineProgress( + @Args() args: CreateOnePipelineProgressArgs, + @AuthWorkspace() workspace: Workspace, + ): Promise { + return this.prismaService.pipelineProgress.create({ + data: { + ...args.data, + ...{ workspace: { connect: { id: workspace.id } } }, + }, + } satisfies CreateOnePipelineProgressArgs as Prisma.PipelineProgressCreateArgs); + } } diff --git a/server/src/database/schema.prisma b/server/src/database/schema.prisma index 95e7c025d..7fabde94a 100644 --- a/server/src/database/schema.prisma +++ b/server/src/database/schema.prisma @@ -77,6 +77,32 @@ generator nestgraphql { decorate_updateCompanyPerson_name = "HideField" decorate_updateCompanyPerson_from = "@nestjs/graphql" decorate_updateCompanyPerson_arguments = "[]" + + // PipelineProgress create: Only Allow pipelineStage and pipeline connect + decorate_createPipelineProgressPipeline_type = "*PipelineCreateNestedOneWithoutPipelineProgressesInput" + decorate_createPipelineProgressPipeline_field = "!(connect)" + decorate_createPipelineProgressPipeline_name = "HideField" + decorate_createPipelineProgressPipeline_from = "@nestjs/graphql" + decorate_createPipelineProgressPipeline_arguments = "[]" + + decorate_createPipelineProgressPipelineStage_type = "*PipelineStageCreateNestedOneWithoutPipelineProgressesInput" + decorate_createPipelineProgressPipelineStage_field = "!(connect)" + decorate_createPipelineProgressPipelineStage_name = "HideField" + decorate_createPipelineProgressPipelineStage_from = "@nestjs/graphql" + decorate_createPipelineProgressPipelineStage_arguments = "[]" + + // PipelineProgress update: Only Allow pipelineStage and pipeline connect + decorate_updatePipelineProgressPipeline_type = "*PipelineUpdateOneRequiredWithoutPipelineProgressesNestedInput" + decorate_updatePipelineProgressPipeline_field = "!(connect)" + decorate_updatePipelineProgressPipeline_name = "HideField" + decorate_updatePipelineProgressPipeline_from = "@nestjs/graphql" + decorate_updatePipelineProgressPipeline_arguments = "[]" + + decorate_updatePipelineProgressPipelineStage_type = "*PipelineStageUpdateOneRequiredWithoutPipelineProgressesNestedInput" + decorate_updatePipelineProgressPipelineStage_field = "!(connect)" + decorate_updatePipelineProgressPipelineStage_name = "HideField" + decorate_updatePipelineProgressPipelineStage_from = "@nestjs/graphql" + decorate_updatePipelineProgressPipelineStage_arguments = "[]" // Disable _count on all models except Aggregation use case decorate_count_type = "!(*Aggregate*|*GroupBy*|*OrderBy*)"