feat(pipeline-tasks): 任务更新推送时机修改。
This commit is contained in:
parent
a82f663354
commit
0e0781c4c4
@ -1,6 +1,7 @@
|
||||
import { TaskStatuses } from '../enums/task-statuses.enum';
|
||||
import { PipelineUnits } from '../enums/pipeline-units.enum';
|
||||
import { Field, ObjectType } from '@nestjs/graphql';
|
||||
import { Type } from 'class-transformer';
|
||||
|
||||
@ObjectType()
|
||||
export class PipelineTaskLogs {
|
||||
@ -8,7 +9,9 @@ export class PipelineTaskLogs {
|
||||
unit: PipelineUnits;
|
||||
@Field(() => TaskStatuses)
|
||||
status: TaskStatuses;
|
||||
@Type(() => Date)
|
||||
startedAt?: Date;
|
||||
@Type(() => Date)
|
||||
endedAt?: Date;
|
||||
logs = '';
|
||||
}
|
||||
|
@ -86,6 +86,7 @@ export class PipelineTaskConsumer {
|
||||
taskLogs.find((tl) => tl.unit === unit.type)?.logs ?? '',
|
||||
);
|
||||
task.logs.push(unitLog);
|
||||
task = await this.service.updateTask(task);
|
||||
await job.update(task);
|
||||
}
|
||||
}
|
||||
|
@ -1,11 +1,16 @@
|
||||
import { AppBaseEntity } from './../commons/entities/app-base-entity';
|
||||
import { Field, ObjectType } from '@nestjs/graphql';
|
||||
import { Column, Entity, ManyToOne } from 'typeorm';
|
||||
import { ObjectType } from '@nestjs/graphql';
|
||||
import { Column, Entity, ManyToOne, ValueTransformer } from 'typeorm';
|
||||
import { Pipeline } from '../pipelines/pipeline.entity';
|
||||
import { PipelineTaskLogs } from './models/pipeline-task-logs.model';
|
||||
import { TaskStatuses } from './enums/task-statuses.enum';
|
||||
import { PipelineUnits } from './enums/pipeline-units.enum';
|
||||
import { plainToClass } from 'class-transformer';
|
||||
|
||||
const logsTransformer: ValueTransformer = {
|
||||
from: (value) => plainToClass(PipelineTaskLogs, value),
|
||||
to: (value) => value,
|
||||
};
|
||||
@ObjectType()
|
||||
@Entity()
|
||||
export class PipelineTask extends AppBaseEntity {
|
||||
@ -20,7 +25,7 @@ export class PipelineTask extends AppBaseEntity {
|
||||
@Column({ type: 'enum', enum: PipelineUnits, array: true })
|
||||
units: PipelineUnits[];
|
||||
|
||||
@Column({ type: 'jsonb', default: '[]' })
|
||||
@Column({ type: 'jsonb', default: '[]', transformer: logsTransformer })
|
||||
logs: PipelineTaskLogs[];
|
||||
|
||||
@Column({ type: 'enum', enum: TaskStatuses, default: TaskStatuses.pending })
|
||||
|
@ -121,13 +121,14 @@ export class PipelineTasksService {
|
||||
}
|
||||
|
||||
async updateTask(task: PipelineTask) {
|
||||
this.pubSub.publish(`task:${task.id}`, task);
|
||||
this.pubSub.publish(`pipeline-task:${task.id}`, task);
|
||||
return await this.repository.save(task);
|
||||
}
|
||||
|
||||
async watchTaskUpdated(id: string) {
|
||||
log('watchTaskUpdated %s', id);
|
||||
return observableToAsyncIterable(this.pubSub.message$(`task:${id}`));
|
||||
return observableToAsyncIterable(
|
||||
this.pubSub.message$(`pipeline-task:${id}`),
|
||||
);
|
||||
}
|
||||
|
||||
getRedisTokens(pipeline: Pipeline): [string, string] {
|
||||
|
Loading…
Reference in New Issue
Block a user