Skip to content

Commit 8073f75

Browse files
committed
feat:add dto
1 parent 6c172a1 commit 8073f75

4 files changed

Lines changed: 62 additions & 42 deletions

File tree

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,14 @@
1+
// src/domain/interfaces/log-repository.interface.ts
2+
import { LogEntryDto } from '../../infrastructure/persistence/dto/log-entry-dto';
3+
import { Logger } from '../../infrastructure/persistence/mongoose/logger.schema';
4+
15
export interface ILogRepository {
2-
findLogById(_id: string): any;
6+
findLogById(_id: string): Promise<Logger | null>;
37
findLogsByFilter(
48
level: string,
59
context: string | undefined,
610
page: number,
711
limit: number,
8-
): Promise<any[]>;
9-
saveLog(log: {
10-
level: string;
11-
message: string;
12-
trace?: string;
13-
metadata?: {
14-
recipient?: string;
15-
notificationType?: string;
16-
mediaType?: string;
17-
context?: string;
18-
};
19-
timestamp: Date;
20-
}): Promise<void>;
12+
): Promise<{ logs: Logger[]; total: number }>;
13+
saveLog(log: LogEntryDto): Promise<Logger>; // Fix: Return `Logger` and use camelCase param
2114
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
export interface LogEntryDto {
2+
level: string;
3+
message: string;
4+
trace?: string;
5+
metadata?: {
6+
recipient?: string;
7+
notificationType?: string;
8+
mediaType?: string;
9+
context?: string;
10+
};
11+
timestamp: Date;
12+
}
Lines changed: 42 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,64 @@
1+
import { Model } from 'mongoose';
12
import { Injectable } from '@nestjs/common';
23
import { InjectModel } from '@nestjs/mongoose';
3-
import { Model } from 'mongoose';
44
import { ILogRepository } from '../../domain/interfaces/log-repository.interface';
55
import { Logger } from '../persistence/mongoose/logger.schema';
6+
import { LogEntryDto } from '../persistence/dto/log-entry-dto';
67

78
@Injectable()
89
export class LogRepository implements ILogRepository {
910
constructor(
1011
@InjectModel(Logger.name)
1112
private readonly loggerModel: Model<Logger>,
1213
) {}
14+
1315
async findLogById(_id: string): Promise<Logger | null> {
14-
return await this.loggerModel.findById(_id).exec();
16+
try {
17+
return await this.loggerModel.findById(_id).lean().exec();
18+
} catch (error) {
19+
console.error('Error finding log by ID:', error);
20+
throw new Error('Failed to retrieve log');
21+
}
1522
}
23+
1624
async findLogsByFilter(
1725
level: string,
1826
context: string | undefined,
1927
page: number,
2028
limit: number,
21-
): Promise<any[]> {
22-
const filter: { level: string; context?: string } = { level };
23-
if (context) {
24-
filter.context = context;
29+
): Promise<{ logs: Logger[]; total: number }> {
30+
try {
31+
const filter: { level: string; context?: string } = { level };
32+
33+
if (context) {
34+
filter.context = context;
35+
}
36+
37+
const [logs, total] = await Promise.all([
38+
this.loggerModel
39+
.find(filter)
40+
.sort({ timestamp: -1 }) // Newest first
41+
.skip((page - 1) * limit)
42+
.limit(limit)
43+
.lean()
44+
.exec(),
45+
this.loggerModel.countDocuments(filter).exec(),
46+
]);
47+
48+
return { logs, total };
49+
} catch (error) {
50+
console.error('Error finding logs by filter:', error);
51+
throw new Error('Failed to retrieve logs');
2552
}
26-
const logs = await this.loggerModel
27-
.find(filter)
28-
.skip((page - 1) * limit)
29-
.limit(limit)
30-
.exec();
31-
return logs;
3253
}
33-
34-
async saveLog(log: {
35-
level: string;
36-
message: string;
37-
trace?: string;
38-
metadata?: {
39-
recipient?: string;
40-
notificationType?: string;
41-
mediaType?: string;
42-
context?: string;
43-
};
44-
timestamp: Date;
45-
}): Promise<void> {
46-
const logEntry = new this.loggerModel(log);
47-
await logEntry.save();
54+
async saveLog(log: LogEntryDto): Promise<Logger> {
55+
try {
56+
const logEntry = new this.loggerModel(log);
57+
await logEntry.save();
58+
return logEntry.toObject();
59+
} catch (error) {
60+
console.error('Error saving log:', error);
61+
throw new Error('Failed to save log');
62+
}
4863
}
4964
}

src/logger/services/logger.service.db.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ export class LoggerServiceDb {
3737
page,
3838
limit,
3939
);
40-
if (!logs || logs.length === 0) {
40+
if (!logs || logs.logs.length === 0) {
4141
throw new Error(
4242
`No logs found. Level: ${level}, Context: ${context}, Page: ${page}, Limit: ${limit}`,
4343
);

0 commit comments

Comments
 (0)