feat(repos): 添加checkout接口。

This commit is contained in:
Ivan Li 2021-02-28 21:51:52 +08:00
parent 11cf2a6c12
commit 32102ffefd
4 changed files with 32 additions and 4 deletions

View File

@ -0,0 +1,16 @@
import { InputType } from '@nestjs/graphql';
import { IsOptional, IsString, IsUUID } from 'class-validator';
@InputType()
export class CheckoutInput {
@IsUUID()
projectId: string;
@IsString()
@IsOptional()
branch?: string;
@IsString()
@IsOptional()
commitNumber?: string;
}

View File

@ -1,4 +1,4 @@
import { InputType, ObjectType } from '@nestjs/graphql'; import { InputType } from '@nestjs/graphql';
import { IsOptional, IsString, IsUUID } from 'class-validator'; import { IsOptional, IsString, IsUUID } from 'class-validator';
@InputType() @InputType()

View File

@ -4,9 +4,10 @@ import { Project } from '../projects/project.entity';
import { ReposResolver } from './repos.resolver'; import { ReposResolver } from './repos.resolver';
import { ReposService } from './repos.service'; import { ReposService } from './repos.service';
import { ConfigModule } from '@nestjs/config'; import { ConfigModule } from '@nestjs/config';
import { ProjectsModule } from '../projects/projects.module';
@Module({ @Module({
imports: [TypeOrmModule.forFeature([Project]), ConfigModule], imports: [TypeOrmModule.forFeature([Project]), ConfigModule, ProjectsModule],
providers: [ReposResolver, ReposService], providers: [ReposResolver, ReposService],
}) })
export class ReposModule {} export class ReposModule {}

View File

@ -1,13 +1,18 @@
import { Args, Query, Resolver } from '@nestjs/graphql'; import { Args, Mutation, Query, Resolver } from '@nestjs/graphql';
import { ListLogsArgs } from './dtos/list-logs.args'; import { ListLogsArgs } from './dtos/list-logs.args';
import { ReposService } from './repos.service'; import { ReposService } from './repos.service';
import { LogList } from './dtos/log-list.model'; import { LogList } from './dtos/log-list.model';
import { ListBranchesArgs } from './dtos/list-branches.args'; import { ListBranchesArgs } from './dtos/list-branches.args';
import { BranchList } from './dtos/branch-list.model'; import { BranchList } from './dtos/branch-list.model';
import { CheckoutInput } from './dtos/checkout.input';
import { ProjectsService } from '../projects/projects.service';
@Resolver() @Resolver()
export class ReposResolver { export class ReposResolver {
constructor(private readonly service: ReposService) {} constructor(
private readonly service: ReposService,
private readonly projectService: ProjectsService,
) {}
@Query(() => LogList) @Query(() => LogList)
async listLogs(@Args('listLogsArgs') dto: ListLogsArgs) { async listLogs(@Args('listLogsArgs') dto: ListLogsArgs) {
return await this.service.listLogs(dto); return await this.service.listLogs(dto);
@ -23,4 +28,10 @@ export class ReposResolver {
}; };
}); });
} }
@Mutation(() => Boolean)
async checkout(@Args('checkoutInput') dto: CheckoutInput): Promise<true> {
const project = await this.projectService.findOne(dto.projectId);
await this.service.checkoutCommit(project, dto.commitNumber);
return true;
}
} }