admin area
This commit is contained in:
53
apps/api/src/domain/admin/AdminModule.ts
Normal file
53
apps/api/src/domain/admin/AdminModule.ts
Normal file
@@ -0,0 +1,53 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { InMemoryAdminPersistenceModule } from '../../persistence/inmemory/InMemoryAdminPersistenceModule';
|
||||
import { AdminService } from './AdminService';
|
||||
import { AdminController } from './AdminController';
|
||||
import { ListUsersPresenter } from './presenters/ListUsersPresenter';
|
||||
import { DashboardStatsPresenter } from './presenters/DashboardStatsPresenter';
|
||||
import { AuthModule } from '../auth/AuthModule';
|
||||
import { ListUsersUseCase } from '@core/admin/application/use-cases/ListUsersUseCase';
|
||||
import { GetDashboardStatsUseCase } from './use-cases/GetDashboardStatsUseCase';
|
||||
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
|
||||
import type { ListUsersResult } from '@core/admin/application/use-cases/ListUsersUseCase';
|
||||
import type { DashboardStatsResult } from './use-cases/GetDashboardStatsUseCase';
|
||||
import type { IAdminUserRepository } from '@core/admin/domain/repositories/IAdminUserRepository';
|
||||
|
||||
export const ADMIN_USER_REPOSITORY_TOKEN = 'IAdminUserRepository';
|
||||
export const LIST_USERS_OUTPUT_PORT_TOKEN = 'ListUsersOutputPort';
|
||||
export const DASHBOARD_STATS_OUTPUT_PORT_TOKEN = 'DashboardStatsOutputPort';
|
||||
|
||||
@Module({
|
||||
imports: [InMemoryAdminPersistenceModule, AuthModule],
|
||||
controllers: [AdminController],
|
||||
providers: [
|
||||
AdminService,
|
||||
ListUsersPresenter,
|
||||
DashboardStatsPresenter,
|
||||
{
|
||||
provide: LIST_USERS_OUTPUT_PORT_TOKEN,
|
||||
useExisting: ListUsersPresenter,
|
||||
},
|
||||
{
|
||||
provide: DASHBOARD_STATS_OUTPUT_PORT_TOKEN,
|
||||
useExisting: DashboardStatsPresenter,
|
||||
},
|
||||
{
|
||||
provide: ListUsersUseCase,
|
||||
useFactory: (
|
||||
repository: IAdminUserRepository,
|
||||
output: UseCaseOutputPort<ListUsersResult>,
|
||||
) => new ListUsersUseCase(repository, output),
|
||||
inject: [ADMIN_USER_REPOSITORY_TOKEN, LIST_USERS_OUTPUT_PORT_TOKEN],
|
||||
},
|
||||
{
|
||||
provide: GetDashboardStatsUseCase,
|
||||
useFactory: (
|
||||
repository: IAdminUserRepository,
|
||||
output: UseCaseOutputPort<DashboardStatsResult>,
|
||||
) => new GetDashboardStatsUseCase(repository, output),
|
||||
inject: [ADMIN_USER_REPOSITORY_TOKEN, DASHBOARD_STATS_OUTPUT_PORT_TOKEN],
|
||||
},
|
||||
],
|
||||
exports: [AdminService],
|
||||
})
|
||||
export class AdminModule {}
|
||||
Reference in New Issue
Block a user