From f525a76f6efda8be8b77edd6ecd00f8557a52927 Mon Sep 17 00:00:00 2001 From: IDONTSUDO Date: Sun, 3 Dec 2023 16:16:08 +0300 Subject: [PATCH] review app --- .DS_Store | Bin 0 -> 6148 bytes server/.gitignore | 3 +- server/src/core/controllers/app.ts | 5 +- server/src/core/extensions/extensions.ts | 1 - server/src/core/extensions/string.ts | 12 ---- server/src/core/interfaces/file.ts | 3 + server/src/core/model/process_model.ts | 2 +- ..._pipeline_to_realtime_service_scenario.ts} | 12 ++-- server/src/core/services/stack_service.ts | 2 +- server/src/core/services/trigger_service.ts | 2 +- .../models/pipeline_database_model.ts | 27 ++++++++ .../pipelines/models/pipeline_model.ts | 21 ++++++ .../models/pipeline_validation_model.ts | 17 +++++ .../src/features/pipelines/pipeline_model.ts | 57 --------------- .../pipelines/pipeline_presentation.ts | 3 +- .../process/models/process_database_model.ts | 35 ++++++++++ .../models/process_validation_model.ts | 31 +++++++++ server/src/features/process/process_model.ts | 65 ------------------ .../features/process/process_presentation.ts | 3 +- .../create_new_project_scenario.ts | 11 +-- .../upload_file_to_to_project_scenario.ts | 17 ++--- .../project_instance_database_model.ts} | 12 +--- .../project_instance_validation_model.ts | 12 ++++ .../project_instance_presentation.ts | 7 +- .../project_database_model.ts} | 11 +-- .../models/project_validation_model.ts | 9 +++ .../projects/projects_presentation.ts | 3 +- .../pipeline_status_usecase.ts | 0 .../run_instance_pipeline_usecase.ts | 5 +- .../realtime/realtime_presentation.ts | 4 +- .../trigger_database_model.ts} | 12 ---- .../models/trigger_validation_model.ts | 16 +++++ .../triggers/triggers_presentation.ts | 3 +- server/test/model/mock_pipelines.ts | 28 +++++++- server/test/services/trigger_service_test.ts | 2 +- ui/package.json | 3 + ui/public/index.html | 37 +++++----- ui/src/index.tsx | 4 +- 38 files changed, 268 insertions(+), 229 deletions(-) create mode 100644 .DS_Store create mode 100644 server/src/core/interfaces/file.ts rename server/src/core/{usecases/set_active_pipeline_to_realtime_service_usecase.ts => scenarios/set_active_pipeline_to_realtime_service_scenario.ts} (64%) create mode 100644 server/src/features/pipelines/models/pipeline_database_model.ts create mode 100644 server/src/features/pipelines/models/pipeline_model.ts create mode 100644 server/src/features/pipelines/models/pipeline_validation_model.ts delete mode 100644 server/src/features/pipelines/pipeline_model.ts create mode 100644 server/src/features/process/models/process_database_model.ts create mode 100644 server/src/features/process/models/process_validation_model.ts delete mode 100644 server/src/features/process/process_model.ts rename server/src/features/project_instance/{ => domain}/create_new_project_scenario.ts (63%) rename server/src/features/project_instance/{ => domain}/upload_file_to_to_project_scenario.ts (60%) rename server/src/features/project_instance/{project_instance_model.ts => models/project_instance_database_model.ts} (69%) create mode 100644 server/src/features/project_instance/models/project_instance_validation_model.ts rename server/src/features/projects/{projects_model.ts => models/project_database_model.ts} (70%) create mode 100644 server/src/features/projects/models/project_validation_model.ts rename server/src/features/realtime/{usecases => domain}/pipeline_status_usecase.ts (100%) rename server/src/features/realtime/{usecases => domain}/run_instance_pipeline_usecase.ts (91%) rename server/src/features/triggers/{trigger_model.ts => models/trigger_database_model.ts} (67%) create mode 100644 server/src/features/triggers/models/trigger_validation_model.ts diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..fd6d5acc49e931778b288643c9eedc906f4b3283 GIT binary patch literal 6148 zcmZQzU|@7AO)+F(5MW?n;9!8z4DAe90Z1N%F(jFwA|RR(Y(^?Wk!MbRa#Buy5>$>5 z1=7pLP|T3ZP{dFMB9Zii9M{Fbz+m$q48TS)F_bc7qN%ZAU|=u@EBOyrGfIqxz-S1J zhQMeDjE2By2;dF@Mu-##H-sJ~M?+vV1V%#u9s;29K>^fPU|?WyfYJ>R8YIQQ$iM(< zzJq8Mm?lU+fB_^1(h8zMT0t~OD+42l1vUe$m4T4~qLmTc4FTx`wfaFcSUUqF*k%wP ztet@oY%>D`BSbp`BSbp`BeaLY2+_{K2+_{K2(}&Ox>0&G1V%#u76Qx=h5)GkcV%F} z)&Ga68YM?VU^E1VWe6~`xCFa6fh%R~{sYyup!zfcNtzKxGH9X3@A## hlrl0ffV6_-!BsIM0|U4wA8iQ0LTHp84FURx005l&CFB4A literal 0 HcmV?d00001 diff --git a/server/.gitignore b/server/.gitignore index 64a820b..e71f475 100644 --- a/server/.gitignore +++ b/server/.gitignore @@ -7,4 +7,5 @@ coverage package-lock.json .*.swp build/ -model_create.ts \ No newline at end of file +model_create.ts +public \ No newline at end of file diff --git a/server/src/core/controllers/app.ts b/server/src/core/controllers/app.ts index dd59362..bc48b95 100644 --- a/server/src/core/controllers/app.ts +++ b/server/src/core/controllers/app.ts @@ -6,7 +6,7 @@ import { createServer } from "http"; import { SocketSubscriber } from "./socket_controller"; import { dirname } from "path"; import fileUpload from "express-fileupload"; -import { SetLastActivePipelineToRealTimeServiceUseCase } from "../usecases/set_active_pipeline_to_realtime_service_usecase"; +import { SetLastActivePipelineToRealTimeServiceScenario } from "../scenarios/set_active_pipeline_to_realtime_service_scenario"; import { CheckAndCreateStaticFilesFolderUseCase } from "../usecases/check_and_create_static_files_folder_usecase"; import { DataBaseConnectUseCase } from "../usecases/database_connect_usecase"; @@ -61,6 +61,7 @@ export class App { this.app.use(express.json()); this.app.use(express.urlencoded({ extended: true })); this.app.use(express.static("public")); + this.app.use( fileUpload({ createParentPath: true, @@ -76,7 +77,7 @@ export class App { async loadAppDependencies() { await new DataBaseConnectUseCase().call(); await new CheckAndCreateStaticFilesFolderUseCase().call(); - await new SetLastActivePipelineToRealTimeServiceUseCase().call(); + await new SetLastActivePipelineToRealTimeServiceScenario().call(); } static staticFilesStoreDir = () => { diff --git a/server/src/core/extensions/extensions.ts b/server/src/core/extensions/extensions.ts index 4963004..a9c94a7 100644 --- a/server/src/core/extensions/extensions.ts +++ b/server/src/core/extensions/extensions.ts @@ -12,7 +12,6 @@ declare global { interface String { isEmpty(): boolean; isNotEmpty(): boolean; - fixToPath(): string; lastElement(): string; } } diff --git a/server/src/core/extensions/string.ts b/server/src/core/extensions/string.ts index b607a13..6f2f1a2 100644 --- a/server/src/core/extensions/string.ts +++ b/server/src/core/extensions/string.ts @@ -16,16 +16,4 @@ export const StringExtensions = () => { return this[this.length - 1]; }; } - if ("".fixToPath === undefined) { - // eslint-disable-next-line no-extend-native - String.prototype.fixToPath = function () { - // eslint-disable-next-line @typescript-eslint/no-this-alias - let result = this; - const symbolPath = "/"; - if (this.lastElement != symbolPath) { - result = result.slice(0, -1); - } - return result; - }; - } }; diff --git a/server/src/core/interfaces/file.ts b/server/src/core/interfaces/file.ts new file mode 100644 index 0000000..9fc99c8 --- /dev/null +++ b/server/src/core/interfaces/file.ts @@ -0,0 +1,3 @@ +export interface IFile extends File { + data: Buffer; +} diff --git a/server/src/core/model/process_model.ts b/server/src/core/model/process_model.ts index c94b661..9f601ed 100644 --- a/server/src/core/model/process_model.ts +++ b/server/src/core/model/process_model.ts @@ -1,4 +1,4 @@ -import { Trigger } from "../../features/triggers/trigger_model"; +import { Trigger } from "../../features/triggers/models/trigger_database_model"; import { EXEC_TYPE } from "./exec_error_model"; export interface IPipeline { diff --git a/server/src/core/usecases/set_active_pipeline_to_realtime_service_usecase.ts b/server/src/core/scenarios/set_active_pipeline_to_realtime_service_scenario.ts similarity index 64% rename from server/src/core/usecases/set_active_pipeline_to_realtime_service_usecase.ts rename to server/src/core/scenarios/set_active_pipeline_to_realtime_service_scenario.ts index b5e91ee..8fac80e 100644 --- a/server/src/core/usecases/set_active_pipeline_to_realtime_service_usecase.ts +++ b/server/src/core/scenarios/set_active_pipeline_to_realtime_service_scenario.ts @@ -1,11 +1,13 @@ -import { IProjectInstanceModel, ProjectInstanceDbModel } from "../../features/project_instance/project_instance_model"; - +import { + IProjectInstanceModel, + ProjectInstanceDbModel, +} from "../../features/project_instance/models/project_instance_database_model"; import { pipelineRealTimeService } from "../../features/realtime/realtime_presentation"; import { App } from "../controllers/app"; -import { CreateFolderUseCase } from "./crete_folder_usecase"; -import { SearchDataBaseModelUseCase } from "./search_database_model_usecase"; +import { CreateFolderUseCase } from "../usecases/crete_folder_usecase"; +import { SearchDataBaseModelUseCase } from "../usecases/search_database_model_usecase"; -export class SetLastActivePipelineToRealTimeServiceUseCase { +export class SetLastActivePipelineToRealTimeServiceScenario { call = async (): Promise => { const result = await new SearchDataBaseModelUseCase(ProjectInstanceDbModel).call({ isActive: true, diff --git a/server/src/core/services/stack_service.ts b/server/src/core/services/stack_service.ts index 1fba601..9bf2967 100644 --- a/server/src/core/services/stack_service.ts +++ b/server/src/core/services/stack_service.ts @@ -7,7 +7,7 @@ import { Result } from "../helper/result"; import { ExecutorResult } from "../model/executor_result"; import { delay } from "../helper/delay"; import { TriggerService } from "./trigger_service"; -import { Trigger } from "../../features/triggers/trigger_model"; +import { Trigger } from "../../features/triggers/models/trigger_database_model"; export interface Iteration { hashes: IHashesCache | null; diff --git a/server/src/core/services/trigger_service.ts b/server/src/core/services/trigger_service.ts index 3f7c780..df8b1d9 100644 --- a/server/src/core/services/trigger_service.ts +++ b/server/src/core/services/trigger_service.ts @@ -3,7 +3,7 @@ import { IHashesCache } from "./files_change_notifier_service"; import { EventsFileChanger } from "../model/meta_data_file_manager_model"; import { Result } from "../helper/result"; import { TypedEvent } from "../helper/typed_event"; -import { Trigger, TriggerType } from "../../features/triggers/trigger_model"; +import { Trigger, TriggerType } from "../../features/triggers/models/trigger_database_model"; export class TriggerCallResult { results: Array; diff --git a/server/src/features/pipelines/models/pipeline_database_model.ts b/server/src/features/pipelines/models/pipeline_database_model.ts new file mode 100644 index 0000000..2c5c78f --- /dev/null +++ b/server/src/features/pipelines/models/pipeline_database_model.ts @@ -0,0 +1,27 @@ +import { Schema, model } from "mongoose"; +import { IPipeline } from "../../../core/model/process_model"; +import { schemaProcess } from "../../process/models/process_database_model"; +import { triggerSchema } from "../../triggers/models/trigger_database_model"; + +export const PipelineSchema = new Schema({ + process: { + type: Schema.Types.ObjectId, + ref: schemaProcess, + autopopulate: true, + default: null, + }, + trigger: { + type: Schema.Types.ObjectId, + ref: triggerSchema, + autopopulate: true, + default: null, + }, + stackGenerateType: { + type: String, + default: null, + }, +}).plugin(require("mongoose-autopopulate")); + +export const schemaPipeline = "Pipeline"; + +export const PipelineDBModel = model(schemaPipeline, PipelineSchema); diff --git a/server/src/features/pipelines/models/pipeline_model.ts b/server/src/features/pipelines/models/pipeline_model.ts new file mode 100644 index 0000000..0f5a443 --- /dev/null +++ b/server/src/features/pipelines/models/pipeline_model.ts @@ -0,0 +1,21 @@ +import { IsOptional, ValidateNested } from "class-validator"; +import { IPipeline, IProcess, StackGenerateType } from "../../../core/model/process_model"; +import { Type } from "class-transformer"; +import { ProcessModel } from "../../process/models/process_validation_model"; +import { TriggerModel } from "../../triggers/models/trigger_validation_model"; + +export class PipelineModel implements IPipeline { + @ValidateNested() + @Type(() => ProcessModel) + public process: IProcess; + + @ValidateNested() + @Type(() => TriggerModel) + public trigger: TriggerModel; + + @IsOptional() + public env = null; + + @IsOptional() + public stackGenerateType: StackGenerateType; +} diff --git a/server/src/features/pipelines/models/pipeline_validation_model.ts b/server/src/features/pipelines/models/pipeline_validation_model.ts new file mode 100644 index 0000000..c14fde3 --- /dev/null +++ b/server/src/features/pipelines/models/pipeline_validation_model.ts @@ -0,0 +1,17 @@ +import { IsMongoId, IsOptional } from "class-validator"; +import { IProcess, StackGenerateType } from "../../../core/model/process_model"; +import { TriggerModel } from "../../triggers/models/trigger_validation_model"; + +export class PipelineValidationModel { + @IsMongoId() + public process: IProcess; + + @IsMongoId() + public trigger: TriggerModel; + + @IsOptional() + public env = null; + + @IsOptional() + public stackGenerateType: StackGenerateType; +} diff --git a/server/src/features/pipelines/pipeline_model.ts b/server/src/features/pipelines/pipeline_model.ts deleted file mode 100644 index 37cf366..0000000 --- a/server/src/features/pipelines/pipeline_model.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { IsMongoId, IsOptional, ValidateNested } from "class-validator"; -import { Schema, model } from "mongoose"; -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"; - -export const PipelineSchema = new Schema({ - process: { - type: Schema.Types.ObjectId, - ref: schemaProcess, - autopopulate: true, - default: null, - }, - trigger: { - type: Schema.Types.ObjectId, - ref: triggerSchema, - autopopulate: true, - default: null, - }, - stackGenerateType: { - type: String, - default: null, - }, -}).plugin(require("mongoose-autopopulate")); - -export const schemaPipeline = "Pipeline"; - -export const PipelineDBModel = model(schemaPipeline, PipelineSchema); - -export class PipelineValidationModel { - @IsMongoId() - public process: IProcess; - - @IsMongoId() - public trigger: TriggerModel; - - @IsOptional() - public env = null; - - @IsOptional() - public stackGenerateType: StackGenerateType; -} - -export class PipelineModel implements IPipeline { - @ValidateNested() - @Type(() => ProcessModel) - public process: IProcess; - - @ValidateNested() - @Type(() => TriggerModel) - public trigger: TriggerModel; - @IsOptional() - public env = null; - @IsOptional() - public stackGenerateType: StackGenerateType; -} diff --git a/server/src/features/pipelines/pipeline_presentation.ts b/server/src/features/pipelines/pipeline_presentation.ts index ff23099..eefbe57 100644 --- a/server/src/features/pipelines/pipeline_presentation.ts +++ b/server/src/features/pipelines/pipeline_presentation.ts @@ -1,5 +1,6 @@ import { CrudController } from "../../core/controllers/crud_controller"; -import { PipelineDBModel, PipelineValidationModel } from "./pipeline_model"; +import { PipelineDBModel } from "./models/pipeline_database_model"; +import { PipelineValidationModel } from "./models/pipeline_validation_model"; export class PipelinePresentation extends CrudController { constructor() { diff --git a/server/src/features/process/models/process_database_model.ts b/server/src/features/process/models/process_database_model.ts new file mode 100644 index 0000000..646daf5 --- /dev/null +++ b/server/src/features/process/models/process_database_model.ts @@ -0,0 +1,35 @@ +import { Schema, model } from "mongoose"; +import { IProcess } from "../../../core/model/process_model"; + +export const ProcessSchema = new Schema({ + type: { + type: String, + }, + description: { + type: String, + }, + command: { + type: String, + }, + isGenerating: { + type: String, + }, + isLocaleCode: { + type: String, + }, + issueType: { + type: String, + }, + timeout: { + type: Number, + default: null, + }, + commit: { + type: String, + default: null, + }, +}); + +export const schemaProcess = "Process"; + +export const ProcessDBModel = model(schemaProcess, ProcessSchema); diff --git a/server/src/features/process/models/process_validation_model.ts b/server/src/features/process/models/process_validation_model.ts new file mode 100644 index 0000000..f9812ad --- /dev/null +++ b/server/src/features/process/models/process_validation_model.ts @@ -0,0 +1,31 @@ +import { IsBoolean, IsEnum, IsNumber, IsOptional, IsString } from "class-validator"; +import { EXEC_TYPE } from "../../../core/model/exec_error_model"; +import { IProcess, IssueType } from "../../../core/model/process_model"; + +export class ProcessModel implements IProcess { + @IsEnum(EXEC_TYPE) + public type: EXEC_TYPE; + + @IsString() + public description: string; + + @IsString() + public command: string; + + @IsBoolean() + public isGenerating: boolean; + + @IsBoolean() + public isLocaleCode: boolean; + + @IsEnum(IssueType) + public issueType: IssueType; + + @IsOptional() + @IsNumber() + public timeout?: number; + + @IsOptional() + @IsString() + public commit?: string; +} diff --git a/server/src/features/process/process_model.ts b/server/src/features/process/process_model.ts deleted file mode 100644 index 70a7ff6..0000000 --- a/server/src/features/process/process_model.ts +++ /dev/null @@ -1,65 +0,0 @@ -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"; - -export const ProcessSchema = new Schema({ - type: { - type: String, - }, - description: { - type: String, - }, - command: { - type: String, - }, - isGenerating: { - type: String, - }, - isLocaleCode: { - type: String, - }, - issueType: { - type: String, - }, - timeout: { - type: Number, - default: null, - }, - commit: { - type: String, - default: null, - }, -}); - -export const schemaProcess = "Process"; - -export const ProcessDBModel = model(schemaProcess, ProcessSchema); - -export class ProcessModel implements IProcess { - @IsEnum(EXEC_TYPE) - public type: EXEC_TYPE; - - @IsString() - public description: string; - - @IsString() - public command: string; - - @IsBoolean() - public isGenerating: boolean; - - @IsBoolean() - public isLocaleCode: boolean; - - @IsEnum(IssueType) - public issueType: IssueType; - - @IsOptional() - @IsNumber() - public timeout?: number; - - @IsOptional() - @IsString() - public commit?: string; -} diff --git a/server/src/features/process/process_presentation.ts b/server/src/features/process/process_presentation.ts index e5c417a..0967f68 100644 --- a/server/src/features/process/process_presentation.ts +++ b/server/src/features/process/process_presentation.ts @@ -1,5 +1,6 @@ import { CrudController } from "../../core/controllers/crud_controller"; -import { ProcessDBModel, ProcessModel } from "./process_model"; +import { ProcessDBModel } from "./models/process_database_model"; +import { ProcessModel } from "./models/process_validation_model"; export class ProcessPresentation extends CrudController { constructor() { diff --git a/server/src/features/project_instance/create_new_project_scenario.ts b/server/src/features/project_instance/domain/create_new_project_scenario.ts similarity index 63% rename from server/src/features/project_instance/create_new_project_scenario.ts rename to server/src/features/project_instance/domain/create_new_project_scenario.ts index 5199488..d738f1d 100644 --- a/server/src/features/project_instance/create_new_project_scenario.ts +++ b/server/src/features/project_instance/domain/create_new_project_scenario.ts @@ -1,8 +1,9 @@ -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 { 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 } from "../models/project_instance_database_model"; +import { ProjectInstanceValidationModel } from "../models/project_instance_validation_model"; import { v4 as uuidv4 } from "uuid"; export class CreateNewProjectInstanceScenario { diff --git a/server/src/features/project_instance/upload_file_to_to_project_scenario.ts b/server/src/features/project_instance/domain/upload_file_to_to_project_scenario.ts similarity index 60% rename from server/src/features/project_instance/upload_file_to_to_project_scenario.ts rename to server/src/features/project_instance/domain/upload_file_to_to_project_scenario.ts index 99e4c2c..87b96f1 100644 --- a/server/src/features/project_instance/upload_file_to_to_project_scenario.ts +++ b/server/src/features/project_instance/domain/upload_file_to_to_project_scenario.ts @@ -1,15 +1,11 @@ -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; -} +import { CallbackStrategyWithFileUpload, ResponseBase } from "../../../core/controllers/http_controller"; +import { Result } from "../../../core/helper/result"; +import { IFile } from "../../../core/interfaces/file"; +import { CreateFileUseCase } from "../../../core/usecases/create_file_usecase"; +import { PipelineStatusUseCase } from "../../realtime/domain/pipeline_status_usecase"; export class UploadCadFileToProjectScenario extends CallbackStrategyWithFileUpload { - checkingFileExpression: RegExp = RegExp(".pages"); + checkingFileExpression: RegExp = RegExp(".FCStd"); async call(file: IFile): ResponseBase { const pipelineStatusUseCase = await new PipelineStatusUseCase().call(); @@ -17,7 +13,6 @@ export class UploadCadFileToProjectScenario extends CallbackStrategyWithFileUplo 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(); diff --git a/server/src/features/project_instance/project_instance_model.ts b/server/src/features/project_instance/models/project_instance_database_model.ts similarity index 69% rename from server/src/features/project_instance/project_instance_model.ts rename to server/src/features/project_instance/models/project_instance_database_model.ts index f6c9edd..b0111bc 100644 --- a/server/src/features/project_instance/project_instance_model.ts +++ b/server/src/features/project_instance/models/project_instance_database_model.ts @@ -1,6 +1,5 @@ import { Schema, model } from "mongoose"; -import { IProjectModel, projectSchema } from "../projects/projects_model"; -import { IsMongoId, IsOptional, IsString } from "class-validator"; +import { IProjectModel, projectSchema } from "../../projects/models/project_database_model"; export interface IProjectInstanceModel { _id: string; @@ -32,12 +31,3 @@ export const ProjectInstanceSchema = new Schema({ export const schemaProjectInstance = "instance_project"; export const ProjectInstanceDbModel = model(schemaProjectInstance, ProjectInstanceSchema); - -export class ProjectInstanceValidationModel { - @IsMongoId() - public project: string; - @IsString() - public description: string; - @IsOptional() - public rootDir: string; -} diff --git a/server/src/features/project_instance/models/project_instance_validation_model.ts b/server/src/features/project_instance/models/project_instance_validation_model.ts new file mode 100644 index 0000000..709cc94 --- /dev/null +++ b/server/src/features/project_instance/models/project_instance_validation_model.ts @@ -0,0 +1,12 @@ +import { IsMongoId, IsOptional, IsString } from "class-validator"; + +export class ProjectInstanceValidationModel { + @IsMongoId() + public project: string; + + @IsString() + public description: string; + + @IsOptional() + public rootDir: string; +} diff --git a/server/src/features/project_instance/project_instance_presentation.ts b/server/src/features/project_instance/project_instance_presentation.ts index 18b9dd8..f8962c4 100644 --- a/server/src/features/project_instance/project_instance_presentation.ts +++ b/server/src/features/project_instance/project_instance_presentation.ts @@ -1,7 +1,8 @@ import { CrudController } from "../../core/controllers/crud_controller"; -import { CreateNewProjectInstanceScenario } from "./create_new_project_scenario"; -import { ProjectInstanceDbModel, ProjectInstanceValidationModel } from "./project_instance_model"; -import { UploadCadFileToProjectScenario } from "./upload_file_to_to_project_scenario"; +import { CreateNewProjectInstanceScenario } from "./domain/create_new_project_scenario"; +import { UploadCadFileToProjectScenario } from "./domain/upload_file_to_to_project_scenario"; +import { ProjectInstanceDbModel } from "./models/project_instance_database_model"; +import { ProjectInstanceValidationModel } from "./models/project_instance_validation_model"; export class ProjectInstancePresentation extends CrudController< ProjectInstanceValidationModel, diff --git a/server/src/features/projects/projects_model.ts b/server/src/features/projects/models/project_database_model.ts similarity index 70% rename from server/src/features/projects/projects_model.ts rename to server/src/features/projects/models/project_database_model.ts index 47ffde6..2948f94 100644 --- a/server/src/features/projects/projects_model.ts +++ b/server/src/features/projects/models/project_database_model.ts @@ -1,6 +1,6 @@ import { Schema, model } from "mongoose"; -import { PipelineValidationModel, schemaPipeline } from "../pipelines/pipeline_model"; -import { IsArray, IsString } from "class-validator"; +import { schemaPipeline } from "../../pipelines/models/pipeline_database_model"; +import { PipelineValidationModel } from "../../pipelines/models/pipeline_validation_model"; export interface IProjectModel { _id?: string; @@ -29,10 +29,3 @@ export const ProjectSchema = new Schema({ export const projectSchema = "Projects"; export const ProjectDBModel = model(projectSchema, ProjectSchema); - -export class ProjectValidationModel { - @IsArray() - public pipelines: [string]; - @IsString() - public description: string; -} diff --git a/server/src/features/projects/models/project_validation_model.ts b/server/src/features/projects/models/project_validation_model.ts new file mode 100644 index 0000000..6bd03d0 --- /dev/null +++ b/server/src/features/projects/models/project_validation_model.ts @@ -0,0 +1,9 @@ +import { IsArray, IsString } from "class-validator"; + +export class ProjectValidationModel { + @IsArray() + public pipelines: [string]; + + @IsString() + public description: string; +} diff --git a/server/src/features/projects/projects_presentation.ts b/server/src/features/projects/projects_presentation.ts index bb33018..253bf2c 100644 --- a/server/src/features/projects/projects_presentation.ts +++ b/server/src/features/projects/projects_presentation.ts @@ -1,5 +1,6 @@ import { CrudController } from "../../core/controllers/crud_controller"; -import { ProjectDBModel, ProjectValidationModel } from "./projects_model"; +import { ProjectDBModel } from "./models/project_database_model"; +import { ProjectValidationModel } from "./models/project_validation_model"; export class ProjectsPresentation extends CrudController { constructor() { diff --git a/server/src/features/realtime/usecases/pipeline_status_usecase.ts b/server/src/features/realtime/domain/pipeline_status_usecase.ts similarity index 100% rename from server/src/features/realtime/usecases/pipeline_status_usecase.ts rename to server/src/features/realtime/domain/pipeline_status_usecase.ts diff --git a/server/src/features/realtime/usecases/run_instance_pipeline_usecase.ts b/server/src/features/realtime/domain/run_instance_pipeline_usecase.ts similarity index 91% rename from server/src/features/realtime/usecases/run_instance_pipeline_usecase.ts rename to server/src/features/realtime/domain/run_instance_pipeline_usecase.ts index 16f70c9..ab8d50c 100644 --- a/server/src/features/realtime/usecases/run_instance_pipeline_usecase.ts +++ b/server/src/features/realtime/domain/run_instance_pipeline_usecase.ts @@ -2,7 +2,10 @@ 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 { + IProjectInstanceModel, + ProjectInstanceDbModel, +} from "../../project_instance/models/project_instance_database_model"; import { RealTimeValidationModel, pipelineRealTimeService } from "../realtime_presentation"; export class RunInstancePipelineUseCase { diff --git a/server/src/features/realtime/realtime_presentation.ts b/server/src/features/realtime/realtime_presentation.ts index eb99350..406ec5d 100644 --- a/server/src/features/realtime/realtime_presentation.ts +++ b/server/src/features/realtime/realtime_presentation.ts @@ -1,8 +1,8 @@ import { IsString } from "class-validator"; 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"; +import { RunInstancePipelineUseCase } from "./domain/run_instance_pipeline_usecase"; +import { PipelineStatusUseCase } from "./domain/pipeline_status_usecase"; export const pipelineRealTimeService = new PipelineRealTimeService(); diff --git a/server/src/features/triggers/trigger_model.ts b/server/src/features/triggers/models/trigger_database_model.ts similarity index 67% rename from server/src/features/triggers/trigger_model.ts rename to server/src/features/triggers/models/trigger_database_model.ts index 690cb6d..5da8fea 100644 --- a/server/src/features/triggers/trigger_model.ts +++ b/server/src/features/triggers/models/trigger_database_model.ts @@ -1,4 +1,3 @@ -import { IsArray, IsOptional, IsEnum, IsString } from "class-validator"; import { Schema, model } from "mongoose"; export interface ITriggerModel { @@ -31,17 +30,6 @@ export enum TriggerType { FILE = "FILE", } -export class TriggerModel implements ITriggerModel { - @IsOptional() - public _id: string; - @IsString() - public description; - @IsEnum(TriggerType) - public type: TriggerType; - @IsArray() - public value: string[]; -} - export interface Trigger { type: TriggerType; value: string[]; diff --git a/server/src/features/triggers/models/trigger_validation_model.ts b/server/src/features/triggers/models/trigger_validation_model.ts new file mode 100644 index 0000000..d54868b --- /dev/null +++ b/server/src/features/triggers/models/trigger_validation_model.ts @@ -0,0 +1,16 @@ +import { IsArray, IsOptional, IsEnum, IsString } from "class-validator"; +import { ITriggerModel, TriggerType } from "./trigger_database_model"; + +export class TriggerModel implements ITriggerModel { + @IsOptional() + public _id: string; + + @IsString() + public description; + + @IsEnum(TriggerType) + public type: TriggerType; + + @IsArray() + public value: string[]; +} diff --git a/server/src/features/triggers/triggers_presentation.ts b/server/src/features/triggers/triggers_presentation.ts index bd7b271..25146f5 100644 --- a/server/src/features/triggers/triggers_presentation.ts +++ b/server/src/features/triggers/triggers_presentation.ts @@ -1,5 +1,6 @@ -import { TriggerDBModel, TriggerModel } from "./trigger_model"; import { CrudController } from "../../core/controllers/crud_controller"; +import { TriggerDBModel } from "./models/trigger_database_model"; +import { TriggerModel } from "./models/trigger_validation_model"; export class TriggerPresentation extends CrudController { constructor() { diff --git a/server/test/model/mock_pipelines.ts b/server/test/model/mock_pipelines.ts index 42f5d0c..c76a421 100644 --- a/server/test/model/mock_pipelines.ts +++ b/server/test/model/mock_pipelines.ts @@ -1,6 +1,6 @@ import { EXEC_TYPE } from "../../src/core/model/exec_error_model"; import { IPipeline, IssueType, StackGenerateType } from "../../src/core/model/process_model"; -import { TriggerType } from "../../src/features/triggers/trigger_model"; +import { TriggerType } from "../../src/features/triggers/models/trigger_database_model"; export const mockSimplePipeline: IPipeline[] = [ { @@ -17,8 +17,8 @@ export const mockSimplePipeline: IPipeline[] = [ issueType: IssueType.WARNING, }, trigger: { - type: TriggerType.FILE, - value: ["context"], + type: TriggerType.PROCESS, + value: [""], }, env: null, stackGenerateType: StackGenerateType.SINGLETON, @@ -41,3 +41,25 @@ export const mockSimplePipeline: IPipeline[] = [ stackGenerateType: StackGenerateType.SINGLETON, }, ]; +// const p: IPipeline[] = [ +// { +// process: { +// type: EXEC_TYPE.EXEC, +// command: `nix run gitlab:robossembler/nix-robossembler-overlay#test-script '{ +// "filesMeta":[ +// {"type":"folder","name":"example", "path": null,"rewrite":true} +// ], +// "path":"$PATH" +// }'`, +// isGenerating: true, +// isLocaleCode: false, +// issueType: IssueType.WARNING, +// }, +// trigger: { +// type: TriggerType.FILE, +// value: ["context"], +// }, +// env: null, +// stackGenerateType: StackGenerateType.SINGLETON, +// }, +// ] diff --git a/server/test/services/trigger_service_test.ts b/server/test/services/trigger_service_test.ts index 250f3b7..93175c0 100644 --- a/server/test/services/trigger_service_test.ts +++ b/server/test/services/trigger_service_test.ts @@ -1,7 +1,7 @@ import { EventsFileChanger, MetaDataFileManagerModel } from "../../src/core/model/meta_data_file_manager_model"; import { TriggerService } from "../../src/core/services/trigger_service"; -import { TriggerType } from "../../src/features/triggers/trigger_model"; +import { TriggerType } from "../../src/features/triggers/models/trigger_database_model"; import { assert } from "../test"; abstract class TriggerTest { abstract test(): Promise; diff --git a/ui/package.json b/ui/package.json index 853ca31..64113dd 100644 --- a/ui/package.json +++ b/ui/package.json @@ -53,5 +53,8 @@ "last 1 firefox version", "last 1 safari version" ] + }, + "devDependencies": { + "@types/three": "^0.158.3" } } diff --git a/ui/public/index.html b/ui/public/index.html index 3dac7ba..2371e57 100644 --- a/ui/public/index.html +++ b/ui/public/index.html @@ -1,20 +1,21 @@ - - - - - - - - - robossembler: pipeline - - - -
- - + + + + + + + + + + robossembler: pipeline + + + + +
+ + + + \ No newline at end of file diff --git a/ui/src/index.tsx b/ui/src/index.tsx index 06966ef..0547828 100644 --- a/ui/src/index.tsx +++ b/ui/src/index.tsx @@ -9,9 +9,7 @@ import { SocketLister } from "./features/socket_lister/socket_lister"; import { extensions } from "./core/extensions/extensions"; extensions(); -const root = ReactDOM.createRoot( - document.getElementById("root") as HTMLElement -); +const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement); root.render( <>