From 72d691b0453d28b8f726cd2e99b774572e9177de Mon Sep 17 00:00:00 2001 From: A1BFF9F Date: Sat, 13 Apr 2024 18:08:23 +0200 Subject: [PATCH] add lib structure and loggingmodule --- .vscode/settings.json | 2 ++ apps/auth/src/auth.module.ts | 2 ++ apps/auth/src/main.ts | 2 ++ apps/gateway/src/auth.controller.ts | 2 +- apps/gateway/src/gateway.module.ts | 5 +++-- .../gateway/src}/global-exception-filter.ts | 0 apps/gateway/src/main.ts | 5 +++-- .../src/database/abstract.repository.ts | 17 ----------------- libs/common/src/database/abstract.schema.ts | 8 -------- libs/common/src/database/database.module.ts | 19 ------------------- libs/common/src/database/index.ts | 3 --- libs/common/src/{lib => guards}/auth.guard.ts | 0 libs/common/src/guards/index.ts | 1 + libs/common/src/index.ts | 3 ++- libs/common/src/logger/index.ts | 1 + libs/common/src/logger/logger.module.ts | 18 ++++++++++++++++++ package.json | 3 +++ 17 files changed, 38 insertions(+), 53 deletions(-) create mode 100644 .vscode/settings.json rename {libs/common/src/lib => apps/gateway/src}/global-exception-filter.ts (100%) delete mode 100644 libs/common/src/database/abstract.repository.ts delete mode 100644 libs/common/src/database/abstract.schema.ts delete mode 100644 libs/common/src/database/database.module.ts delete mode 100644 libs/common/src/database/index.ts rename libs/common/src/{lib => guards}/auth.guard.ts (100%) create mode 100644 libs/common/src/guards/index.ts create mode 100644 libs/common/src/logger/index.ts create mode 100644 libs/common/src/logger/logger.module.ts diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/apps/auth/src/auth.module.ts b/apps/auth/src/auth.module.ts index df074f1..0ac3f11 100644 --- a/apps/auth/src/auth.module.ts +++ b/apps/auth/src/auth.module.ts @@ -7,9 +7,11 @@ import { jwtConstants } from './auth.constants'; import { MongooseModule } from '@nestjs/mongoose'; import { UsersService } from './users/users.service'; import { UserSchema } from './users/users.schema'; +import { LoggerModule } from '@app/common'; @Module({ imports: [ + LoggerModule, UsersModule, JwtModule.register({ global: true, diff --git a/apps/auth/src/main.ts b/apps/auth/src/main.ts index 305eac3..f3aad11 100644 --- a/apps/auth/src/main.ts +++ b/apps/auth/src/main.ts @@ -1,6 +1,7 @@ import { NestFactory } from '@nestjs/core'; import { AuthModule } from './auth.module'; import { MicroserviceOptions, Transport } from '@nestjs/microservices'; +import { Logger } from 'nestjs-pino'; async function bootstrap() { const app = await NestFactory.createMicroservice( @@ -12,6 +13,7 @@ async function bootstrap() { }, }, ); + app.useLogger(app.get(Logger)); await app.listen(); } diff --git a/apps/gateway/src/auth.controller.ts b/apps/gateway/src/auth.controller.ts index 993d6b2..9f34350 100644 --- a/apps/gateway/src/auth.controller.ts +++ b/apps/gateway/src/auth.controller.ts @@ -4,7 +4,7 @@ import { SignInDto } from 'apps/auth/src/dto/sign-in.dto'; import { CreateUserDto } from 'apps/auth/src/dto/create-user.dto'; import { ClientProxy } from '@nestjs/microservices'; import { Observable, tap } from 'rxjs'; -import { Public } from '@app/common/lib/auth.guard'; +import { Public } from '@app/common'; import { Response, Request } from 'express'; @Controller('auth') diff --git a/apps/gateway/src/gateway.module.ts b/apps/gateway/src/gateway.module.ts index e699cfd..fa70426 100644 --- a/apps/gateway/src/gateway.module.ts +++ b/apps/gateway/src/gateway.module.ts @@ -1,4 +1,4 @@ -import { Module } from '@nestjs/common'; +import { Logger, Module } from '@nestjs/common'; import { GatewayController } from './gateway.controller'; import { GatewayService } from './gateway.service'; import { AuthController } from 'apps/gateway/src/auth.controller'; @@ -6,11 +6,12 @@ import { ClientsModule, Transport } from '@nestjs/microservices'; import { JwtModule } from '@nestjs/jwt'; import { jwtConstants } from 'apps/auth/src/auth.constants'; import { APP_GUARD } from '@nestjs/core'; -import { AuthGuard } from '@app/common/lib/auth.guard'; import { WorkoutsController } from './workouts.controller'; +import { AuthGuard } from '@app/common'; @Module({ imports: [ + LoggerModule, ClientsModule.register([ { name: 'AUTH_SERVICE', diff --git a/libs/common/src/lib/global-exception-filter.ts b/apps/gateway/src/global-exception-filter.ts similarity index 100% rename from libs/common/src/lib/global-exception-filter.ts rename to apps/gateway/src/global-exception-filter.ts diff --git a/apps/gateway/src/main.ts b/apps/gateway/src/main.ts index 7d2f21d..ad813df 100644 --- a/apps/gateway/src/main.ts +++ b/apps/gateway/src/main.ts @@ -6,8 +6,9 @@ import { } from '@nestjs/common'; import { ExpressAdapter } from '@nestjs/platform-express'; import { GatewayModule } from './gateway.module'; -import { AllGlobalExceptionsFilter } from '@app/common/lib/global-exception-filter'; +import { AllGlobalExceptionsFilter } from './global-exception-filter'; import * as cookieParser from 'cookie-parser'; +import { Logger } from 'nestjs-pino'; async function bootstrap() { const app: INestApplication & INestMicroservice = await NestFactory.create( @@ -18,7 +19,7 @@ async function bootstrap() { app.useGlobalPipes(new ValidationPipe({ whitelist: true })); app.useGlobalFilters(new AllGlobalExceptionsFilter()); app.use(cookieParser()); - + app.useLogger(app.get('Logger')); await app.listen(3000); } bootstrap(); diff --git a/libs/common/src/database/abstract.repository.ts b/libs/common/src/database/abstract.repository.ts deleted file mode 100644 index 0f3aefd..0000000 --- a/libs/common/src/database/abstract.repository.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Logger } from '@nestjs/common'; -import { Model, Types } from 'mongoose'; -import { AbstractDocument } from './abstract.schema'; - -export abstract class AbstractRepository { - protected abstract readonly logger: Logger; - - constructor(protected readonly model: Model) {} - - async create(document: Omit): Promise { - const createdDocument = new this.model({ - ...document, - _id: new Types.ObjectId(), - }); - return (await createdDocument.save()).toJSON() as unknown as TDocument; - } -} diff --git a/libs/common/src/database/abstract.schema.ts b/libs/common/src/database/abstract.schema.ts deleted file mode 100644 index 87eac1d..0000000 --- a/libs/common/src/database/abstract.schema.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Prop, Schema } from '@nestjs/mongoose'; -import { SchemaTypes, Types } from 'mongoose'; - -@Schema() -export class AbstractDocument { - @Prop({ type: SchemaTypes.ObjectId }) - _id: Types.ObjectId; -} diff --git a/libs/common/src/database/database.module.ts b/libs/common/src/database/database.module.ts deleted file mode 100644 index aa89caf..0000000 --- a/libs/common/src/database/database.module.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Module } from '@nestjs/common'; -import { ConfigService } from '@nestjs/config'; -import { ModelDefinition, MongooseModule } from '@nestjs/mongoose'; - -@Module({ - imports: [ - MongooseModule.forRootAsync({ - useFactory: (configService: ConfigService) => ({ - uri: configService.get('MONGODB_URI'), - }), - inject: [ConfigService], - }), - ], -}) -export class DatabaseModule { - static forFeature(models: ModelDefinition[]) { - return MongooseModule.forFeature(models); - } -} diff --git a/libs/common/src/database/index.ts b/libs/common/src/database/index.ts deleted file mode 100644 index aa69c4f..0000000 --- a/libs/common/src/database/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './database.module'; -export * from './abstract.repository'; -export * from './abstract.schema'; diff --git a/libs/common/src/lib/auth.guard.ts b/libs/common/src/guards/auth.guard.ts similarity index 100% rename from libs/common/src/lib/auth.guard.ts rename to libs/common/src/guards/auth.guard.ts diff --git a/libs/common/src/guards/index.ts b/libs/common/src/guards/index.ts new file mode 100644 index 0000000..b41e34a --- /dev/null +++ b/libs/common/src/guards/index.ts @@ -0,0 +1 @@ +export * from './auth.guard'; diff --git a/libs/common/src/index.ts b/libs/common/src/index.ts index 9cd8c5a..a5f2233 100644 --- a/libs/common/src/index.ts +++ b/libs/common/src/index.ts @@ -1 +1,2 @@ -export * from './database'; +export * from './guards'; +export * from './logger'; diff --git a/libs/common/src/logger/index.ts b/libs/common/src/logger/index.ts new file mode 100644 index 0000000..712259a --- /dev/null +++ b/libs/common/src/logger/index.ts @@ -0,0 +1 @@ +export * from './logger.module'; diff --git a/libs/common/src/logger/logger.module.ts b/libs/common/src/logger/logger.module.ts new file mode 100644 index 0000000..ade6b90 --- /dev/null +++ b/libs/common/src/logger/logger.module.ts @@ -0,0 +1,18 @@ +import { Module } from '@nestjs/common'; +import { LoggerModule as PinoLoggerModule } from 'nestjs-pino'; + +@Module({ + imports: [ + PinoLoggerModule.forRoot({ + pinoHttp: { + transport: { + target: 'pino-pretty', + options: { + singleLine: true, + }, + }, + }, + }), + ], +}) +export class LoggerModule {} diff --git a/package.json b/package.json index e1e830d..e853b92 100644 --- a/package.json +++ b/package.json @@ -36,9 +36,12 @@ "cookie-parser": "^1.4.6", "express": "^4.19.2", "mongoose": "^8.2.4", + "nestjs-pino": "^4.0.0", "passport": "^0.7.0", "passport-jwt": "^4.0.1", "passport-local": "^1.0.0", + "pino-http": "^9.0.0", + "pino-pretty": "^11.0.0", "reflect-metadata": "^0.1.13", "rxjs": "^7.8.1" },