feat(CC-061): add DocumentsController (GET /documents with classification/ocrStatus filters)

This commit is contained in:
admin-valentin 2026-08-01 21:13:32 +00:00
parent c5d256ea78
commit 47b85203bd

View file

@ -0,0 +1,31 @@
import { Controller, Get, Query } from '@nestjs/common';
import { and, desc, eq, isNull } from 'drizzle-orm';
import { CurrentSession } from '../auth/session.decorator';
import type { AuthenticatedSession } from '../auth/tenant.guard';
import { db } from '../db/client';
import { documents } from '../db/schema';
@Controller('documents')
export class DocumentsController {
@Get()
async list(
@CurrentSession() session: AuthenticatedSession,
@Query('classification') classification?: string,
@Query('ocrStatus') ocrStatus?: string,
@Query('limit') limitStr?: string,
) {
const limit = Math.min(Math.max(1, parseInt(limitStr ?? '200', 10) || 200), 500);
const conditions = [
eq(documents.tenantId, session.tenantId),
isNull(documents.deletedAt),
];
if (classification) conditions.push(eq(documents.classification, classification as 'c0' | 'c1' | 'c2' | 'c3' | 'c4'));
if (ocrStatus) conditions.push(eq(documents.ocrStatus, ocrStatus));
return db.query.documents.findMany({
where: and(...conditions),
orderBy: desc(documents.createdAt),
limit,
});
}
}