penisularhr / src / modules / audit-log / audit-log.controller.ts
audit-log.controller.ts
Raw
import { Controller, Get, HttpCode, HttpStatus, Query } from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';

import { type PageDto } from '../../common/dto/page.dto';
import { RoleType } from '../../constants';
import { ApiPageOkResponse, Auth, Whitelist } from '../../decorators';
import { AuditLogService } from './audit-log.service';
import { AuditLogDto } from './dtos/audit-log.dto';
import { AuditLogPageOptionsDto } from './dtos/get-audit-log-page.dto';

@Controller('audit-log')
@ApiTags('audit-log')
export class AuditLogController {
  constructor(private auditLogService: AuditLogService) {}

  @Get()
  @Whitelist()
  @Auth([RoleType.ADMIN])
  @HttpCode(HttpStatus.OK)
  @ApiPageOkResponse({
    type: AuditLogDto,
    description: 'Get audit logs',
  })
  async getAuditLogs(
    @Query() query: AuditLogPageOptionsDto,
  ): Promise<PageDto<AuditLogDto>> {
    return this.auditLogService.findMany(query);
  }
}