From 99ea582cb10f258c8fe2e0b316b9a031c1d7df06 Mon Sep 17 00:00:00 2001 From: philmcmahon Date: Fri, 7 Feb 2025 01:05:23 +0000 Subject: [PATCH] Only export media to google drive when requested --- packages/api/src/index.ts | 43 ++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/packages/api/src/index.ts b/packages/api/src/index.ts index 10436491..22f7122c 100644 --- a/packages/api/src/index.ts +++ b/packages/api/src/index.ts @@ -332,25 +332,30 @@ const getApp = async () => { }); logger.info('Document exports complete.'); - try { - await invokeLambda( - lambdaClient, - config.app.mediaExportFunctionName, - JSON.stringify(exportRequest.data), - ); - } catch (e) { - const msg = 'Failed to invoke media export lambda'; - logger.error(msg, e); - const mediaFailedStatus: ExportStatus = { - status: 'failure', - exportType: 'source-media', - message: msg, - }; - exportStatuses = updateStatuses(mediaFailedStatus, exportStatuses); - await writeTranscriptionItem(dynamoClient, config.app.tableName, { - ...getItemResult.item, - exportStatuses: updateStatuses(mediaFailedStatus, exportStatuses), - }); + if (exportRequest.data.items.includes('source-media')) { + try { + // source media export is slow as it involves downloading/uploading a potentially large media file + // for this reason we handle it in a separate lambda, allowing us to return a response to the user + // within the api gateway 30s timeout + await invokeLambda( + lambdaClient, + config.app.mediaExportFunctionName, + JSON.stringify(exportRequest.data), + ); + } catch (e) { + const msg = 'Failed to invoke media export lambda'; + logger.error(msg, e); + const mediaFailedStatus: ExportStatus = { + status: 'failure', + exportType: 'source-media', + message: msg, + }; + exportStatuses = updateStatuses(mediaFailedStatus, exportStatuses); + await writeTranscriptionItem(dynamoClient, config.app.tableName, { + ...getItemResult.item, + exportStatuses: updateStatuses(mediaFailedStatus, exportStatuses), + }); + } } res.send(JSON.stringify(exportStatuses));