formatting code upload project instance to files

This commit is contained in:
IDONTSUDO 2023-11-28 18:34:41 +03:00
parent ce4c98ff13
commit a0b4f00f47
65 changed files with 399 additions and 748 deletions

View file

@ -2,29 +2,20 @@ import { App } from "../../core/controllers/app";
import { Result } from "../../core/helper/result";
import { CreateDataBaseModelUseCase } from "../../core/usecases/create_database_model_usecase";
import { CreateFolderUseCase } from "../../core/usecases/crete_folder_usecase";
import {
ProjectInstanceDbModel,
ProjectInstanceValidationModel,
} from "./project_instance_model";
import { ProjectInstanceDbModel, ProjectInstanceValidationModel } from "./project_instance_model";
import { v4 as uuidv4 } from "uuid";
export class CreateNewProjectInstanceScenario {
call = async (
model: ProjectInstanceValidationModel
): Promise<Result<Error, any>> => {
call = async (model: ProjectInstanceValidationModel): Promise<Result<Error, any>> => {
try {
const folderName = uuidv4() + "/";
const createFolderUseCase = await new CreateFolderUseCase().call(
App.staticFilesStoreDir() + folderName
);
const createFolderUseCase = await new CreateFolderUseCase().call(App.staticFilesStoreDir() + folderName);
if (createFolderUseCase.isFailure()) {
return createFolderUseCase.forward();
}
model.rootDir = folderName;
const createDataBaseModelUseCase = await new CreateDataBaseModelUseCase(
ProjectInstanceDbModel
).call(model);
const createDataBaseModelUseCase = await new CreateDataBaseModelUseCase(ProjectInstanceDbModel).call(model);
if (createDataBaseModelUseCase.isFailure()) {
return createDataBaseModelUseCase.forward();

View file

@ -3,6 +3,7 @@ import { IProjectModel, projectSchema } from "../projects/projects_model";
import { IsMongoId, IsOptional, IsString } from "class-validator";
export interface IProjectInstanceModel {
_id: string;
project: IProjectModel;
description: string;
rootDir: string;
@ -30,10 +31,7 @@ export const ProjectInstanceSchema = new Schema({
export const schemaProjectInstance = "instance_project";
export const ProjectInstanceDbModel = model<IProjectInstanceModel>(
schemaProjectInstance,
ProjectInstanceSchema
);
export const ProjectInstanceDbModel = model<IProjectInstanceModel>(schemaProjectInstance, ProjectInstanceSchema);
export class ProjectInstanceValidationModel {
@IsMongoId()

View file

@ -1,15 +1,7 @@
import { CrudController } from "../../core/controllers/crud_controller";
import {
CallbackStrategyWithEmpty,
ResponseBase,
} from "../../core/controllers/http_controller";
import { Result } from "../../core/helper/result";
import { CreateNewProjectInstanceScenario } from "./create_new_project_scenario";
import {
ProjectInstanceDbModel,
ProjectInstanceValidationModel,
} from "./project_instance_model";
import { UploadCadFileToProjectUseCase } from "./upload_file_to_project_usecase";
import { ProjectInstanceDbModel, ProjectInstanceValidationModel } from "./project_instance_model";
import { UploadCadFileToProjectScenario } from "./upload_file_to_to_project_scenario";
export class ProjectInstancePresentation extends CrudController<
ProjectInstanceValidationModel,
@ -27,14 +19,8 @@ export class ProjectInstancePresentation extends CrudController<
{
method: "post",
subUrl: "upload",
fn: new TestUseCase(),
fn: new UploadCadFileToProjectScenario(),
},
];
}
}
class TestUseCase extends CallbackStrategyWithEmpty {
async call(): ResponseBase {
return Result.ok(200);
}
}

View file

@ -1,13 +0,0 @@
import {
CallbackStrategyWithFileUpload,
ResponseBase,
} from "../../core/controllers/http_controller";
import { Result } from "../../core/helper/result";
export class UploadCadFileToProjectUseCase extends CallbackStrategyWithFileUpload {
checkingFileExpression: RegExp = RegExp('.FCStd')
async call(file: File): ResponseBase {
return Result.ok("200");
}
}

View file

@ -0,0 +1,28 @@
import { App } from "../../core/controllers/app";
import { CallbackStrategyWithFileUpload, ResponseBase } from "../../core/controllers/http_controller";
import { Result } from "../../core/helper/result";
import { CreateFileUseCase } from "../../core/usecases/create_file_usecase";
import { PipelineStatusUseCase } from "../realtime/usecases/pipeline_status_usecase";
export interface IFile extends File {
data: Buffer;
}
export class UploadCadFileToProjectScenario extends CallbackStrategyWithFileUpload {
checkingFileExpression: RegExp = RegExp(".pages");
async call(file: IFile): ResponseBase {
const pipelineStatusUseCase = await new PipelineStatusUseCase().call();
if (pipelineStatusUseCase.isFailure()) {
return pipelineStatusUseCase.forward();
}
const projectFolder = pipelineStatusUseCase.value.path;
// TODO:
const createFileUseCase = await new CreateFileUseCase().call(projectFolder + file.name, file.data);
if (createFileUseCase.isFailure()) {
return createFileUseCase.forward();
}
return Result.ok("ok");
}
}