diff --git a/packages/api/src/jobs/score_library_item.ts b/packages/api/src/jobs/score_library_item.ts index 8f084422b..2e89f9955 100644 --- a/packages/api/src/jobs/score_library_item.ts +++ b/packages/api/src/jobs/score_library_item.ts @@ -1,5 +1,10 @@ -import { findLibraryItemById } from '../services/library_item' +import { SubscriptionType } from '../entity/subscription' +import { + findLibraryItemById, + updateLibraryItem, +} from '../services/library_item' import { Feature, scoreClient } from '../services/score' +import { findSubscriptionsByNames } from '../services/subscriptions' import { enqueueUpdateHomeJob } from '../utils/createTask' import { lanaugeToCode } from '../utils/helpers' import { logger } from '../utils/logger' @@ -31,6 +36,8 @@ export const scoreLibraryItem = async ( 'author', 'itemLanguage', 'wordCount', + 'subscription', + 'publishedAt', ], }) if (!libraryItem) { @@ -38,6 +45,26 @@ export const scoreLibraryItem = async ( return } + let subscription + if (libraryItem.subscription) { + const subscriptions = await findSubscriptionsByNames(userId, [ + libraryItem.subscription, + ]) + + if (subscriptions.length) { + subscription = subscriptions[0] + + if (subscription.type === SubscriptionType.Rss) { + logger.info('Skipping scoring for RSS subscription', { + userId, + libraryItemId, + }) + + return + } + } + } + const itemFeatures = { [libraryItem.id]: { library_item_id: libraryItem.id, @@ -53,7 +80,15 @@ export const scoreLibraryItem = async ( language: lanaugeToCode(libraryItem.itemLanguage || 'English'), word_count: libraryItem.wordCount, published_at: libraryItem.publishedAt, - subscription: libraryItem.subscription, + subscription: subscription?.name, + inbox_folder: libraryItem.folder === 'inbox', + is_feed: subscription?.type === SubscriptionType.Rss, + is_newsletter: subscription?.type === SubscriptionType.Newsletter, + is_subscription: !!subscription, + item_word_count: libraryItem.wordCount, + subscription_auto_add_to_library: subscription?.autoAddToLibrary, + subscription_fetch_content: subscription?.fetchContent, + subscription_count: 0, } as Feature, } @@ -69,15 +104,15 @@ export const scoreLibraryItem = async ( throw new Error('Failed to score library item') } - // await updateLibraryItem( - // libraryItem.id, - // { - // score, - // }, - // userId, - // undefined, - // true - // ) + await updateLibraryItem( + libraryItem.id, + { + score, + }, + userId, + undefined, + true + ) logger.info('Library item scored', data) try {