webstudio/server/src/core/controllers/crud_controller.ts
2023-10-26 17:44:54 +03:00

34 lines
1.2 KiB
TypeScript

import { IRouteModel } from "../interfaces/router";
import { CreateDataBaseModelUseCase } from "../usecases/create_database_model_usecase";
import { DeleteDataBaseModelUseCase } from "../usecases/delete_database_model_usecase";
import { PaginationDataBaseModelUseCase } from "../usecases/pagination_database_model_usecase";
import { UpdateDataBaseModelUseCase } from "../usecases/update_database_model_usecase";
import { CoreHttpController } from "./http_controller";
import mongoose from "mongoose";
export class CrudController<V, D> extends CoreHttpController<V> {
dataBaseModel: mongoose.Model<D>;
constructor(routerModel: IRouteModel) {
super(routerModel);
this.url = "/" + routerModel.url;
this.validationModel = routerModel.validationModel;
this.dataBaseModel = routerModel.databaseModel;
this.init();
}
init() {
this.routes["POST"] = new CreateDataBaseModelUseCase<D>(
this.dataBaseModel
).call;
this.routes["GET"] = new PaginationDataBaseModelUseCase<D>(
this.dataBaseModel
).call;
this.routes["DELETE"] = new DeleteDataBaseModelUseCase<D>(
this.dataBaseModel
).call;
this.routes["PUT"] = new UpdateDataBaseModelUseCase<V, D>(
this.dataBaseModel
).call;
}
}