2023-11-16 00:40:35 +03:00
|
|
|
import { App } from "../../../core/controllers/app";
|
2023-12-03 16:20:52 +03:00
|
|
|
import { Result } from "../../../core/helpers/result";
|
2023-11-14 20:44:06 +03:00
|
|
|
import { ReadByIdDataBaseModelUseCase } from "../../../core/usecases/read_by_id_database_model_usecase";
|
2023-11-20 00:48:40 +03:00
|
|
|
import { UpdateDataBaseModelUseCase } from "../../../core/usecases/update_database_model_usecase";
|
2023-12-03 16:16:08 +03:00
|
|
|
import {
|
|
|
|
IProjectInstanceModel,
|
|
|
|
ProjectInstanceDbModel,
|
|
|
|
} from "../../project_instance/models/project_instance_database_model";
|
2023-11-28 18:34:41 +03:00
|
|
|
import { RealTimeValidationModel, pipelineRealTimeService } from "../realtime_presentation";
|
2023-11-14 20:44:06 +03:00
|
|
|
|
|
|
|
export class RunInstancePipelineUseCase {
|
|
|
|
async call(model: RealTimeValidationModel): Promise<Result<Error, any>> {
|
2023-11-20 00:48:40 +03:00
|
|
|
const { id } = model;
|
2023-11-28 18:34:41 +03:00
|
|
|
const readByIdDataBaseModelUseCase = await new ReadByIdDataBaseModelUseCase<IProjectInstanceModel>(
|
|
|
|
ProjectInstanceDbModel
|
|
|
|
).call(id);
|
2023-11-20 00:48:40 +03:00
|
|
|
|
2023-11-14 20:44:06 +03:00
|
|
|
if (readByIdDataBaseModelUseCase.isFailure()) {
|
|
|
|
return readByIdDataBaseModelUseCase.forward();
|
|
|
|
}
|
|
|
|
|
2023-11-28 18:34:41 +03:00
|
|
|
const projectModel = readByIdDataBaseModelUseCase.value;
|
2023-11-20 00:48:40 +03:00
|
|
|
projectModel.isActive = true;
|
|
|
|
|
2023-11-28 18:34:41 +03:00
|
|
|
const updateDataBaseModelUseCase = await new UpdateDataBaseModelUseCase<IProjectInstanceModel, any>(
|
|
|
|
ProjectInstanceDbModel
|
|
|
|
).call(projectModel);
|
2023-11-20 00:48:40 +03:00
|
|
|
|
|
|
|
if (updateDataBaseModelUseCase.isFailure()) {
|
|
|
|
return updateDataBaseModelUseCase.forward();
|
|
|
|
}
|
|
|
|
pipelineRealTimeService.setPipelineDependency(
|
2023-11-28 18:34:41 +03:00
|
|
|
projectModel.project.pipelines,
|
2023-11-16 00:40:35 +03:00
|
|
|
App.staticFilesStoreDir() + projectModel.rootDir + "/",
|
2023-11-14 20:44:06 +03:00
|
|
|
projectModel._id
|
|
|
|
);
|
2023-11-20 00:48:40 +03:00
|
|
|
pipelineRealTimeService.runPipeline();
|
2023-11-16 00:40:35 +03:00
|
|
|
|
2023-11-14 20:44:06 +03:00
|
|
|
return Result.ok({ status: "ok" });
|
|
|
|
}
|
|
|
|
}
|