import { CallbackStrategyWithIdQuery, ResponseBase } from "../../../core/controllers/http_controller"; import { Result } from "../../../core/helpers/result"; import { DeleteDataBaseModelUseCase } from "../../../core/usecases/delete_database_model_usecase"; import { DeleteRecursiveFolderUseCase } from "../../../core/usecases/delete_recursive_folder_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"; export class DeleteDatasetUseCase extends CallbackStrategyWithIdQuery { idValidationExpression = new MongoIdValidation(); call = async (id: string): ResponseBase => (await new ReadByIdDataBaseModelUseCase(DatasetDBModel).call(id)).map(async (model) => (await new DeleteRecursiveFolderUseCase().call(`${model.local_path}/${model.name}/`)).map(async () => (await new DeleteDataBaseModelUseCase(model).call(model._id)).map(() => Result.ok({ status: "delete dataset" })) ) ); }