From af81d102428af0cfbdd01cd2e6732ec10f4f21e2 Mon Sep 17 00:00:00 2001 From: admin-valentin Date: Fri, 31 Jul 2026 17:11:59 +0000 Subject: [PATCH] feat(audit): expose GET /v1/audit-log endpoint (last N entries, tenant-scoped) --- src/audit/audit.controller.ts | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/audit/audit.controller.ts diff --git a/src/audit/audit.controller.ts b/src/audit/audit.controller.ts new file mode 100644 index 0000000..3105eea --- /dev/null +++ b/src/audit/audit.controller.ts @@ -0,0 +1,22 @@ +import { Controller, Get, Query } from '@nestjs/common'; +import { desc, eq } from 'drizzle-orm'; +import { CurrentSession } from '../auth/session.decorator'; +import type { AuthenticatedSession } from '../auth/tenant.guard'; +import { db } from '../db/client'; +import { auditLog } from '../db/schema'; + +@Controller('audit-log') +export class AuditLogController { + @Get() + async list( + @CurrentSession() session: AuthenticatedSession, + @Query('limit') limitStr?: string, + ) { + const limit = Math.min(Math.max(1, parseInt(limitStr ?? '100', 10) || 100), 500); + return db.query.auditLog.findMany({ + where: eq(auditLog.tenantId, session.tenantId), + orderBy: desc(auditLog.createdAt), + limit, + }); + } +}