webstudio/server/src/features/realtime/usecases/run_instance_pipeline_usecase.ts

39 lines
1.5 KiB
TypeScript
Raw Normal View History

2023-11-16 00:40:35 +03:00
import { App } from "../../../core/controllers/app";
2023-11-14 20:44:06 +03:00
import { Result } from "../../../core/helper/result";
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";
import { IProjectInstanceModel, ProjectInstanceDbModel } from "../../project_instance/project_instance_model";
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;
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();
}
const projectModel = readByIdDataBaseModelUseCase.value;
2023-11-20 00:48:40 +03:00
projectModel.isActive = true;
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(
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" });
}
}