Expose pipeline and pipelinestage in graphql (#185)

This commit is contained in:
Charles Bochet
2023-06-02 14:39:34 +02:00
committed by GitHub
parent f23bbb9a68
commit 97274db8b4
5 changed files with 126 additions and 4 deletions

View File

@ -1,21 +1,27 @@
import { Module } from '@nestjs/common';
import { GraphQLModule } from '@nestjs/graphql';
import { ConfigService } from '@nestjs/config';
import { ApolloDriver, ApolloDriverConfig } from '@nestjs/apollo';
import { AuthModule } from 'src/auth/auth.module';
import { PrismaModule } from 'src/database/prisma.module';
import { ArgsService } from './resolvers/services/args.service';
import { CompanyResolver } from './resolvers/company.resolver';
import { UserResolver } from './resolvers/user.resolver';
import { PersonResolver } from './resolvers/person.resolver';
import { CommentResolver } from './resolvers/comment.resolver';
import { CommentThreadResolver } from './resolvers/comment-thread.resolver';
import { PipelineResolver } from './resolvers/pipeline.resolver';
import { PipelineStageResolver } from './resolvers/pipeline-stage.resolver';
import { PersonRelationsResolver } from './resolvers/relations/person-relations.resolver';
import { UserRelationsResolver } from './resolvers/relations/user-relations.resolver';
import { WorkspaceMemberRelationsResolver } from './resolvers/relations/workspace-member-relations.resolver';
import { ConfigService } from '@nestjs/config';
import { AuthModule } from 'src/auth/auth.module';
import { CompanyRelationsResolver } from './resolvers/relations/company-relations.resolver';
import { PrismaModule } from 'src/database/prisma.module';
import { ArgsService } from './resolvers/services/args.service';
import { CommentThreadRelationsResolver } from './resolvers/relations/comment-thread-relations.resolver';
import { PipelineRelationsResolver } from './resolvers/relations/pipeline-relations.resolver';
import { PipelineStageRelationsResolver } from './resolvers/relations/pipeline-stage-relations.resolver';
@Module({
imports: [
@ -36,12 +42,16 @@ import { CommentThreadRelationsResolver } from './resolvers/relations/comment-th
UserResolver,
CommentResolver,
CommentThreadResolver,
PipelineResolver,
PipelineStageResolver,
CompanyRelationsResolver,
PersonRelationsResolver,
UserRelationsResolver,
WorkspaceMemberRelationsResolver,
CommentThreadRelationsResolver,
PipelineRelationsResolver,
PipelineStageRelationsResolver,
],
})
export class ApiModule {}

View File

@ -0,0 +1,31 @@
import { Resolver, Args, Query } 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 { PipelineStage } from '../@generated/pipeline-stage/pipeline-stage.model';
import { FindManyPipelineStageArgs } from '../@generated/pipeline-stage/find-many-pipeline-stage.args';
import { ArgsService } from './services/args.service';
@UseGuards(JwtAuthGuard)
@Resolver(() => PipelineStage)
export class PipelineStageResolver {
constructor(
private readonly prismaService: PrismaService,
private readonly argsService: ArgsService,
) {}
@Query(() => [PipelineStage])
async findManyPipelineStage(
@Args() args: FindManyPipelineStageArgs,
@AuthWorkspace() workspace: Workspace,
) {
const preparedArgs =
await this.argsService.prepareFindManyArgs<FindManyPipelineStageArgs>(
args,
workspace,
);
return this.prismaService.pipelineStage.findMany(preparedArgs);
}
}

View File

@ -0,0 +1,31 @@
import { Resolver, Args, Query } 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 { Pipeline } from '../@generated/pipeline/pipeline.model';
import { FindManyPipelineArgs } from '../@generated/pipeline/find-many-pipeline.args';
import { ArgsService } from './services/args.service';
@UseGuards(JwtAuthGuard)
@Resolver(() => Pipeline)
export class PipelineResolver {
constructor(
private readonly prismaService: PrismaService,
private readonly argsService: ArgsService,
) {}
@Query(() => [Pipeline])
async findManyPipeline(
@Args() args: FindManyPipelineArgs,
@AuthWorkspace() workspace: Workspace,
) {
const preparedArgs =
await this.argsService.prepareFindManyArgs<FindManyPipelineArgs>(
args,
workspace,
);
return this.prismaService.pipeline.findMany(preparedArgs);
}
}

View File

@ -0,0 +1,25 @@
import * as TypeGraphQL from '@nestjs/graphql';
import { Comment } from 'src/api/@generated/comment/comment.model';
import { PipelineStage } from 'src/api/@generated/pipeline-stage/pipeline-stage.model';
import { Pipeline } from 'src/api/@generated/pipeline/pipeline.model';
import { PrismaService } from 'src/database/prisma.service';
@TypeGraphQL.Resolver(() => Pipeline)
export class PipelineRelationsResolver {
constructor(private readonly prismaService: PrismaService) {}
@TypeGraphQL.ResolveField(() => [Comment], {
nullable: false,
})
async pipelineStages(
@TypeGraphQL.Root() pipeline: Pipeline,
): Promise<PipelineStage[]> {
return this.prismaService.pipelineStage.findMany({
where: {
pipelineId: {
equals: pipeline.id,
},
},
});
}
}

View File

@ -0,0 +1,25 @@
import * as TypeGraphQL from '@nestjs/graphql';
import { Comment } from 'src/api/@generated/comment/comment.model';
import { PipelineProgress } from 'src/api/@generated/pipeline-progress/pipeline-progress.model';
import { PipelineStage } from 'src/api/@generated/pipeline-stage/pipeline-stage.model';
import { PrismaService } from 'src/database/prisma.service';
@TypeGraphQL.Resolver(() => PipelineStage)
export class PipelineStageRelationsResolver {
constructor(private readonly prismaService: PrismaService) {}
@TypeGraphQL.ResolveField(() => [Comment], {
nullable: false,
})
async pipelineProgresses(
@TypeGraphQL.Root() pipelineStage: PipelineStage,
): Promise<PipelineProgress[]> {
return this.prismaService.pipelineProgress.findMany({
where: {
pipelineStageId: {
equals: pipelineStage.id,
},
},
});
}
}