import { Controller, Get, Query } from "@nestjs/common"; import { ApiOperation, ApiQuery, ApiTags } from "@nestjs/swagger"; import { BookingStaff } from "../../common/booking-guards"; import { FREIGHT_PERMS } from "../../seed/freight-permissions.registry"; import { AuditService } from "./audit.service"; @ApiTags("audit") @Controller("audit") @BookingStaff(FREIGHT_PERMS.audit.view) export class AuditController { constructor(private readonly auditService: AuditService) {} @Get("logs") @ApiOperation({ summary: "List freight-api audit log commands" }) @ApiQuery({ name: "skip", type: Number, required: false }) @ApiQuery({ name: "take", type: Number, required: false }) list(@Query("skip") skip?: string, @Query("take") take?: string) { // Same fallback chain @tria-plc/auditlog's client interceptor uses to // stamp AuditLog.application (mezgeb/client/client-audit.interceptor.js) // — reading it here instead of a hardcoded literal means this can't // silently drift out of sync with whatever APPLICATION_NAME/APP_NAME // actually is at runtime. const application = process.env.APPLICATION_NAME ?? process.env.APP_NAME ?? "DEFAULT"; return this.auditService.list( application, skip !== undefined ? parseInt(skip, 10) : undefined, take !== undefined ? parseInt(take, 10) : undefined, ); } }