Merge branch 'master' of ssh://git.ivanli.cc:7018/Fennec/fennec-be
This commit is contained in:
		@@ -69,6 +69,10 @@ export class PipelineTasksService {
 | 
			
		||||
    return await this.repository.find({ pipelineId });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  async listTasksByCommitHash(hash: string) {
 | 
			
		||||
    return await this.repository.find({ commit: hash });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  async doNextTask(pipeline: Pipeline) {
 | 
			
		||||
    const [lckKey, tasksKey] = this.getRedisTokens(pipeline);
 | 
			
		||||
    const redis = this.redis.getClient();
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										18
									
								
								src/pipelines/commit-logs.resolver.spec.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/pipelines/commit-logs.resolver.spec.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
import { Test, TestingModule } from '@nestjs/testing';
 | 
			
		||||
import { CommitLogsResolver } from './commit-logs.resolver';
 | 
			
		||||
 | 
			
		||||
describe('CommitLogsResolver', () => {
 | 
			
		||||
  let resolver: CommitLogsResolver;
 | 
			
		||||
 | 
			
		||||
  beforeEach(async () => {
 | 
			
		||||
    const module: TestingModule = await Test.createTestingModule({
 | 
			
		||||
      providers: [CommitLogsResolver],
 | 
			
		||||
    }).compile();
 | 
			
		||||
 | 
			
		||||
    resolver = module.get<CommitLogsResolver>(CommitLogsResolver);
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('should be defined', () => {
 | 
			
		||||
    expect(resolver).toBeDefined();
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										39
									
								
								src/pipelines/commit-logs.resolver.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								src/pipelines/commit-logs.resolver.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
			
		||||
import {
 | 
			
		||||
  Args,
 | 
			
		||||
  Info,
 | 
			
		||||
  Parent,
 | 
			
		||||
  ResolveField,
 | 
			
		||||
  Resolver,
 | 
			
		||||
  Subscription,
 | 
			
		||||
} from '@nestjs/graphql';
 | 
			
		||||
import { GraphQLResolveInfo } from 'graphql';
 | 
			
		||||
import { PipelineTasksService } from '../pipeline-tasks/pipeline-tasks.service';
 | 
			
		||||
import { LogFields, LogList } from '../repos/dtos/log-list.model';
 | 
			
		||||
import { PipelinesService } from './pipelines.service';
 | 
			
		||||
 | 
			
		||||
@Resolver(() => LogFields)
 | 
			
		||||
export class CommitLogsResolver {
 | 
			
		||||
  constructor(
 | 
			
		||||
    private readonly service: PipelinesService,
 | 
			
		||||
    private readonly taskServices: PipelineTasksService,
 | 
			
		||||
  ) {}
 | 
			
		||||
  @Subscription(() => LogList, {
 | 
			
		||||
    resolve: (value) => {
 | 
			
		||||
      return value;
 | 
			
		||||
    },
 | 
			
		||||
  })
 | 
			
		||||
  async listLogsForPipeline(
 | 
			
		||||
    @Args('id', { type: () => String }) id: string,
 | 
			
		||||
    @Info() info: GraphQLResolveInfo,
 | 
			
		||||
  ) {
 | 
			
		||||
    info.returnType.toString();
 | 
			
		||||
    const job = await this.service.listLogsForPipeline(id);
 | 
			
		||||
    return (async function* () {
 | 
			
		||||
      yield await job.finished();
 | 
			
		||||
    })();
 | 
			
		||||
  }
 | 
			
		||||
  @ResolveField()
 | 
			
		||||
  async tasks(@Parent() commit: LogFields) {
 | 
			
		||||
    return await this.taskServices.listTasksByCommitHash(commit.hash);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -5,6 +5,8 @@ import { TypeOrmModule } from '@nestjs/typeorm';
 | 
			
		||||
import { Pipeline } from './pipeline.entity';
 | 
			
		||||
import { BullModule } from '@nestjs/bull';
 | 
			
		||||
import { LIST_LOGS_TASK } from '../repos/repos.constants';
 | 
			
		||||
import { CommitLogsResolver } from './commit-logs.resolver';
 | 
			
		||||
import { PipelineTasksModule } from '../pipeline-tasks/pipeline-tasks.module';
 | 
			
		||||
 | 
			
		||||
@Module({
 | 
			
		||||
  imports: [
 | 
			
		||||
@@ -12,7 +14,8 @@ import { LIST_LOGS_TASK } from '../repos/repos.constants';
 | 
			
		||||
    BullModule.registerQueue({
 | 
			
		||||
      name: LIST_LOGS_TASK,
 | 
			
		||||
    }),
 | 
			
		||||
    PipelineTasksModule,
 | 
			
		||||
  ],
 | 
			
		||||
  providers: [PipelinesResolver, PipelinesService],
 | 
			
		||||
  providers: [PipelinesResolver, PipelinesService, CommitLogsResolver],
 | 
			
		||||
})
 | 
			
		||||
export class PipelinesModule {}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,10 +1,9 @@
 | 
			
		||||
import { Args, Mutation, Query, Resolver, Subscription } from '@nestjs/graphql';
 | 
			
		||||
import { Args, Mutation, Query, Resolver } from '@nestjs/graphql';
 | 
			
		||||
import { CreatePipelineInput } from './dtos/create-pipeline.input';
 | 
			
		||||
import { UpdatePipelineInput } from './dtos/update-pipeline.input';
 | 
			
		||||
import { Pipeline } from './pipeline.entity';
 | 
			
		||||
import { PipelinesService } from './pipelines.service';
 | 
			
		||||
import { ListPipelineArgs } from './dtos/list-pipelines.args';
 | 
			
		||||
import { LogList } from '../repos/dtos/log-list.model';
 | 
			
		||||
 | 
			
		||||
@Resolver()
 | 
			
		||||
export class PipelinesResolver {
 | 
			
		||||
@@ -42,16 +41,4 @@ export class PipelinesResolver {
 | 
			
		||||
  async deletePipeline(@Args('id', { type: () => String }) id: string) {
 | 
			
		||||
    return await this.service.remove(id);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @Subscription(() => LogList, {
 | 
			
		||||
    resolve: (value) => {
 | 
			
		||||
      return value;
 | 
			
		||||
    },
 | 
			
		||||
  })
 | 
			
		||||
  async listLogsForPipeline(@Args('id', { type: () => String }) id: string) {
 | 
			
		||||
    const job = await this.service.listLogsForPipeline(id);
 | 
			
		||||
    return (async function* () {
 | 
			
		||||
      yield await job.finished();
 | 
			
		||||
    })();
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,6 @@
 | 
			
		||||
import { ObjectType, Field } from '@nestjs/graphql';
 | 
			
		||||
import { LogResult, DefaultLogFields } from 'simple-git';
 | 
			
		||||
import { PipelineTask } from '../../pipeline-tasks/pipeline-task.entity';
 | 
			
		||||
 | 
			
		||||
@ObjectType()
 | 
			
		||||
export class LogFields {
 | 
			
		||||
@@ -10,6 +11,7 @@ export class LogFields {
 | 
			
		||||
  body: string;
 | 
			
		||||
  author_name: string;
 | 
			
		||||
  author_email: string;
 | 
			
		||||
  tasks: PipelineTask[];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ObjectType()
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,6 @@ import { PipelineTasksModule } from '../pipeline-tasks/pipeline-tasks.module';
 | 
			
		||||
import { GiteaWebhooksController } from './gitea-webhooks.controller';
 | 
			
		||||
import { WebhookLog } from './webhook-log.entity';
 | 
			
		||||
import { WebhooksService } from './webhooks.service';
 | 
			
		||||
import { raw } from 'body-parser';
 | 
			
		||||
 | 
			
		||||
@Module({
 | 
			
		||||
  imports: [TypeOrmModule.forFeature([WebhookLog]), PipelineTasksModule],
 | 
			
		||||
@@ -12,9 +11,4 @@ import { raw } from 'body-parser';
 | 
			
		||||
  providers: [WebhooksService],
 | 
			
		||||
})
 | 
			
		||||
export class WebhooksModule {
 | 
			
		||||
  // configure(consumer: MiddlewareConsumer) {
 | 
			
		||||
  //   consumer
 | 
			
		||||
  //     .apply(raw({ type: 'application/json' }))
 | 
			
		||||
  //     .forRoutes(GiteaWebhooksController);
 | 
			
		||||
  // }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user