add core api

This commit is contained in:
ItsMalma
2025-11-15 22:28:58 +07:00
parent e6386648be
commit 8f91994f29
78 changed files with 6701 additions and 904 deletions

View File

@@ -1,4 +1,24 @@
import type { AbstractFileStorage } from "@/common/services/file-storage/abstract.file-storage";
import { LocalFileStorage } from "@/common/services/file-storage/local.file-storage";
import { serverConfig } from "@/configs/server.config";
import { AirlineController } from "@/modules/airline/airline.controller";
import { AirlineMapper } from "@/modules/airline/airline.mapper";
import { AirportController } from "@/modules/airport/airport.controller";
import { AirportMapper } from "@/modules/airport/airport.mapper";
import { CityController } from "@/modules/city/city.controller";
import { CityMapper } from "@/modules/city/city.mapper";
import { CountryController } from "@/modules/country/country.controller";
import { CountryMapper } from "@/modules/country/country.mapper";
import { FlightController } from "@/modules/flight/flight.controller";
import { FlightMapper } from "@/modules/flight/flight.mapper";
import { HotelFacilityController } from "@/modules/hotel-facility/hotel-facility.controller";
import { HotelFacilityMapper } from "@/modules/hotel-facility/hotel-facility.mapper";
import { HotelController } from "@/modules/hotel/hotel.controller";
import { HotelMapper } from "@/modules/hotel/hotel.mapper";
import { PackageController } from "@/modules/package/package.controller";
import { PackageMapper } from "@/modules/package/package.mapper";
import { TransportationController } from "@/modules/transportation/transportation.controller";
import { TransportationMapper } from "@/modules/transportation/transportation.mapper";
import compression from "compression";
import cors from "cors";
import express from "express";
@@ -7,28 +27,73 @@ import helmet from "helmet";
export class Application {
private readonly _app: express.Application;
// Services
private _fileStorage!: AbstractFileStorage;
public constructor() {
this._app = express();
}
public initializeServices() {
this._fileStorage = new LocalFileStorage();
}
public initializeMiddlewares() {
this._app.use(helmet());
this._app.use(cors());
this._app.use(compression());
this._app.use(express.json());
this._app.use(express.json({ limit: "1mb" }));
this._app.use(express.urlencoded());
}
public initializeRouters() {
// this._app.use("/countries");
// this._app.use("/cities");
// this._app.use("/airlines");
// this._app.use("/airports");
// this._app.use("/flights");
// this._app.use("/hotel-facilities");
// this._app.use("/hotels");
// this._app.use("/transportations");
// this._app.use("/packages");
const countryMapper = new CountryMapper();
const cityMapper = new CityMapper(countryMapper);
const airlineMapper = new AirlineMapper();
const airportMapper = new AirportMapper(cityMapper);
const flightMapper = new FlightMapper(airlineMapper, airportMapper);
const hotelFacilityMapper = new HotelFacilityMapper();
const hotelMapper = new HotelMapper(cityMapper, hotelFacilityMapper);
const transportationMapper = new TransportationMapper();
const packageMapper = new PackageMapper(
flightMapper,
hotelMapper,
transportationMapper,
);
const countryRouter = new CountryController(countryMapper).buildRouter();
const cityRouter = new CityController(cityMapper).buildRouter();
const airlineRouter = new AirlineController(
airlineMapper,
this._fileStorage,
).buildRouter();
const airportRouter = new AirportController(airportMapper).buildRouter();
const flightRouter = new FlightController(flightMapper).buildRouter();
const hotelFacilityRouter = new HotelFacilityController(
hotelFacilityMapper,
).buildRouter();
const hotelRouter = new HotelController(
hotelMapper,
this._fileStorage,
).buildRouter();
const transportationRouter = new TransportationController(
transportationMapper,
this._fileStorage,
).buildRouter();
const packageRouter = new PackageController(
packageMapper,
this._fileStorage,
).buildRouter();
this._app.use("/countries", countryRouter);
this._app.use("/cities", cityRouter);
this._app.use("/airlines", airlineRouter);
this._app.use("/airports", airportRouter);
this._app.use("/flights", flightRouter);
this._app.use("/hotel-facilities", hotelFacilityRouter);
this._app.use("/hotels", hotelRouter);
this._app.use("/transportations", transportationRouter);
this._app.use("/packages", packageRouter);
}
public initializeErrorHandlers() {}