import { ObjectId } from "mongoose"; import { CallbackStrategyWithIdQuery, ResponseBase } from "../../../core/controllers/http_controller"; import { ExecProcessUseCase, IsHaveActiveProcessUseCase } from "../../../core/usecases/exec_process_usecase"; import { ReadByIdDataBaseModelUseCase } from "../../../core/usecases/read_by_id_database_model_usecase"; import { MongoIdValidation } from "../../../core/validations/mongo_id_validation"; import { DatasetDBModel } from "../models/dataset_database_model"; import { IDatasetModel } from "../models/dataset_validation_model"; import { ProcessWatcherAndDatabaseUpdateService } from "./create_dataset_scenario"; export class ExecDatasetProcessScenario extends CallbackStrategyWithIdQuery { idValidationExpression = new MongoIdValidation(); call = async (id: string): ResponseBase => { return (await new ReadByIdDataBaseModelUseCase(DatasetDBModel).call(id)).map(async (model) => { return (await new IsHaveActiveProcessUseCase().call()).map(() => { return new ExecProcessUseCase().call( `${model.project.rootDir}/`, `python3 $PYTHON_BLENDER_PROC --cfg '${JSON.stringify(model)}' `, new ProcessWatcherAndDatabaseUpdateService(id as unknown as ObjectId) ); }); }); }; }