import { Module } from '@nestjs/common'; import { PrismaModule } from '../../common/prisma-adapter/prisma.module.js'; import { ProjectPrismaRepository } from './infrastructure/persistence/prisma/repositories/project.prisma-repository.js'; import { PROJECT_REPOSITORY } from './domain/repositories/project.repository.interface.js'; import { ProjectController } from './presentation/controllers/project.controller.js'; import { CreateProjectUseCase } from './application/use-cases/create-project/create-project.use-case.js'; import { GetProjectUseCase } from './application/use-cases/get-project/get-project.use-case.js'; import { ListProjectsUseCase } from './application/use-cases/list-projects/list-projects.use-case.js'; import { UpdateProjectUseCase } from './application/use-cases/update-project/update-project.use-case.js'; import { DeleteProjectUseCase } from './application/use-cases/delete-project/delete-project.use-case.js'; import { ProjectResolver } from './presentation/resolvers/project.resolver.js'; @Module({ imports: [PrismaModule], controllers: [ProjectController], providers: [ CreateProjectUseCase, GetProjectUseCase, ListProjectsUseCase, UpdateProjectUseCase, DeleteProjectUseCase, ProjectResolver, { // Domain видит только интерфейс IProjectRepository, // конкретную реализацию (Prisma) подставляет DI-контейнер здесь provide: PROJECT_REPOSITORY, useClass: ProjectPrismaRepository, }, ], exports: [PROJECT_REPOSITORY], }) export class ProjectModule {}