import { Resolver, Args, Mutation, Subscription } from '@nestjs/graphql'; import { PipelineTask } from './pipeline-task.entity'; import { PipelineTasksService } from './pipeline-tasks.service'; import { CreatePipelineTaskInput } from './dtos/create-pipeline-task.input'; import { PipelineTaskLogMessage } from './models/pipeline-task-log-message.module'; import { PipelineTaskLogArgs } from './dtos/pipeline-task-log.args'; import { PipelineTaskLogsService } from './pipeline-task-logs.service'; @Resolver() export class PipelineTasksResolver { constructor( private readonly service: PipelineTasksService, private readonly logsService: PipelineTaskLogsService, ) {} @Mutation(() => PipelineTask) async createPipelineTask(@Args('task') taskDto: CreatePipelineTaskInput) { return await this.service.addTask(taskDto); } @Subscription(() => PipelineTaskLogMessage) async pipelineTaskLog(@Args() args: PipelineTaskLogArgs) { const task = await this.service.findTaskById(args.taskId); const asyncIterator = this.logsService.watchLogs(task); return asyncIterator; } }