diff --git a/src/admin/dto/admin.dto.ts b/src/admin/dto/admin.dto.ts index d8aa3788..ea8d7914 100644 --- a/src/admin/dto/admin.dto.ts +++ b/src/admin/dto/admin.dto.ts @@ -1,5 +1,3 @@ -// @ts-nocheck - import { Type } from 'class-transformer'; import { ArrayMinSize, diff --git a/src/admin/interceptors/admin-access-logging.interceptor.ts b/src/admin/interceptors/admin-access-logging.interceptor.ts index cb7da529..5ec225eb 100644 --- a/src/admin/interceptors/admin-access-logging.interceptor.ts +++ b/src/admin/interceptors/admin-access-logging.interceptor.ts @@ -1,15 +1,13 @@ -// @ts-nocheck - import { Injectable, NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common'; import { Observable } from 'rxjs'; import { tap } from 'rxjs/operators'; -import { AuditService } from '../../audit/audit.service'; +import { PrismaService } from '../../database/prisma.service'; @Injectable() export class AdminAccessLoggingInterceptor implements NestInterceptor { - constructor(private readonly auditService: AuditService) {} + constructor(private readonly prisma: PrismaService) {} intercept(context: ExecutionContext, next: CallHandler): Observable { const request = context.switchToHttp().getRequest(); @@ -17,21 +15,28 @@ export class AdminAccessLoggingInterceptor implements NestInterceptor { const response = context.switchToHttp().getResponse(); return next.handle().pipe( - tap(async () => { + tap(() => { const user = request.user; - - await this.auditService.log({ - action: 'ADMIN_DASHBOARD_ACCESS', - userId: user?.id, - resourceType: 'dashboard', - resourceId: null, - metadata: { - path: request.originalUrl, - method: request.method, - statusCode: response.statusCode, - timestamp: new Date().toISOString(), - }, - }); + if (!user?.id) return; + + this.prisma.activityLog + .create({ + data: { + userId: user.id, + action: 'ADMIN_DASHBOARD_ACCESS', + entityType: 'dashboard', + description: 'Admin dashboard access', + metadata: { + path: request.originalUrl, + method: request.method, + statusCode: response.statusCode, + timestamp: new Date().toISOString(), + }, + }, + }) + .catch(() => { + // Non-blocking: audit log failure should not affect the response + }); }), ); } diff --git a/src/admin/queue/queue.controller.ts b/src/admin/queue/queue.controller.ts index 7796fff5..081b0a3d 100644 --- a/src/admin/queue/queue.controller.ts +++ b/src/admin/queue/queue.controller.ts @@ -1,5 +1,3 @@ -// @ts-nocheck - import { Controller, Get, Post, Delete, Param, UseGuards } from '@nestjs/common'; import { ApiTags, ApiOperation } from '@nestjs/swagger'; // eslint-disable-next-line @typescript-eslint/no-unused-vars diff --git a/src/admin/queue/queue.module.ts b/src/admin/queue/queue.module.ts index 3809938b..a8426c67 100644 --- a/src/admin/queue/queue.module.ts +++ b/src/admin/queue/queue.module.ts @@ -1,5 +1,3 @@ -// @ts-nocheck - import { Module } from '@nestjs/common'; import { BullModule } from '@nestjs/bullmq'; import { QueueController } from './queue.controller'; diff --git a/src/admin/queue/queue.service.ts b/src/admin/queue/queue.service.ts index f6e316b6..536e667a 100644 --- a/src/admin/queue/queue.service.ts +++ b/src/admin/queue/queue.service.ts @@ -1,5 +1,3 @@ -// @ts-nocheck - import { Injectable, Logger, NotFoundException } from '@nestjs/common'; import { InjectQueue } from '@nestjs/bullmq'; import { Queue } from 'bullmq'; @@ -17,7 +15,7 @@ export class QueueMonitoringService { for (const queueName of KNOWN_QUEUES) { try { - const queue = this.getQueueByName(queueName); + const queue = await this.getQueueByName(queueName); if (!queue) continue; const [waiting, active, completed, failed, delayed, paused] = await Promise.all([ @@ -26,7 +24,7 @@ export class QueueMonitoringService { queue.getCompletedCount(), queue.getFailedCount(), queue.getDelayedCount(), - queue.getPausedCount(), + queue.getJobCounts('paused').then((c) => c.paused ?? 0), ]); queues.push({ @@ -34,11 +32,13 @@ export class QueueMonitoringService { counts: { waiting, active, completed, failed, delayed, paused }, }); } catch (error) { - this.logger.error(`Failed to get stats for queue ${queueName}: ${error.message}`); + this.logger.error( + `Failed to get stats for queue ${queueName}: ${error instanceof Error ? error.message : String(error)}`, + ); queues.push({ name: queueName, counts: { waiting: 0, active: 0, completed: 0, failed: 0, delayed: 0, paused: 0 }, - error: error.message, + error: error instanceof Error ? error.message : String(error), }); } } @@ -148,7 +148,9 @@ export class QueueMonitoringService { delayed, }); } catch (error) { - this.logger.error(`Failed to get metrics for queue ${queueName}: ${error.message}`); + this.logger.error( + `Failed to get metrics for queue ${queueName}: ${error instanceof Error ? error.message : String(error)}`, + ); } } diff --git a/src/config/api-decorators-example.ts b/src/config/api-decorators-example.ts index 648bd6d0..aec102bf 100644 --- a/src/config/api-decorators-example.ts +++ b/src/config/api-decorators-example.ts @@ -1,5 +1,3 @@ -// @ts-nocheck - /** * Example Usage of API Documentation Decorators * Shows how to use the custom API documentation decorators diff --git a/src/config/api-decorators.ts b/src/config/api-decorators.ts index 187fa6d2..a0e9fdb7 100644 --- a/src/config/api-decorators.ts +++ b/src/config/api-decorators.ts @@ -1,5 +1,3 @@ -// @ts-nocheck - /** * API Documentation Decorators * Decorators for enriching OpenAPI documentation diff --git a/src/config/api-docs.controller.ts b/src/config/api-docs.controller.ts index 1daced27..900ebfeb 100644 --- a/src/config/api-docs.controller.ts +++ b/src/config/api-docs.controller.ts @@ -1,5 +1,3 @@ -// @ts-nocheck - /** * API Documentation Controller * Provides access to OpenAPI spec and API information diff --git a/src/config/api-documentation.module.ts b/src/config/api-documentation.module.ts index 1c95b52d..bc385838 100644 --- a/src/config/api-documentation.module.ts +++ b/src/config/api-documentation.module.ts @@ -1,5 +1,3 @@ -// @ts-nocheck - /** * API Documentation Module * Provides Swagger/OpenAPI documentation and related endpoints diff --git a/src/config/changelog.ts b/src/config/changelog.ts index 847b0e59..9f9e4955 100644 --- a/src/config/changelog.ts +++ b/src/config/changelog.ts @@ -1,5 +1,3 @@ -// @ts-nocheck - /** * API Changelog * Tracks all changes, features, and improvements across versions diff --git a/src/config/swagger.config.ts b/src/config/swagger.config.ts index 0612056d..c863d1b1 100644 --- a/src/config/swagger.config.ts +++ b/src/config/swagger.config.ts @@ -1,17 +1,15 @@ -// @ts-nocheck - /** * Swagger/OpenAPI Configuration * Sets up comprehensive API documentation with Swagger UI */ -import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger'; +import { DocumentBuilder, SwaggerModule, OpenAPIObject } from '@nestjs/swagger'; import { INestApplication, Logger } from '@nestjs/common'; const logger = new Logger('SwaggerConfig'); interface AppWithOpenApiDoc { - openAPIDocument?: Record; + openAPIDocument?: OpenAPIObject; } export function setupSwagger(app: INestApplication): void { @@ -19,7 +17,6 @@ export function setupSwagger(app: INestApplication): void { .setTitle('PropChain API') .setDescription('Blockchain-Powered Real Estate Platform API Documentation') .setVersion('2.0.0') - .setOpenAPI('3.1.0') .addBearerAuth( { type: 'http', @@ -137,7 +134,6 @@ export function setupOpenAPIEndpoint(app: INestApplication): void { .setTitle('PropChain API') .setDescription('Blockchain-Powered Real Estate Platform API') .setVersion('2.0.0') - .setOpenAPI('3.1.0') .addBearerAuth( { type: 'http', diff --git a/src/email-digest/digest.scheduler.ts b/src/email-digest/digest.scheduler.ts index cb74b5a1..ef5ef00b 100644 --- a/src/email-digest/digest.scheduler.ts +++ b/src/email-digest/digest.scheduler.ts @@ -1,5 +1,3 @@ -// @ts-nocheck - import { Injectable, Logger } from '@nestjs/common'; // eslint-disable-next-line @typescript-eslint/no-unused-vars import { Cron, CronExpression } from '@nestjs/schedule'; diff --git a/src/email-digest/dto/update-digest-preference.dto.ts b/src/email-digest/dto/update-digest-preference.dto.ts index f1fbb8da..0fe0fc1a 100644 --- a/src/email-digest/dto/update-digest-preference.dto.ts +++ b/src/email-digest/dto/update-digest-preference.dto.ts @@ -1,5 +1,3 @@ -// @ts-nocheck - import { IsEnum, IsBoolean, IsOptional } from 'class-validator'; import { DigestFrequency } from '@prisma/client'; diff --git a/src/email-digest/email-digest.controller.ts b/src/email-digest/email-digest.controller.ts index 01e72bc2..19ed028f 100644 --- a/src/email-digest/email-digest.controller.ts +++ b/src/email-digest/email-digest.controller.ts @@ -1,5 +1,3 @@ -// @ts-nocheck - // eslint-disable-next-line @typescript-eslint/no-unused-vars import { Body, Controller, Get, Param, Patch, Query, Res, UseGuards } from '@nestjs/common'; import { Response } from 'express'; diff --git a/src/email-digest/email-digest.module.ts b/src/email-digest/email-digest.module.ts index c926a234..c399c0a2 100644 --- a/src/email-digest/email-digest.module.ts +++ b/src/email-digest/email-digest.module.ts @@ -1,5 +1,3 @@ -// @ts-nocheck - import { Module } from '@nestjs/common'; import { EmailDigestService } from './email-digest.service'; import { EmailDigestController } from './email-digest.controller'; diff --git a/src/email-digest/email-digest.service.ts b/src/email-digest/email-digest.service.ts index c12f6bc0..beca649f 100644 --- a/src/email-digest/email-digest.service.ts +++ b/src/email-digest/email-digest.service.ts @@ -1,5 +1,3 @@ -// @ts-nocheck - import { Injectable, Logger } from '@nestjs/common'; import { PrismaService } from '../database/prisma.service'; import { EmailService } from '../email/email.service'; @@ -74,7 +72,9 @@ export class EmailDigestService { data: { lastSentAt: new Date() }, }); } catch (err) { - this.logger.error(`Failed to send digest to ${pref.user.email}: ${err.message}`); + this.logger.error( + `Failed to send digest to ${pref.user.email}: ${err instanceof Error ? err.message : String(err)}`, + ); } } } diff --git a/src/trust-score/dto/trust-score.dto.ts b/src/trust-score/dto/trust-score.dto.ts index 1a888403..cf20c9bf 100644 --- a/src/trust-score/dto/trust-score.dto.ts +++ b/src/trust-score/dto/trust-score.dto.ts @@ -1,5 +1,3 @@ -// @ts-nocheck - export class ScoreFactor { score: number; maxScore: number; diff --git a/src/trust-score/trust-score.controller.ts b/src/trust-score/trust-score.controller.ts index 92fe35f0..65423697 100644 --- a/src/trust-score/trust-score.controller.ts +++ b/src/trust-score/trust-score.controller.ts @@ -1,5 +1,3 @@ -// @ts-nocheck - import { Controller, Get, diff --git a/src/trust-score/trust-score.module.ts b/src/trust-score/trust-score.module.ts index 94c5b715..2ce89bcd 100644 --- a/src/trust-score/trust-score.module.ts +++ b/src/trust-score/trust-score.module.ts @@ -1,5 +1,3 @@ -// @ts-nocheck - import { Module } from '@nestjs/common'; import { PrismaModule } from '../database/prisma.module'; import { TrustScoreService } from './trust-score.service'; diff --git a/src/trust-score/trust-score.service.ts b/src/trust-score/trust-score.service.ts index 94fb3208..ea2fb2c8 100644 --- a/src/trust-score/trust-score.service.ts +++ b/src/trust-score/trust-score.service.ts @@ -1,5 +1,3 @@ -// @ts-nocheck - import { Injectable, Logger } from '@nestjs/common'; import { PrismaService } from '../database/prisma.service'; // eslint-disable-next-line @typescript-eslint/no-unused-vars diff --git a/src/trust-score/types/authenticated-request.interface.ts b/src/trust-score/types/authenticated-request.interface.ts index 9322d08f..27054fe0 100644 --- a/src/trust-score/types/authenticated-request.interface.ts +++ b/src/trust-score/types/authenticated-request.interface.ts @@ -1,5 +1,3 @@ -// @ts-nocheck - export interface AuthenticatedRequest { authUser: { id: string; diff --git a/src/trust-score/types/user-data.interface.ts b/src/trust-score/types/user-data.interface.ts index 2cc82708..436e06df 100644 --- a/src/trust-score/types/user-data.interface.ts +++ b/src/trust-score/types/user-data.interface.ts @@ -1,5 +1,3 @@ -// @ts-nocheck - export interface UserData { id: string; email: string;