webstudio/server/src/features/projects/projects_presentation.ts

42 lines
1.6 KiB
TypeScript
Raw Normal View History

2023-10-26 17:44:54 +03:00
import { CrudController } from "../../core/controllers/crud_controller";
import { ProjectDBModel } from "../_projects/models/project_database_model";
import { CreateNewProjectInstanceScenario } from "./domain/create_new_project_scenario";
import { GetActiveProjectScenario } from "./domain/get_active_project_scenario";
import { RobossemblerAssetsNetworkMapperScenario } from "./domain/robossembler_assets_network_mapper_scenario";
import { SetActiveProjectScenario } from "./domain/set_active_project_use_scenario";
import { UploadCadFileToProjectScenario } from "./domain/upload_file_to_to_project_scenario";
import { ProjectInstanceValidationModel as ProjectsValidationModel } from "./models/project_instance_validation_model";
2023-10-26 17:44:54 +03:00
export class ProjectsPresentation extends CrudController<ProjectsValidationModel, typeof ProjectDBModel> {
2023-10-26 17:44:54 +03:00
constructor() {
super({
validationModel: ProjectsValidationModel,
url: "projects",
2023-10-26 17:44:54 +03:00
databaseModel: ProjectDBModel,
});
super.post(new CreateNewProjectInstanceScenario().call);
this.subRoutes.push({
method: "POST",
subUrl: "set/active/project",
fn: new SetActiveProjectScenario(),
});
this.subRoutes.push({
method: "GET",
subUrl: "get/active/project/id",
fn: new GetActiveProjectScenario(),
});
this.subRoutes.push({
method: "POST",
subUrl: "upload",
fn: new UploadCadFileToProjectScenario(),
});
this.subRoutes.push({
method: "GET",
subUrl: "assets",
fn: new RobossemblerAssetsNetworkMapperScenario(),
});
2023-10-26 17:44:54 +03:00
}
}