typescript-express-starter
Version:
Quick and Easy TypeScript Express Starter
43 lines (31 loc) β’ 1.4 kB
text/typescript
import 'reflect-metadata';
import { container } from 'tsyringe';
// Repository
import { UsersRepository } from '@repositories/users.repository';
// Service
import { AuthService } from '@services/auth.service';
import { UsersService } from '@services/users.service';
// Controller
import { AuthController } from '@controllers/auth.controller';
import { UsersController } from '@controllers/users.controller';
// Route
import { AuthRoute } from '@routes/auth.route';
import { UsersRoute } from '@routes/users.route';
let isContainerInitialized = false;
export function setupContainer() {
if (isContainerInitialized) return;
// π Infrastructure Layer - λͺ
μμ κ΄λ¦¬ (μμ μ± μ°μ )
const usersRepository = new UsersRepository();
container.registerInstance(UsersRepository, usersRepository);
// π Business Layer - λͺ
μμ κ΄λ¦¬ (μμ‘΄μ± λ³΅μ‘λ κ³ λ €)
const authService = new AuthService(usersRepository);
const usersService = new UsersService(usersRepository);
container.registerInstance(AuthService, authService);
container.registerInstance(UsersService, usersService);
// π¨ Presentation Layer - μλ μ£Όμ
(νΈμμ± μ°μ )
container.registerSingleton(AuthController);
container.registerSingleton(UsersController);
container.registerSingleton(AuthRoute);
container.registerSingleton(UsersRoute);
isContainerInitialized = true;
}