import { hook } from '@modern-js/runtime/server';
import {
  Injectable,
  MiddlewareConsumer,
  Module,
  NestMiddleware,
} from '@nestjs/common';
import { Request, Response, NextFunction } from 'express';

@Injectable()
export class LoggerMiddleware implements NestMiddleware {
  use(req: Request, res: Response, next: NextFunction) {
    console.info(`access url: ${req.url}`);
    next();
  }
}

@Module({
  imports: []
})
export class AppModule {
  configure(consumer: MiddlewareConsumer) {
    consumer.apply(LoggerMiddleware).forRoutes('*');
  }
}

export default hook(({ addMiddleware }) => {
  addMiddleware(AppModule);
});
