import { App } from "../../../core/controllers/app"; import { Result } from "../../../core/helpers/result"; import { IPipeline } from "../../../core/models/process_model"; import { ReadByIdDataBaseModelUseCase } from "../../../core/usecases/read_by_id_database_model_usecase"; import { PipelineValidationModel } from "../../pipelines/models/pipeline_validation_model"; import { IProjectInstanceModel, ProjectInstanceDbModel, } from "../../project_instance/models/project_instance_database_model"; import { pipelineRealTimeService } from "../realtime_presentation"; import { PipelineStatusUseCase } from "./pipeline_status_usecase"; const mongoPipelineModelMapper = (el: PipelineValidationModel): IPipeline => { const mapObj: IPipeline = { process: { type: el.process.type, command: el.process.command, isGenerating: Boolean(el.process.isGenerating), isLocaleCode: Boolean(el.process.isLocaleCode), issueType: el.process.issueType, }, trigger: { type: el.trigger.type, value: el.trigger.value.map((el) => String(el)), }, env: null, stackGenerateType: el.stackGenerateType, }; return mapObj; }; export class RunInstancePipelineUseCase { async call(): Promise> { const r = await new PipelineStatusUseCase().call(); if (r.isFailure()) { return r; } const readByIdDataBaseModelUseCase = await new ReadByIdDataBaseModelUseCase( ProjectInstanceDbModel ).call(r.value.projectUUID); if (readByIdDataBaseModelUseCase.isFailure()) { return readByIdDataBaseModelUseCase.forward(); } const projectModel = readByIdDataBaseModelUseCase.value; const resultMapper = projectModel.project.pipelines.map((el) => mongoPipelineModelMapper(el)); pipelineRealTimeService.setPipelineDependency( resultMapper, App.staticFilesStoreDir() + projectModel.rootDir + "/", projectModel._id ); pipelineRealTimeService.runPipeline(); return Result.ok({ status: "ok" }); } }