From 58f66bb1752c5871e6fb585fafe7f0ad40bf6245 Mon Sep 17 00:00:00 2001 From: Shreeya Adhikari Date: Mon, 25 May 2026 21:19:54 -0400 Subject: [PATCH 1/2] Add report_type: DB column, persistence, API response --- apps/backend/db/db_setup.sql | 1 + apps/backend/lambdas/reports/db-types.d.ts | 1 + apps/backend/lambdas/reports/handler.ts | 1 + apps/backend/lambdas/reports/openapi.yaml | 6 ++++++ apps/backend/lambdas/reports/report-service.ts | 8 +++++--- 5 files changed, 14 insertions(+), 3 deletions(-) diff --git a/apps/backend/db/db_setup.sql b/apps/backend/db/db_setup.sql index c25cd888..0798eb4d 100644 --- a/apps/backend/db/db_setup.sql +++ b/apps/backend/db/db_setup.sql @@ -64,6 +64,7 @@ CREATE TABLE reports ( report_id SERIAL PRIMARY KEY, project_id INT NOT NULL REFERENCES projects(project_id) ON DELETE CASCADE, object_url TEXT NOT NULL, + report_type TEXT NOT NULL DEFAULT 'technical' CHECK (report_type IN ('technical', 'narrative')), date_created DATE NOT NULL DEFAULT CURRENT_DATE ); diff --git a/apps/backend/lambdas/reports/db-types.d.ts b/apps/backend/lambdas/reports/db-types.d.ts index f5ce7754..65983be1 100644 --- a/apps/backend/lambdas/reports/db-types.d.ts +++ b/apps/backend/lambdas/reports/db-types.d.ts @@ -65,6 +65,7 @@ export interface BranchReports { object_url: string; project_id: number; report_id: Generated; + report_type: string; } export interface BranchUsers { diff --git a/apps/backend/lambdas/reports/handler.ts b/apps/backend/lambdas/reports/handler.ts index 3f93b5fd..f9a088d9 100644 --- a/apps/backend/lambdas/reports/handler.ts +++ b/apps/backend/lambdas/reports/handler.ts @@ -72,6 +72,7 @@ export const handler = async (event: any): Promise => { ok: true, report_id: record.report_id, object_url: record.object_url, + report_type: record.report_type, }); } diff --git a/apps/backend/lambdas/reports/openapi.yaml b/apps/backend/lambdas/reports/openapi.yaml index 24d2e80f..d7683301 100644 --- a/apps/backend/lambdas/reports/openapi.yaml +++ b/apps/backend/lambdas/reports/openapi.yaml @@ -64,6 +64,9 @@ paths: type: integer object_url: type: string + report_type: + type: string + enum: [technical, narrative] date_created: type: string format: date @@ -116,6 +119,9 @@ paths: type: integer object_url: type: string + report_type: + type: string + enum: [technical, narrative] '400': description: Invalid input '401': diff --git a/apps/backend/lambdas/reports/report-service.ts b/apps/backend/lambdas/reports/report-service.ts index 616fefa3..ec93b9a6 100644 --- a/apps/backend/lambdas/reports/report-service.ts +++ b/apps/backend/lambdas/reports/report-service.ts @@ -337,15 +337,17 @@ export async function uploadToS3(pdfBuffer: Buffer, projectId: number): Promise< export async function saveReportRecord( projectId: number, objectUrl: string, -): Promise<{ report_id: number; object_url: string }> { + reportType: 'technical' | 'narrative' = 'technical', +): Promise<{ report_id: number; object_url: string; report_type: string }> { const row = await db .insertInto('branch.reports') .values({ project_id: projectId, object_url: objectUrl, + report_type: reportType, }) - .returning(['report_id', 'object_url']) + .returning(['report_id', 'object_url', 'report_type']) .executeTakeFirstOrThrow(); - return { report_id: row.report_id, object_url: row.object_url }; + return { report_id: row.report_id, object_url: row.object_url, report_type: row.report_type }; } From aeee3a1c65364273addb3d276c05cd0f3ba46bad Mon Sep 17 00:00:00 2001 From: Shreeya Adhikari Date: Sat, 27 Jun 2026 12:04:45 -0400 Subject: [PATCH 2/2] added report type to test --- apps/backend/lambdas/reports/test/reports.unit.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/backend/lambdas/reports/test/reports.unit.test.ts b/apps/backend/lambdas/reports/test/reports.unit.test.ts index a1949a40..3779f783 100644 --- a/apps/backend/lambdas/reports/test/reports.unit.test.ts +++ b/apps/backend/lambdas/reports/test/reports.unit.test.ts @@ -74,7 +74,7 @@ describe('POST /reports unit tests', () => { mockReportService.generatePdf.mockResolvedValue(Buffer.from('pdf') as any); mockReportService.generateDocx.mockResolvedValue(Buffer.from('docx') as any); mockReportService.uploadToS3.mockResolvedValue('https://s3.example.com/reports/1/ts.pdf'); - mockReportService.saveReportRecord.mockResolvedValue({ report_id: 1, object_url: 'https://s3.example.com/reports/1/ts.pdf' }); + mockReportService.saveReportRecord.mockResolvedValue({ report_id: 1, report_type: 'technical',object_url: 'https://s3.example.com/reports/1/ts.pdf' }); }); test('400: missing project_id returns 400', async () => {