diff --git a/packages/api/src/jobs/upload_content.ts b/packages/api/src/jobs/upload_content.ts index 3c80f2bd6..78d9339b9 100644 --- a/packages/api/src/jobs/upload_content.ts +++ b/packages/api/src/jobs/upload_content.ts @@ -1,4 +1,5 @@ import { findLibraryItemById } from '../services/library_item' +import { logger } from '../utils/logger' import { htmlToHighlightedMarkdown, htmlToMarkdown } from '../utils/parser' import { uploadToBucket } from '../utils/uploads' @@ -33,22 +34,32 @@ const CONTENT_TYPES = { } export const uploadContentJob = async (data: UploadContentJobData) => { + logger.info('Uploading content to bucket', data) + const { libraryItemId, userId, format, filePath } = data const libraryItem = await findLibraryItemById(libraryItemId, userId, { select: ['originalContent'], }) if (!libraryItem) { + logger.error('Library item not found', data) throw new Error('Library item not found') } if (!libraryItem.originalContent) { + logger.error('Original content not found', data) throw new Error('Original content not found') } + logger.info('Converting content', data) const content = convertContent(libraryItem.originalContent, format) + console.time('uploadToBucket') + logger.info('Uploading content', data) await uploadToBucket(filePath, Buffer.from(content), { contentType: CONTENT_TYPES[format], timeout: 60000, // 1 minute }) + console.timeEnd('uploadToBucket') + + logger.info('Content uploaded', data) } diff --git a/packages/api/src/routers/content_router.ts b/packages/api/src/routers/content_router.ts index 63bd566c6..4d1709d06 100644 --- a/packages/api/src/routers/content_router.ts +++ b/packages/api/src/routers/content_router.ts @@ -24,13 +24,13 @@ export function contentRouter() { } // eslint-disable-next-line @typescript-eslint/no-misused-promises - router.get('/', async (req, res) => { - if (!isContentRequest(req.query)) { + router.post('/', async (req, res) => { + if (!isContentRequest(req.body)) { logger.error('Bad request') return res.status(400).send({ errorCode: 'BAD_REQUEST' }) } - const { libraryItemIds, format } = req.query + const { libraryItemIds, format } = req.body if ( !Array.isArray(libraryItemIds) || libraryItemIds.length === 0 || @@ -89,12 +89,14 @@ export function contentRouter() { } }) ) + logger.info('Signed urls generated', data) const validData = data.filter( (d) => d.downloadUrl !== undefined && !('error' in d) ) as UploadContentJobData[] await enqueueBulkUploadContentJob(validData) + logger.info('Bulk upload content job enqueued', validData) res.send({ data: data.map((d) => ({ diff --git a/packages/api/src/services/library_item.ts b/packages/api/src/services/library_item.ts index af6cf7e3a..a7376da30 100644 --- a/packages/api/src/services/library_item.ts +++ b/packages/api/src/services/library_item.ts @@ -772,7 +772,7 @@ export const findLibraryItemsByIds = async ( } ) => { const selectColumns = - options?.select || + options?.select?.map((column) => `library_item.${column}`) || getColumns(libraryItemRepository) .filter((column) => column !== 'originalContent') .map((column) => `library_item.${column}`) diff --git a/packages/api/src/utils/createTask.ts b/packages/api/src/utils/createTask.ts index 8740ba7f6..546b69d11 100644 --- a/packages/api/src/utils/createTask.ts +++ b/packages/api/src/utils/createTask.ts @@ -93,12 +93,12 @@ export const getJobPriority = (jobName: string): number => { return 5 case BULK_ACTION_JOB_NAME: case `${REFRESH_FEED_JOB_NAME}_high`: - return 10 case PROCESS_YOUTUBE_TRANSCRIPT_JOB_NAME: + case UPLOAD_CONTENT_JOB: + return 10 case `${REFRESH_FEED_JOB_NAME}_low`: case EXPORT_ITEM_JOB_NAME: case CREATE_DIGEST_JOB: - case UPLOAD_CONTENT_JOB: return 50 case EXPORT_ALL_ITEMS_JOB_NAME: case REFRESH_ALL_FEEDS_JOB_NAME: