diff --git a/apps/backend/db/db_setup.sql b/apps/backend/db/db_setup.sql index b2075d5..d988d42 100644 --- a/apps/backend/db/db_setup.sql +++ b/apps/backend/db/db_setup.sql @@ -67,6 +67,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/handler.ts b/apps/backend/lambdas/reports/handler.ts index 2e8a811..065907c 100644 --- a/apps/backend/lambdas/reports/handler.ts +++ b/apps/backend/lambdas/reports/handler.ts @@ -81,6 +81,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 a14423b..92d0c20 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 @@ -123,6 +126,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 988fbc7..ae060d2 100644 --- a/apps/backend/lambdas/reports/report-service.ts +++ b/apps/backend/lambdas/reports/report-service.ts @@ -505,15 +505,17 @@ export async function uploadToS3(fileBuffer: Buffer, projectId: number, fileType 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 }; } diff --git a/apps/backend/lambdas/reports/test/reports.unit.test.ts b/apps/backend/lambdas/reports/test/reports.unit.test.ts index a1949a4..3779f78 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 () => { diff --git a/shared/types/db-types.d.ts b/shared/types/db-types.d.ts index fea62bf..1f152d9 100644 --- a/shared/types/db-types.d.ts +++ b/shared/types/db-types.d.ts @@ -75,6 +75,7 @@ export interface BranchReports { object_url: string; project_id: number; report_id: Generated; + report_type: string; } export interface BranchUsers {