import { Injectable, NestInterceptor, ExecutionContext, CallHandler, HttpStatus, BadRequestException, } from '@nestjs/common'; import { map, catchError } from 'rxjs/operators'; import { Observable, throwError } from 'rxjs'; export interface Response { statusCode: number; data: T; } /** * transform response to client */ @Injectable() export class TransformResInterceptor implements NestInterceptor> { intercept( context: ExecutionContext, next: CallHandler, ): Observable> { return next .handle() .pipe(map((data) => ({ statusCode: HttpStatus.OK, data }))); } } /** * Handle error in here. * Normally depend on status which from milvus service. */ @Injectable() export class ErrorInterceptor implements NestInterceptor { intercept(context: ExecutionContext, next: CallHandler): Observable { return next.handle().pipe( catchError((err) => { console.error('---error interceptor---', err.response); if (err.response) { return throwError(err); } return throwError(new BadRequestException(err.toString())); }), ); } }