/
coffe
/
api
Обзор
Документация
Войти
/
coffe
/
api
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
main
src/common/interceptors/request-stat.interceptor.ts
42 строки
1 KB
vwency
init
08 май 2026, 01:38
08 май 2026, 01:38
47ccfb3
Код
Авторство
О чём код?
import { CallHandler, ExecutionContext, Injectable, NestInterceptor } from '@nestjs/common' import { Observable, tap, catchError, throwError } from 'rxjs' import { PrismaService } from 'src/prisma/prisma.service' @Injectable() export class RequestStatInterceptor implements NestInterceptor { constructor(private prisma: PrismaService) {} intercept(context: ExecutionContext, next: CallHandler): Observable<any> { const req = context.switchToHttp().getRequest() const res = context.switchToHttp().getResponse() if (!req.url?.includes('/orders')) { return next.handle() } return next.handle().pipe( tap(() => { this.prisma.requestStat.create({ data: { endpoint: req.route?.path ?? req.url, method: req.method, status: res.statusCode, success: res.statusCode < 400, }, }).catch(() => {}) }), catchError((err) => { const status = err?.status ?? 500 this.prisma.requestStat.create({ data: { endpoint: req.route?.path ?? req.url, method: req.method, status, success: false, }, }).catch(() => {}) return throwError(() => err) }), ) } }