43 lines
1.2 KiB
TypeScript
43 lines
1.2 KiB
TypeScript
import { AppBaseEntity } from './../commons/entities/app-base-entity';
|
|
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 {
|
|
@ManyToOne(() => Pipeline)
|
|
pipeline: Pipeline;
|
|
@Column()
|
|
pipelineId: string;
|
|
|
|
@Column()
|
|
commit: string;
|
|
|
|
@Column({ type: 'enum', enum: PipelineUnits, array: true })
|
|
units: PipelineUnits[];
|
|
|
|
@Column({ type: 'jsonb', default: '[]', transformer: logsTransformer })
|
|
logs: PipelineTaskLogs[];
|
|
|
|
@Column({ type: 'enum', enum: TaskStatuses, default: TaskStatuses.pending })
|
|
status: TaskStatuses;
|
|
|
|
@Column({ nullable: true })
|
|
startedAt?: Date;
|
|
|
|
@Column({ nullable: true })
|
|
endedAt?: Date;
|
|
|
|
@Column({ nullable: true })
|
|
runOn: string;
|
|
}
|