diff --git a/server/.eslintrc.js b/server/.eslintrc.js index 259de13..288aa6c 100644 --- a/server/.eslintrc.js +++ b/server/.eslintrc.js @@ -17,6 +17,7 @@ module.exports = { }, ignorePatterns: ['.eslintrc.js'], rules: { + 'no-console': 'error', '@typescript-eslint/interface-name-prefix': 'off', '@typescript-eslint/explicit-function-return-type': 'off', '@typescript-eslint/explicit-module-boundary-types': 'off', diff --git a/server/src/app.module.ts b/server/src/app.module.ts index aea6ad3..417b2b3 100644 --- a/server/src/app.module.ts +++ b/server/src/app.module.ts @@ -3,9 +3,10 @@ import { UsersModule } from './users/users.module'; import { VideosModule } from './videos/videos.module'; import { PrismaService } from './prisma.service'; import { SystemService } from './system.service'; +import { AppLogger } from './core/logging/app-logger.service'; @Module({ imports: [UsersModule, VideosModule], - providers: [SystemService, PrismaService], // Do I need PrismaService here? + providers: [SystemService, PrismaService, AppLogger], // Do I need PrismaService here? }) export class AppModule {} diff --git a/server/src/core/logging/app-logger.service.ts b/server/src/core/logging/app-logger.service.ts new file mode 100644 index 0000000..59dd5d5 --- /dev/null +++ b/server/src/core/logging/app-logger.service.ts @@ -0,0 +1,8 @@ +import { Injectable, Scope, ConsoleLogger } from '@nestjs/common'; + +@Injectable({ scope: Scope.TRANSIENT }) +export class AppLogger extends ConsoleLogger { + constructor(context?: string) { + super(context); + } +} diff --git a/server/src/core/logging/logger.module.ts b/server/src/core/logging/logger.module.ts new file mode 100644 index 0000000..cef74ba --- /dev/null +++ b/server/src/core/logging/logger.module.ts @@ -0,0 +1,8 @@ +import { Module } from '@nestjs/common'; +import { AppLogger } from './app-logger.service'; + +@Module({ + providers: [AppLogger], + exports: [AppLogger], +}) +export class LoggerModule {} diff --git a/server/src/system.service.ts b/server/src/system.service.ts index eed9625..b6cfd13 100644 --- a/server/src/system.service.ts +++ b/server/src/system.service.ts @@ -6,14 +6,15 @@ import { import { promises as fs } from 'fs'; import { join, resolve } from 'path'; import { existsSync } from 'fs'; +import { AppLogger } from './core/logging/app-logger.service'; @Injectable() export class SystemService { private readonly uploadsDir = join(process.cwd(), 'uploads'); - constructor() { + constructor(private readonly logger: AppLogger) { this.findOrCreateUserDirectory(this.uploadsDir); - console.log('uploadsDir', this.uploadsDir); + this.logger.log('uploadsDir', this.uploadsDir); } /** diff --git a/server/src/users/users.module.ts b/server/src/users/users.module.ts index 93c1e62..c8a6428 100644 --- a/server/src/users/users.module.ts +++ b/server/src/users/users.module.ts @@ -2,9 +2,11 @@ import { Module } from '@nestjs/common'; import { UsersService } from './users.service'; import { UsersController } from './users.controller'; import { PrismaService } from 'src/prisma.service'; +import { LoggerModule } from 'src/core/logging/logger.module'; @Module({ controllers: [UsersController], + imports: [LoggerModule], providers: [UsersService, PrismaService], }) export class UsersModule {} diff --git a/server/src/users/users.service.ts b/server/src/users/users.service.ts index 77ae2e7..00ead01 100644 --- a/server/src/users/users.service.ts +++ b/server/src/users/users.service.ts @@ -2,20 +2,35 @@ import { Injectable } from '@nestjs/common'; import { User } from 'generated/prisma'; import { PrismaService } from 'src/prisma.service'; import { CreateUserDto } from './users.dto'; +import { AppLogger } from 'src/core/logging/app-logger.service'; @Injectable() export class UsersService { - constructor(private readonly prisma: PrismaService) {} + constructor( + private readonly prisma: PrismaService, + private readonly logger: AppLogger, + ) { + this.logger.setContext(UsersService.name); + } async get(): Promise { - return this.prisma.user.findMany(); + const users = await this.prisma.user.findMany(); + this.logger.log(`Users fetched successfully. Total users:${users.length}`); + return users; } - async upsert(user: CreateUserDto): Promise { - return this.prisma.user.upsert({ - where: { email: user.email }, - update: user, - create: user, - }); + this.logger.log(`Upserting user with email ${user.email}`); + try { + const result = await this.prisma.user.upsert({ + where: { email: user.email }, + update: user, + create: user, + }); + this.logger.log(`User upserted successfully with email ${user.email}`); + return result; + } catch (error) { + this.logger.error(`Failed to upsert user with email ${user.email}`); + throw error; + } } } diff --git a/server/src/videos/videos.module.ts b/server/src/videos/videos.module.ts index 8fc097f..5f8bd16 100644 --- a/server/src/videos/videos.module.ts +++ b/server/src/videos/videos.module.ts @@ -2,10 +2,11 @@ import { Module } from '@nestjs/common'; import { VideosService } from './videos.service'; import { VideosController } from './videos.controller'; import { SystemService } from 'src/system.service'; +import { AppLogger } from 'src/core/logging/app-logger.service'; @Module({ imports: [], controllers: [VideosController], - providers: [VideosService, SystemService], + providers: [VideosService, SystemService, AppLogger], }) export class VideosModule {}