Files
lcbp3/backend/src/modules/audit-log/audit-log.service.ts
admin aa96cd90e3
Some checks failed
Spec Validation / validate-markdown (push) Has been cancelled
Spec Validation / validate-diagrams (push) Has been cancelled
Spec Validation / check-todos (push) Has been cancelled
251209:1453 Frontend: progress nest = UAT & Bug Fixing
2025-12-09 14:53:42 +07:00

49 lines
1.3 KiB
TypeScript

import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { AuditLog } from '../../common/entities/audit-log.entity';
@Injectable()
export class AuditLogService {
constructor(
@InjectRepository(AuditLog)
private readonly auditLogRepository: Repository<AuditLog>
) {}
async findAll(query: any) {
const { page = 1, limit = 20, entityName, action, userId } = query;
const skip = (page - 1) * limit;
const queryBuilder =
this.auditLogRepository.createQueryBuilder('audit_logs'); // Aliased as 'audit_logs' matching table name usually, or just 'log'
if (entityName) {
queryBuilder.andWhere('audit_logs.entityName LIKE :entityName', {
entityName: `%${entityName}%`,
});
}
if (action) {
queryBuilder.andWhere('audit_logs.action = :action', { action });
}
if (userId) {
queryBuilder.andWhere('audit_logs.userId = :userId', { userId });
}
queryBuilder.orderBy('audit_logs.createdAt', 'DESC').skip(skip).take(limit);
const [data, total] = await queryBuilder.getManyAndCount();
return {
data,
meta: {
total,
page: Number(page),
limit: Number(limit),
totalPages: Math.ceil(total / limit),
},
};
}
}