import { ObjectId } from "mongoose"; import { CallbackStrategyWithValidationModel, ResponseBase } from "../../../core/controllers/http_controller"; import { Result } from "../../../core/helpers/result"; import { TypedEvent } from "../../../core/helpers/typed_event"; import { EXEC_EVENT, ExecError, SpawnError } from "../../../core/models/exec_error_model"; import { ExecutorResult } from "../../../core/models/executor_result"; import { SearchDataBaseModelUseCase } from "../../../core/usecases/search_database_model_usecase"; import { IProjectModel, ProjectDBModel } from "../../_projects/models/project_database_model"; import { DatasetDBModel } from "../models/dataset_database_model"; import { DatasetValidationModel, ProcessStatus } from "../models/dataset_validation_model"; export class ProcessWatcherAndDatabaseUpdateService extends TypedEvent> { databaseId: ObjectId; constructor(databaseId: ObjectId) { super(); this.databaseId = databaseId; this.on((event) => this.lister(event)); } lister(event: Result) { event.fold( async (success) => { if (success.event == EXEC_EVENT.END) { const dbModel = await DatasetDBModel.findById(this.databaseId); if (dbModel !== null) { dbModel.local_path; dbModel.processStatus = ProcessStatus.END; dbModel.processLogs = success.data; await dbModel.save(); } } }, async (error) => { const dbModel = await DatasetDBModel.findById(this.databaseId); if (dbModel !== null) { dbModel.processStatus = ProcessStatus.ERROR; dbModel.processLogs = error.message; await dbModel.save(); } } ); } } export class CreateDataSetScenario extends CallbackStrategyWithValidationModel { validationModel: DatasetValidationModel; call = async (model: DatasetValidationModel): ResponseBase => { return ( await new SearchDataBaseModelUseCase(ProjectDBModel).call({ isActive: true }, "no active projects") ).map(async (project) => { model.processStatus = ProcessStatus.NEW; model.local_path = project.rootDir; model.projectId = project._id; const d = new DatasetDBModel(); Object.assign(d, model); await d.save(); return Result.ok("create dataset ok"); }); }; }