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'; import { Workspace } from '../@generated/workspace/workspace.model'; 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) export class PipelineProgressResolver { constructor( private readonly prismaService: PrismaService, private readonly argsService: ArgsService, ) {} @Query(() => [PipelineProgress]) async findManyPipelineProgress( @Args() args: FindManyPipelineProgressArgs, @AuthWorkspace() workspace: Workspace, ) { const preparedArgs = await this.argsService.prepareFindManyArgs( args, workspace, ); 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); } }