diff --git a/apps/backend/src/app.module.ts b/apps/backend/src/app.module.ts index 06db044..aca18d8 100644 --- a/apps/backend/src/app.module.ts +++ b/apps/backend/src/app.module.ts @@ -1,4 +1,4 @@ -import { Module } from '@nestjs/common'; +import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common'; import { ConfigModule } from '@nestjs/config'; import { CacheModule } from './modules/cache/cache.module'; import { MoexClientModule } from './modules/moex-client/moex-client.module'; @@ -11,6 +11,7 @@ import { PortfolioModule } from './modules/portfolio/portfolio.module'; import { PrismaModule } from './modules/prisma/prisma.module'; import { AuthModule } from './modules/auth/auth.module'; import { TBankModule } from './modules/tbank/tbank.module'; +import { RequestLoggingMiddleware } from './common/middleware/request-logging.middleware'; import configuration from './config/configuration'; @Module({ @@ -29,4 +30,8 @@ import configuration from './config/configuration'; TBankModule, ], }) -export class AppModule {} +export class AppModule implements NestModule { + configure(consumer: MiddlewareConsumer) { + consumer.apply(RequestLoggingMiddleware).forRoutes('*'); + } +} diff --git a/apps/backend/src/main.ts b/apps/backend/src/main.ts index 7b3e8db..022be54 100644 --- a/apps/backend/src/main.ts +++ b/apps/backend/src/main.ts @@ -4,7 +4,6 @@ import { AppModule } from './app.module'; import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger'; import { HttpExceptionFilter } from './common/filters/http-exception.filter'; import { TransformInterceptor } from './common/interceptors/transform.interceptor'; -import { RequestLoggingMiddleware } from './common/middleware/request-logging.middleware'; import { ValidationPipe } from '@nestjs/common'; import cookieParser from 'cookie-parser'; @@ -18,9 +17,6 @@ async function bootstrap() { app.useGlobalInterceptors(new TransformInterceptor()); app.use(cookieParser()); - const reqLogMiddleware = new RequestLoggingMiddleware(); - app.use(reqLogMiddleware.use.bind(reqLogMiddleware)); - app.enableCors({ origin: true, credentials: true }); const config = new DocumentBuilder() diff --git a/apps/backend/src/modules/health/health.service.spec.ts b/apps/backend/src/modules/health/health.service.spec.ts index ae53473..3f6d21a 100644 --- a/apps/backend/src/modules/health/health.service.spec.ts +++ b/apps/backend/src/modules/health/health.service.spec.ts @@ -6,10 +6,10 @@ import configuration from '../../config/configuration'; describe('HealthService', () => { let service: HealthService; - let prisma: Pick; + const prisma = { $queryRaw: vi.fn() } as any; beforeEach(async () => { - prisma = { $queryRaw: vi.fn() }; + vi.clearAllMocks(); const module: TestingModule = await Test.createTestingModule({ imports: [ConfigModule.forRoot({ load: [configuration], isGlobal: true })], diff --git a/docs/features/backend-architecture-improvements/tasks.md b/docs/features/backend-architecture-improvements/tasks.md index ec33282..42a5194 100644 --- a/docs/features/backend-architecture-improvements/tasks.md +++ b/docs/features/backend-architecture-improvements/tasks.md @@ -39,10 +39,11 @@ - [x] 4.6 Тесты: `health.service.spec.ts` (3 теста) + `envelope-contract.spec.ts` проверяет checks - [x] Все 120 тестов проходят -## Итерация 5: RequestLoggingMiddleware DI +## Итерация 5: RequestLoggingMiddleware DI ✅ -- [ ] 5.1 Переписать подключение через `configure()` в `AppModule` -- [ ] 5.2 Убрать `app.use()` из `main.ts` +- [x] 5.1 `AppModule` implements `NestModule` с `configure()` → `consumer.apply(RequestLoggingMiddleware).forRoutes('*')` +- [x] 5.2 Убран `new RequestLoggingMiddleware()` и `app.use()` из `main.ts` +- [x] 120 тестов проходят, build успешен ## Итерация 6: MoexClientService split (отдельный эпик)