import { Injectable, NestInterceptor, ExecutionContext, CallHandler, } from '@nestjs/common'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; export interface Response { statusCode: number; message: string; data: T; meta?: any; } @Injectable() export class TransformInterceptor implements NestInterceptor> { intercept( context: ExecutionContext, next: CallHandler ): Observable> { return next.handle().pipe( map((data: any) => { const response = context.switchToHttp().getResponse(); // Handle Pagination Response (Standardize) // ถ้า data มี structure { data: [], meta: {} } ให้ unzip ออกมา if (data && data.data && data.meta) { return { statusCode: response.statusCode, message: data.message || 'Success', data: data.data, meta: data.meta, }; } return { statusCode: response.statusCode, message: data?.message || 'Success', data: data?.result || data, }; }) ); } }