Production checklists, issue fixes

This commit is contained in:
Stephanos A
2026-07-01 15:04:38 +03:00
parent 0015f645cf
commit 103117d88b
20 changed files with 100 additions and 200 deletions

View File

@@ -1,9 +1,10 @@
import { Injectable, Inject, Optional } from '@nestjs/common';
import { Injectable, Inject, Logger, Optional } from '@nestjs/common';
import { REQUEST } from '@nestjs/core';
import { PrismaService } from './prisma.service';
@Injectable()
export class AuditService {
private readonly logger = new Logger(AuditService.name);
constructor(
private prisma: PrismaService,
@Optional() @Inject(REQUEST) private request?: any,
@@ -34,7 +35,7 @@ export class AuditService {
},
});
} catch (error) {
console.error('Failed to log audit event:', error);
this.logger.error('Failed to log audit event:', error);
// Don't throw - audit logging should not break main operations
}
}
@@ -74,11 +75,20 @@ export class AuditService {
where.entityType = filters.entityType;
}
return this.prisma.auditLog.findMany({
where,
orderBy: { createdAt: 'desc' },
take: 500,
});
const limit = Math.min(filters.limit ?? 50, 200);
const offset = filters.offset ?? 0;
const [data, total] = await Promise.all([
this.prisma.auditLog.findMany({
where,
orderBy: { createdAt: 'desc' },
take: limit,
skip: offset,
}),
this.prisma.auditLog.count({ where }),
]);
return { data, total, limit, offset };
}
async getLog(id: string) {

View File

@@ -41,9 +41,7 @@ export class HttpExceptionFilter implements ExceptionFilter {
this.logger.error(
`${request.method} ${request.url} -> ${status}`,
exception instanceof Error ? exception.stack : JSON.stringify(exception),
);
console.error('Full error details:', exception);
} else {
); } else {
this.logger.warn(`${request.method} ${request.url} -> ${status} ${message}`);
}

View File

@@ -1,4 +1,4 @@
import { Injectable } from '@nestjs/common';
import { Injectable, Logger } from '@nestjs/common';
import * as fs from 'fs';
import * as path from 'path';
@@ -6,6 +6,7 @@ type TranslationMap = Record<string, any>;
@Injectable()
export class I18nService {
private readonly logger = new Logger(I18nService.name);
private translations: Map<string, TranslationMap> = new Map();
private readonly supportedLocales = ['en', 'am', 'fr', 'om'];
private readonly defaultLocale = 'en';
@@ -21,7 +22,7 @@ export class I18nService {
const content = fs.readFileSync(filePath, 'utf-8');
this.translations.set(locale, JSON.parse(content));
} catch (err) {
console.warn(`Failed to load translation file for locale: ${locale}`);
this.logger.warn(`Failed to load translation file for locale: ${locale}`);
}
}
}