11import "dotenv/config" ;
2- import { Logger , MiddlewareConsumer , Module } from "@nestjs/common" ;
2+ import { Logger , MiddlewareConsumer , Module , RequestMethod } from "@nestjs/common" ;
33import { HTTPLoggerMiddleware } from "./middleware/req.res.logger" ;
44import { loggingMiddleware , PrismaModule } from "nestjs-prisma" ;
55import { ConfigModule } from "@nestjs/config" ;
66import { UsersModule } from "./users/users.module" ;
77import { AppService } from "./app.service" ;
88import { AppController } from "./app.controller" ;
9+ import { MetricsController } from "./metrics.controller" ;
10+ import { TerminusModule } from '@nestjs/terminus' ;
11+ import { HealthController } from "./health.controller" ;
912
1013const DB_HOST = process . env . POSTGRES_HOST || "localhost" ;
1114const DB_USER = process . env . POSTGRES_USER || "postgres" ;
@@ -14,33 +17,41 @@ const DB_PORT = process.env.POSTGRES_PORT || 5432;
1417const DB_NAME = process . env . POSTGRES_DATABASE || "postgres" ;
1518const DB_SCHEMA = process . env . DB_SCHEMA || "users" ;
1619
20+ function getMiddlewares ( ) {
21+ if ( process . env . PRISMA_LOGGING ) {
22+ return [
23+ // configure your prisma middleware
24+ loggingMiddleware ( {
25+ logger : new Logger ( "PrismaMiddleware" ) ,
26+ logLevel : "debug"
27+ } )
28+ ] ;
29+ }
30+ return [ ] ;
31+ }
32+
1733@Module ( {
1834 imports : [
1935 ConfigModule . forRoot ( ) ,
36+ TerminusModule ,
2037 PrismaModule . forRoot ( {
2138 isGlobal : true ,
2239 prismaServiceOptions :{
2340 prismaOptions :{
24- log : [ "query" , "info" , " error", "warn" ] ,
41+ log : [ "error" , "warn" ] ,
2542 errorFormat : "pretty" ,
2643 datasourceUrl : `postgresql://${ DB_USER } :${ DB_PWD } @${ DB_HOST } :${ DB_PORT } /${ DB_NAME } ?schema=${ DB_SCHEMA } &connection_limit=5` ,
2744 } ,
28- middlewares : [
29- // configure your prisma middleware
30- loggingMiddleware ( {
31- logger : new Logger ( "PrismaMiddleware" ) ,
32- logLevel : "log"
33- } )
34- ]
45+ middlewares : getMiddlewares ( ) ,
3546 } ,
3647 } ) ,
3748 UsersModule
3849 ] ,
39- controllers : [ AppController ] ,
50+ controllers : [ AppController , MetricsController , HealthController ] ,
4051 providers : [ AppService ]
4152} )
4253export class AppModule { // let's add a middleware on all routes
4354 configure ( consumer : MiddlewareConsumer ) {
44- consumer . apply ( HTTPLoggerMiddleware ) . forRoutes ( "*" ) ;
55+ consumer . apply ( HTTPLoggerMiddleware ) . exclude ( { path : 'metrics' , method : RequestMethod . ALL } , { path : 'health' , method : RequestMethod . ALL } ) . forRoutes ( '*' ) ;
4556 }
4657}
0 commit comments