formatting code upload project instance to files
This commit is contained in:
parent
ce4c98ff13
commit
a0b4f00f47
65 changed files with 399 additions and 748 deletions
|
@ -1,10 +1,6 @@
|
|||
import { IsMongoId, IsOptional, ValidateNested } from "class-validator";
|
||||
import { Schema, model } from "mongoose";
|
||||
import {
|
||||
IPipeline,
|
||||
IProcess,
|
||||
StackGenerateType,
|
||||
} from "../../core/model/process_model";
|
||||
import { IPipeline, IProcess, StackGenerateType } from "../../core/model/process_model";
|
||||
import { TriggerModel, triggerSchema } from "../triggers/trigger_model";
|
||||
import { ProcessModel, schemaProcess } from "../process/process_model";
|
||||
import { Type } from "class-transformer";
|
||||
|
|
|
@ -1,10 +1,7 @@
|
|||
import { CrudController } from "../../core/controllers/crud_controller";
|
||||
import { PipelineDBModel, PipelineValidationModel } from "./pipeline_model";
|
||||
|
||||
export class PipelinePresentation extends CrudController<
|
||||
PipelineValidationModel,
|
||||
typeof PipelineDBModel
|
||||
> {
|
||||
export class PipelinePresentation extends CrudController<PipelineValidationModel, typeof PipelineDBModel> {
|
||||
constructor() {
|
||||
super({
|
||||
url: "pipeline",
|
||||
|
|
|
@ -1,10 +1,4 @@
|
|||
import {
|
||||
IsString,
|
||||
IsOptional,
|
||||
IsEnum,
|
||||
IsNumber,
|
||||
IsBoolean,
|
||||
} from "class-validator";
|
||||
import { IsString, IsOptional, IsEnum, IsNumber, IsBoolean } from "class-validator";
|
||||
import { Schema, model } from "mongoose";
|
||||
import { IProcess, IssueType } from "../../core/model/process_model";
|
||||
import { EXEC_TYPE } from "../../core/model/exec_error_model";
|
||||
|
@ -48,7 +42,7 @@ export class ProcessModel implements IProcess {
|
|||
|
||||
@IsString()
|
||||
public description: string;
|
||||
|
||||
|
||||
@IsString()
|
||||
public command: string;
|
||||
|
||||
|
|
|
@ -1,10 +1,7 @@
|
|||
import { CrudController } from "../../core/controllers/crud_controller";
|
||||
import { ProcessDBModel, ProcessModel } from "./process_model";
|
||||
|
||||
export class ProcessPresentation extends CrudController<
|
||||
ProcessModel,
|
||||
typeof ProcessDBModel
|
||||
> {
|
||||
export class ProcessPresentation extends CrudController<ProcessModel, typeof ProcessDBModel> {
|
||||
constructor() {
|
||||
super({
|
||||
url: "process",
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
}
|
|
@ -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");
|
||||
}
|
||||
}
|
|
@ -7,7 +7,7 @@ export interface IProjectModel {
|
|||
pipelines: [PipelineValidationModel];
|
||||
rootDir: string;
|
||||
description: string;
|
||||
isActive:boolean;
|
||||
isActive: boolean;
|
||||
}
|
||||
|
||||
export const ProjectSchema = new Schema({
|
||||
|
@ -35,5 +35,4 @@ export class ProjectValidationModel {
|
|||
public pipelines: [string];
|
||||
@IsString()
|
||||
public description: string;
|
||||
|
||||
}
|
||||
|
|
|
@ -1,10 +1,7 @@
|
|||
import { CrudController } from "../../core/controllers/crud_controller";
|
||||
import { ProjectDBModel, ProjectValidationModel } from "./projects_model";
|
||||
|
||||
export class ProjectsPresentation extends CrudController<
|
||||
ProjectValidationModel,
|
||||
typeof ProjectDBModel
|
||||
> {
|
||||
export class ProjectsPresentation extends CrudController<ProjectValidationModel, typeof ProjectDBModel> {
|
||||
constructor() {
|
||||
super({
|
||||
url: "project",
|
||||
|
|
|
@ -3,7 +3,7 @@ import { CoreHttpController } from "../../core/controllers/http_controller";
|
|||
import { PipelineRealTimeService } from "../../core/services/pipeline_real_time_service";
|
||||
import { RunInstancePipelineUseCase } from "./usecases/run_instance_pipeline_usecase";
|
||||
import { PipelineStatusUseCase } from "./usecases/pipeline_status_usecase";
|
||||
|
||||
|
||||
export const pipelineRealTimeService = new PipelineRealTimeService();
|
||||
|
||||
export class RealTimeValidationModel {
|
||||
|
@ -11,7 +11,6 @@ export class RealTimeValidationModel {
|
|||
public id: string;
|
||||
}
|
||||
|
||||
|
||||
export class RealTimePresentation extends CoreHttpController<RealTimeValidationModel> {
|
||||
constructor() {
|
||||
super({
|
||||
|
@ -21,6 +20,5 @@ export class RealTimePresentation extends CoreHttpController<RealTimeValidationM
|
|||
});
|
||||
super.post(new RunInstancePipelineUseCase().call);
|
||||
super.get(new PipelineStatusUseCase().call);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,7 +5,13 @@ import { pipelineRealTimeService } from "../realtime_presentation";
|
|||
export class PipelineStatusUseCase {
|
||||
async call(): Promise<Result<Error, ActivePipeline>> {
|
||||
try {
|
||||
return Result.ok(pipelineRealTimeService.status);
|
||||
const status = pipelineRealTimeService.status;
|
||||
if (status.projectUUID !== null) {
|
||||
return Result.ok(status);
|
||||
}
|
||||
if (status.projectUUID === null) {
|
||||
return Result.error(new Error("pipelineRealTimeService does not have an active project instance"));
|
||||
}
|
||||
} catch (error) {
|
||||
return Result.error(error as Error);
|
||||
}
|
||||
|
|
|
@ -2,41 +2,32 @@ import { App } from "../../../core/controllers/app";
|
|||
import { Result } from "../../../core/helper/result";
|
||||
import { ReadByIdDataBaseModelUseCase } from "../../../core/usecases/read_by_id_database_model_usecase";
|
||||
import { UpdateDataBaseModelUseCase } from "../../../core/usecases/update_database_model_usecase";
|
||||
import {
|
||||
IProjectInstanceModel,
|
||||
ProjectInstanceDbModel,
|
||||
} from "../../project_instance/project_instance_model";
|
||||
import {
|
||||
RealTimeValidationModel,
|
||||
pipelineRealTimeService,
|
||||
} from "../realtime_presentation";
|
||||
import { IProjectInstanceModel, ProjectInstanceDbModel } from "../../project_instance/project_instance_model";
|
||||
import { RealTimeValidationModel, pipelineRealTimeService } from "../realtime_presentation";
|
||||
|
||||
export class RunInstancePipelineUseCase {
|
||||
async call(model: RealTimeValidationModel): Promise<Result<Error, any>> {
|
||||
const { id } = model;
|
||||
|
||||
const readByIdDataBaseModelUseCase =
|
||||
await new ReadByIdDataBaseModelUseCase<IProjectInstanceModel>(
|
||||
ProjectInstanceDbModel
|
||||
).call(id);
|
||||
const readByIdDataBaseModelUseCase = await new ReadByIdDataBaseModelUseCase<IProjectInstanceModel>(
|
||||
ProjectInstanceDbModel
|
||||
).call(id);
|
||||
|
||||
if (readByIdDataBaseModelUseCase.isFailure()) {
|
||||
return readByIdDataBaseModelUseCase.forward();
|
||||
}
|
||||
|
||||
const projectModel = readByIdDataBaseModelUseCase.value.project;
|
||||
const projectModel = readByIdDataBaseModelUseCase.value;
|
||||
projectModel.isActive = true;
|
||||
|
||||
const updateDataBaseModelUseCase = await new UpdateDataBaseModelUseCase<
|
||||
IProjectInstanceModel,
|
||||
any
|
||||
>(ProjectInstanceDbModel).call(projectModel);
|
||||
const updateDataBaseModelUseCase = await new UpdateDataBaseModelUseCase<IProjectInstanceModel, any>(
|
||||
ProjectInstanceDbModel
|
||||
).call(projectModel);
|
||||
|
||||
if (updateDataBaseModelUseCase.isFailure()) {
|
||||
return updateDataBaseModelUseCase.forward();
|
||||
}
|
||||
pipelineRealTimeService.setPipelineDependency(
|
||||
projectModel.pipelines,
|
||||
projectModel.project.pipelines,
|
||||
App.staticFilesStoreDir() + projectModel.rootDir + "/",
|
||||
projectModel._id
|
||||
);
|
||||
|
|
|
@ -24,10 +24,7 @@ export const TriggerSchema = new Schema({
|
|||
|
||||
export const triggerSchema = "Trigger";
|
||||
|
||||
export const TriggerDBModel = model<ITriggerModel>(
|
||||
triggerSchema,
|
||||
TriggerSchema
|
||||
);
|
||||
export const TriggerDBModel = model<ITriggerModel>(triggerSchema, TriggerSchema);
|
||||
|
||||
export enum TriggerType {
|
||||
PROCESS = "PROCESS",
|
||||
|
|
|
@ -1,10 +1,7 @@
|
|||
import { TriggerDBModel, TriggerModel } from "./trigger_model";
|
||||
import { CrudController } from "../../core/controllers/crud_controller";
|
||||
|
||||
export class TriggerPresentation extends CrudController<
|
||||
TriggerModel,
|
||||
typeof TriggerDBModel
|
||||
> {
|
||||
export class TriggerPresentation extends CrudController<TriggerModel, typeof TriggerDBModel> {
|
||||
constructor() {
|
||||
super({
|
||||
url: "trigger",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue